From 8441ef727a09fed7534db93e89fde572b6ec5ddb Mon Sep 17 00:00:00 2001 From: sunxiaolong Date: Sun, 12 Nov 2023 21:58:38 +0800 Subject: [PATCH] =?UTF-8?q?:tada:=E5=88=9D=E6=AC=A1=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 + .idea/gateway.iml | 9 + .idea/modules.xml | 8 + build.sh | 1 + conf/app.conf | 21 + conf/cfg_model.go | 14 + conf/config.go | 104 + conf/mq_config.go | 17 + conf/pay_way_code.go | 102 + controllers/gateway/base_controller.go | 49 + controllers/gateway/error_controller.go | 23 + controllers/gateway/order_controller.go | 273 + controllers/gateway/payfor_controller.go | 133 + controllers/gateway/payfor_controller_test.go | 74 + controllers/gateway/scan_controller.go | 69 + data/demo.json | 12 + go.mod | 13 + go.sum | 816 ++ main.go | 49 + message/init.go | 44 + message/send_message.go | 33 + models/accounts/account.go | 119 + models/accounts/account_history_info.go | 69 + models/agent/agent_info.go | 162 + models/agent/agent_profit.go | 13 + models/init.go | 62 + models/merchant/merchant_deploy_info.go | 66 + models/merchant/merchant_info.go | 205 + models/merchant/merchant_load_info.go | 56 + models/notify/notify_info.go | 84 + models/order/order_info.go | 235 + models/order/order_profit_info.go | 120 + models/order/order_settle_info.go | 51 + models/order/platform_profit.go | 21 + models/payfor/payfor_info.go | 116 + models/road/road_info.go | 166 + models/road/road_pool_info.go | 127 + models/system/bank_card_info.go | 106 + models/system/menu_info.go | 179 + models/system/power_info.go | 143 + models/system/role_info.go | 123 + models/system/second_menu_info.go | 216 + models/user/user_info.go | 146 + notify/order_notify.go | 170 + notify/payfor_notify.go | 1 + pay_for/payfor_service.go | 370 + pay_for/payfor_solve.go | 135 + query/merchant_query.go | 83 + query/payfor_query.go | 135 + query/supplier_query.go | 119 + response/pay_resp.go | 36 + response/payfor_resp.go | 40 + routers/router.go | 35 + service/base_service.go | 210 + service/pay_service.go | 254 + service/pay_solve.go | 510 ++ service/settle_service.go | 234 + static/css/cashier.css | 238 + static/css/hy_basic.css | 1 + static/css/pay.css | 461 ++ static/img/6666cdhui68nhc7qiqdbhtd0.png | Bin 0 -> 428 bytes static/img/6666cdjds5onhc7krmjr4bt0.png | Bin 0 -> 428 bytes static/img/barcode/joker.png | Bin 0 -> 1331 bytes static/img/beijing_0.jpg | Bin 0 -> 8328 bytes static/img/bnte65ajhrt4kk1g0eug.png | Bin 0 -> 728 bytes static/img/bnte7kajhrt4c417oitg.png | Bin 0 -> 723 bytes static/img/bntelh2jhrt4f66sugu0.png | Bin 0 -> 742 bytes static/img/bnten2qjhrt4f66sugvg.png | Bin 0 -> 729 bytes static/img/cardicon_1559282611.png | Bin 0 -> 74047 bytes static/img/epay.jpg | Bin 0 -> 36547 bytes static/img/gongshang_0.jpg | Bin 0 -> 7068 bytes static/img/guangda_0.jpg | Bin 0 -> 5016 bytes static/img/icon.ico | Bin 0 -> 3272 bytes static/img/jieshe_0.jpg | Bin 0 -> 5594 bytes static/img/jingdong.jpg | Bin 0 -> 7555 bytes static/img/logo_alipay.png | Bin 0 -> 1083 bytes static/img/minsheng_0.jpg | Bin 0 -> 3572 bytes static/img/nongye_0.jpg | Bin 0 -> 5896 bytes static/img/pay-icon.png | Bin 0 -> 5746 bytes static/img/pay-icon_user.png | Bin 0 -> 3019 bytes static/img/pay_fail.png | Bin 0 -> 2232 bytes static/img/pay_ok1.png | Bin 0 -> 2291 bytes static/img/qq.jpg | Bin 0 -> 16211 bytes static/img/qqq.jpg | Bin 0 -> 5642 bytes static/img/shanghai_0.jpg | Bin 0 -> 5953 bytes static/img/site-icons-v10-20150512.png | Bin 0 -> 36136 bytes static/img/timg.jpg | Bin 0 -> 15987 bytes static/img/weixin.jpg | Bin 0 -> 5107 bytes static/img/weixin.png | Bin 0 -> 3982 bytes static/img/yinlian.jpg | Bin 0 -> 6236 bytes static/img/youzheng_0.jpg | Bin 0 -> 5895 bytes static/img/yunshanfu.jpg | Bin 0 -> 22283 bytes static/img/zhifubao.png | Bin 0 -> 6591 bytes static/js/jquery.min.js | 4 + static/js/jquery.ui.min.js | 12 + static/js/reload.min.js | 1 + static/layer/layer.js | 2 + static/layer/mobile/layer.js | 2 + static/layer/mobile/need/layer.css | 1 + static/layer/theme/default/icon-ext.png | Bin 0 -> 5911 bytes static/layer/theme/default/icon.png | Bin 0 -> 11493 bytes static/layer/theme/default/layer.css | 1 + static/layer/theme/default/loading-0.gif | Bin 0 -> 5793 bytes static/layer/theme/default/loading-1.gif | Bin 0 -> 701 bytes static/layer/theme/default/loading-2.gif | Bin 0 -> 1787 bytes static/lib/bootstrap/css/bootstrap-theme.css | 587 ++ .../lib/bootstrap/css/bootstrap-theme.css.map | 1 + .../lib/bootstrap/css/bootstrap-theme.min.css | 6 + .../bootstrap/css/bootstrap-theme.min.css.map | 1 + static/lib/bootstrap/css/bootstrap.css | 6757 +++++++++++++++++ static/lib/bootstrap/css/bootstrap.css.map | 1 + static/lib/bootstrap/css/bootstrap.min.css | 6 + .../lib/bootstrap/css/bootstrap.min.css.map | 1 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes static/lib/bootstrap/js/bootstrap.js | 2377 ++++++ static/lib/bootstrap/js/bootstrap.min.js | 7 + static/lib/bootstrap/js/npm.js | 13 + static/new/febs/css/febs.css | 1 + static/new/febs/css/paycodePay.css | 106 + static/new/febs/font/iconfont.eot | Bin 0 -> 122216 bytes static/new/febs/font/iconfont.svg | 1622 ++++ static/new/febs/font/iconfont.ttf | Bin 0 -> 122048 bytes static/new/febs/font/iconfont.woff | Bin 0 -> 57172 bytes static/new/febs/images/favicon.ico | Bin 0 -> 4286 bytes static/new/febs/images/public/gro.png | Bin 0 -> 55252 bytes static/new/febs/images/public/jx.png | Bin 0 -> 74902 bytes static/new/febs/js/jquery-1.8.2.min.js | 2 + static/new/layui/css/layui.css | 2 + static/new/layui/font/iconfont-v=250.eot | Bin 0 -> 41712 bytes static/new/layui/font/iconfont-v=250.svg | 485 ++ static/new/layui/font/iconfont-v=250.ttf | Bin 0 -> 41536 bytes static/new/layui/font/iconfont-v=250.woff | Bin 0 -> 27256 bytes static/new/layui/font/iconfont-v=250.woff2 | Bin 0 -> 23140 bytes static/new/layui/layui.js | 2 + supplier/supplier_interface.go | 44 + supplier/third_party/daili.go | 206 + supplier/third_party/init.go | 46 + supplier/third_party/kuaifu.go | 384 + supplier/third_party/mf178.go | 384 + supplier/third_party/mf178_v2.go | 386 + supplier/third_party/test_mf178.go | 7 + tests/mf178_test.go | 27 + tests/pay_for_test.go | 43 + tests/pay_test.go | 63 + utils/AES_ECB.go | 131 + utils/bank.go | 47 + utils/date_time.go | 44 + utils/encryption.go | 42 + utils/http.go | 308 + utils/md5.go | 47 + utils/sign_verify.go | 70 + utils/sort_go.go | 39 + views/err/params.html | 21 + views/index.html | 87 + views/pay.html | 271 + views/scan.html | 160 + views/test.html | 161 + 161 files changed, 22795 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/gateway.iml create mode 100644 .idea/modules.xml create mode 100644 build.sh create mode 100644 conf/app.conf create mode 100644 conf/cfg_model.go create mode 100644 conf/config.go create mode 100644 conf/mq_config.go create mode 100644 conf/pay_way_code.go create mode 100644 controllers/gateway/base_controller.go create mode 100644 controllers/gateway/error_controller.go create mode 100644 controllers/gateway/order_controller.go create mode 100644 controllers/gateway/payfor_controller.go create mode 100644 controllers/gateway/payfor_controller_test.go create mode 100644 controllers/gateway/scan_controller.go create mode 100644 data/demo.json create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 message/init.go create mode 100644 message/send_message.go create mode 100644 models/accounts/account.go create mode 100644 models/accounts/account_history_info.go create mode 100644 models/agent/agent_info.go create mode 100644 models/agent/agent_profit.go create mode 100644 models/init.go create mode 100644 models/merchant/merchant_deploy_info.go create mode 100644 models/merchant/merchant_info.go create mode 100644 models/merchant/merchant_load_info.go create mode 100644 models/notify/notify_info.go create mode 100644 models/order/order_info.go create mode 100644 models/order/order_profit_info.go create mode 100644 models/order/order_settle_info.go create mode 100644 models/order/platform_profit.go create mode 100644 models/payfor/payfor_info.go create mode 100644 models/road/road_info.go create mode 100644 models/road/road_pool_info.go create mode 100644 models/system/bank_card_info.go create mode 100644 models/system/menu_info.go create mode 100644 models/system/power_info.go create mode 100644 models/system/role_info.go create mode 100644 models/system/second_menu_info.go create mode 100644 models/user/user_info.go create mode 100644 notify/order_notify.go create mode 100644 notify/payfor_notify.go create mode 100644 pay_for/payfor_service.go create mode 100644 pay_for/payfor_solve.go create mode 100644 query/merchant_query.go create mode 100644 query/payfor_query.go create mode 100644 query/supplier_query.go create mode 100644 response/pay_resp.go create mode 100644 response/payfor_resp.go create mode 100644 routers/router.go create mode 100644 service/base_service.go create mode 100644 service/pay_service.go create mode 100644 service/pay_solve.go create mode 100644 service/settle_service.go create mode 100644 static/css/cashier.css create mode 100644 static/css/hy_basic.css create mode 100644 static/css/pay.css create mode 100644 static/img/6666cdhui68nhc7qiqdbhtd0.png create mode 100644 static/img/6666cdjds5onhc7krmjr4bt0.png create mode 100644 static/img/barcode/joker.png create mode 100644 static/img/beijing_0.jpg create mode 100644 static/img/bnte65ajhrt4kk1g0eug.png create mode 100644 static/img/bnte7kajhrt4c417oitg.png create mode 100644 static/img/bntelh2jhrt4f66sugu0.png create mode 100644 static/img/bnten2qjhrt4f66sugvg.png create mode 100644 static/img/cardicon_1559282611.png create mode 100644 static/img/epay.jpg create mode 100644 static/img/gongshang_0.jpg create mode 100644 static/img/guangda_0.jpg create mode 100644 static/img/icon.ico create mode 100644 static/img/jieshe_0.jpg create mode 100644 static/img/jingdong.jpg create mode 100644 static/img/logo_alipay.png create mode 100644 static/img/minsheng_0.jpg create mode 100644 static/img/nongye_0.jpg create mode 100644 static/img/pay-icon.png create mode 100644 static/img/pay-icon_user.png create mode 100644 static/img/pay_fail.png create mode 100644 static/img/pay_ok1.png create mode 100644 static/img/qq.jpg create mode 100644 static/img/qqq.jpg create mode 100644 static/img/shanghai_0.jpg create mode 100644 static/img/site-icons-v10-20150512.png create mode 100644 static/img/timg.jpg create mode 100644 static/img/weixin.jpg create mode 100644 static/img/weixin.png create mode 100644 static/img/yinlian.jpg create mode 100644 static/img/youzheng_0.jpg create mode 100644 static/img/yunshanfu.jpg create mode 100644 static/img/zhifubao.png create mode 100644 static/js/jquery.min.js create mode 100644 static/js/jquery.ui.min.js create mode 100644 static/js/reload.min.js create mode 100644 static/layer/layer.js create mode 100644 static/layer/mobile/layer.js create mode 100644 static/layer/mobile/need/layer.css create mode 100644 static/layer/theme/default/icon-ext.png create mode 100644 static/layer/theme/default/icon.png create mode 100644 static/layer/theme/default/layer.css create mode 100644 static/layer/theme/default/loading-0.gif create mode 100644 static/layer/theme/default/loading-1.gif create mode 100644 static/layer/theme/default/loading-2.gif create mode 100644 static/lib/bootstrap/css/bootstrap-theme.css create mode 100644 static/lib/bootstrap/css/bootstrap-theme.css.map create mode 100644 static/lib/bootstrap/css/bootstrap-theme.min.css create mode 100644 static/lib/bootstrap/css/bootstrap-theme.min.css.map create mode 100644 static/lib/bootstrap/css/bootstrap.css create mode 100644 static/lib/bootstrap/css/bootstrap.css.map create mode 100644 static/lib/bootstrap/css/bootstrap.min.css create mode 100644 static/lib/bootstrap/css/bootstrap.min.css.map create mode 100644 static/lib/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 static/lib/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 static/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 static/lib/bootstrap/js/bootstrap.js create mode 100644 static/lib/bootstrap/js/bootstrap.min.js create mode 100644 static/lib/bootstrap/js/npm.js create mode 100644 static/new/febs/css/febs.css create mode 100644 static/new/febs/css/paycodePay.css create mode 100644 static/new/febs/font/iconfont.eot create mode 100644 static/new/febs/font/iconfont.svg create mode 100644 static/new/febs/font/iconfont.ttf create mode 100644 static/new/febs/font/iconfont.woff create mode 100644 static/new/febs/images/favicon.ico create mode 100644 static/new/febs/images/public/gro.png create mode 100644 static/new/febs/images/public/jx.png create mode 100644 static/new/febs/js/jquery-1.8.2.min.js create mode 100644 static/new/layui/css/layui.css create mode 100644 static/new/layui/font/iconfont-v=250.eot create mode 100644 static/new/layui/font/iconfont-v=250.svg create mode 100644 static/new/layui/font/iconfont-v=250.ttf create mode 100644 static/new/layui/font/iconfont-v=250.woff create mode 100644 static/new/layui/font/iconfont-v=250.woff2 create mode 100644 static/new/layui/layui.js create mode 100644 supplier/supplier_interface.go create mode 100644 supplier/third_party/daili.go create mode 100644 supplier/third_party/init.go create mode 100644 supplier/third_party/kuaifu.go create mode 100644 supplier/third_party/mf178.go create mode 100644 supplier/third_party/mf178_v2.go create mode 100644 supplier/third_party/test_mf178.go create mode 100644 tests/mf178_test.go create mode 100644 tests/pay_for_test.go create mode 100644 tests/pay_test.go create mode 100644 utils/AES_ECB.go create mode 100644 utils/bank.go create mode 100644 utils/date_time.go create mode 100644 utils/encryption.go create mode 100644 utils/http.go create mode 100644 utils/md5.go create mode 100644 utils/sign_verify.go create mode 100644 utils/sort_go.go create mode 100644 views/err/params.html create mode 100644 views/index.html create mode 100644 views/pay.html create mode 100644 views/scan.html create mode 100644 views/test.html diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/gateway.iml b/.idea/gateway.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/gateway.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..5e1fb45 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..15bda3b --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go diff --git a/conf/app.conf b/conf/app.conf new file mode 100644 index 0000000..a6545fb --- /dev/null +++ b/conf/app.conf @@ -0,0 +1,21 @@ +appname = jhgateway +HTTPAddr = localhost +httpport = 12309 +RemoteAddr = localhost +RemotePort = 12309 +runmode = dev +HTTPAddr = localhost +sessionon = true + +[mysql] +dbhost = localhost +dbport = 3306 +dbuser = root +dbpasswd = 123456 +dbbase = juhe_pay + +[mf] +; 提交卡密接口 +submit_card_url = http://test.shop.center.mf178.cn/userapi/card/submit_card +; url = https://shop.task.mf178.cn/userapi/card/submit_card +query_card_url = http://test.shop.center.mf178.cn/userapi/card/order_info \ No newline at end of file diff --git a/conf/cfg_model.go b/conf/cfg_model.go new file mode 100644 index 0000000..8140e01 --- /dev/null +++ b/conf/cfg_model.go @@ -0,0 +1,14 @@ +package conf + +import "github.com/beego/beego/v2/server/web" + +type Config struct { +} + +func (c *Config) GetMFCardSubmitUrl() (string, error) { + return web.AppConfig.String("mf::submit_card_url") +} + +func (c *Config) GetMFCardQueryUrl() (string, error) { + return web.AppConfig.String("mf::query_card_url") +} diff --git a/conf/config.go b/conf/config.go new file mode 100644 index 0000000..57e109b --- /dev/null +++ b/conf/config.go @@ -0,0 +1,104 @@ +package conf + +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/26 15:30 + ** @Author : yuebin + ** @File : conf_pro + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/26 15:30 + ** @Software: GoLand +****************************************************/ +const ( + ACTIVE = "active" + UNACTIVE = "unactive" + DELETE = "delete" + REFUND = "refund" + ORDERROLL = "order_roll" + WAIT = "wait" + SUCCESS = "success" + FAIL = "fail" + YES = "yes" + NO = "no" + ZERO = 0.0 //0元手续费 + VERIFY_CODE_LEN = 4 //验证码的长度 + PAYFOR_FEE = 2.00 //代付手续费 + PAYFOR_INTERVAL = 5 //每过5分钟执行一次代付 + + PLUS_AMOUNT = "plus_amount" //加款操作 + SUB_AMOUNT = "sub_amount" //减款操作 + FREEZE_AMOUNT = "freeze_amount" //冻结操作 + UNFREEZE_AMOUNT = "unfreeze_amount" //解冻操作 + + PAYFOR_COMFRIM = "payfor_confirm" //下发带审核 + PAYFOR_SOLVING = "payfor_solving" //发下处理中 + PAYFOR_HANDING = "payfor_handing" //手动打款中 + PAYFOR_BANKING = "payfor_banking" //银行处理中 + PAYFOR_FAIL = "payfor_fail" //代付失败 + PAYFOR_SUCCESS = "payfor_success" //代付成功 + + PAYFOR_ROAD = "payfor_road" //通道打款 + PAYFOR_HAND = "payfor_hand" //手动打款 + PAYFOR_REFUSE = "payfor_refuse" // 拒绝打款 + + SELF_API = "self_api" //自助api系统下发 + SELF_MERCHANT = "self_merchant" //管理手动处理商户下发 + SELF_HELP = "self_help" //管理自己提现 + + PUBLIC = "public" //对公卡 + PRIVATE = "private" //对私卡 +) + +const ( + ICBC = "ICBC" + ABC = "ABC" + BOC = "BOC" + CCB = "CCB" + BOCOM = "BOCOM" + CNCB = "CNCB" + CEB = "CEB" + HXB = "HXB" + CMBC = "CMBC" + GDB = "GDB" + CMB = "CMB" + CIB = "CIB" + SPDB = "SPDB" + PSBC = "PSBC" + PAB = "PAB" + NJCB = "NJCB" + NBCB = "NBCB" + WZCB = "WZCB" + CSCB = "CSCB" + CZCB = "CZCB" + CCQTGB = "CCQTGB" + SHRCB = "SHRCB" + BJRCB = "BJRCB" + SDB = "SDB" +) + +var bankInfo = map[string]string{ + ICBC: "中国工商银行", + ABC: "中国农业银行", + BOC: "中国银行", + CCB: "中国建设银行", + BOCOM: "交通银行", + CNCB: "中信银行", + CEB: "中国光大银行", + HXB: "华夏银行", + CMBC: "中国民生银行", + GDB: "广发银行", + CMB: "招商银行", + CIB: "兴业银行", + SPDB: "浦发银行", + PSBC: "中国邮政储蓄银行", + PAB: "平安银行", + NJCB: "南京银行", + NBCB: "宁波银行", + WZCB: "温州市商业银行", + CSCB: "长沙银行", + CZCB: "浙江稠州商业银行", + CCQTGB: "重庆三峡银行", + SHRCB: "上海农村商业银行", + BJRCB: "北京农商行", + SDB: "深圳发展银行", +} diff --git a/conf/mq_config.go b/conf/mq_config.go new file mode 100644 index 0000000..a1dfb3d --- /dev/null +++ b/conf/mq_config.go @@ -0,0 +1,17 @@ +// Package conf /*************************************************** +package conf + +import "net" + +const ( + mqHost = "127.0.0.1" + mqPort = "61613" + + MqOrderQuery = "order_query" + MQ_PAYFOR_QUERY = "payfor_query" //代付 + MqOrderNotify = "order_notify" //订单通知 +) + +func GetMQAddress() string { + return net.JoinHostPort(mqHost, mqPort) +} diff --git a/conf/pay_way_code.go b/conf/pay_way_code.go new file mode 100644 index 0000000..01d7f35 --- /dev/null +++ b/conf/pay_way_code.go @@ -0,0 +1,102 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/29 15:01 + ** @Author : yuebin + ** @File : pay_way_code + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/29 15:01 + ** @Software: GoLand +****************************************************/ +package conf + +var ScanPayWayCodes = []string{ + "WEIXIN_SCAN", + "UNION_SCAN", + "ALI_SCAN", + "BAIDU_SCAN", + "JD_SCAN", + "QQ_SCAN", + "CARD_DH", +} + +var H5PayWayCodes = []string{ + "WEIXIN_H5", + "ALI_H5", + "QQ_H5", + "UNION_H5", + "BAIDU_H5", + "JD_H5", +} + +var SytPayWayCodes = []string{ + "WEIXIN_SYT", + "ALI_SYT", + "QQ_SYT", + "UNION_SYT", + "BAIDU_SYT", + "JD_SYT", +} + +var FastPayWayCodes = []string{ + "UNION-FAST", +} + +var WebPayWayCode = []string{ + "UNION-WAP", +} + +func GetScanPayWayCodes() []string { + return ScanPayWayCodes +} + +func GetNameByPayWayCode(code string) string { + switch code { + case "WEIXIN_SCAN": + return "微信扫码" + case "UNION_SCAN": + return "银联扫码" + case "ALI_SCAN": + return "支付宝扫码" + case "BAIDU_SCAN": + return "百度扫码" + case "JD_SCAN": + return "京东扫码" + case "QQ_SCAN": + return "QQ扫码" + + case "WEIXIN_H5": + return "微信H5" + case "UNION_H5": + return "银联H5" + case "ALI_H5": + return "支付宝H5" + case "BAIDU_H5": + return "百度H5" + case "JD_H5": + return "京东H5" + case "QQ_H5": + return "QQ-H5" + + case "WEIXIN_SYT": + return "微信收银台" + case "UNION_SYT": + return "银联收银台" + case "ALI_SYT": + return "支付宝收银台" + case "BAIDU_SYT": + return "百度收银台" + case "JD_SYT": + return "京东收银台" + case "QQ_SYT": + return "QQ-收银台" + + case "UNION_FAST": + return "银联快捷" + case "UNION_WAP": + return "银联web" + case "CARD_DH": + return "卡密兑换" + default: + return "未知" + } +} diff --git a/controllers/gateway/base_controller.go b/controllers/gateway/base_controller.go new file mode 100644 index 0000000..5740c87 --- /dev/null +++ b/controllers/gateway/base_controller.go @@ -0,0 +1,49 @@ +package gateway + +/*************************************************** + ** @Desc : 处理下游请求的一些公用的逻辑 + ** @Time : 2019/10/28 18:09 + ** @Author : yuebin + ** @File : base_gateway + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/28 18:09 + ** @Software: GoLand +****************************************************/ +import ( + "gateway/response" + "gateway/service" + "github.com/beego/beego/v2/server/web" + "strings" +) + +type BaseGateway struct { + web.Controller +} + +// PayPrepare 获取商户请求过来的基本参数参数 +func (c *BaseGateway) PayPrepare() *response.PayBaseResp { + params := make(map[string]string) + //获取客户端的ip + clientIP := c.Ctx.Input.IP() + params["exValue"] = strings.TrimSpace(c.GetString("exValue")) + params["orderNo"] = strings.TrimSpace(c.GetString("orderNo")) + params["productName"] = strings.TrimSpace(c.GetString("productName")) + params["orderPeriod"] = strings.TrimSpace(c.GetString("orderPeriod")) + params["orderPrice"] = strings.TrimSpace(c.GetString("orderPrice")) + params["payWayCode"] = strings.TrimSpace(c.GetString("payWayCode")) + params["osType"] = strings.TrimSpace(c.GetString("osType")) + params["notifyUrl"] = strings.TrimSpace(c.GetString("notifyUrl")) + //c.Params["returnUrl"] = strings.TrimSpace(c.GetString("returnUrl")) + params["payKey"] = strings.TrimSpace(c.GetString("payKey")) + params["sign"] = strings.TrimSpace(c.GetString("sign")) + + p := service.GetMerchantInfo(params) + p.ClientIP = clientIP + p = service.JudgeParams(p) + + if p.Code != -1 { + p.Code = 200 + } + + return p +} diff --git a/controllers/gateway/error_controller.go b/controllers/gateway/error_controller.go new file mode 100644 index 0000000..60e9cd4 --- /dev/null +++ b/controllers/gateway/error_controller.go @@ -0,0 +1,23 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/26 16:56 + ** @Author : yuebin + ** @File : error_gateway + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/26 16:56 + ** @Software: GoLand +****************************************************/ +package gateway + +import ( + "github.com/beego/beego/v2/server/web" +) + +type ErrorGatewayController struct { + web.Controller +} + +func (c *ErrorGatewayController) ErrorParams() { + web.ReadFromRequest(&c.Controller) + c.TplName = "err/params.html" +} diff --git a/controllers/gateway/order_controller.go b/controllers/gateway/order_controller.go new file mode 100644 index 0000000..30b98e7 --- /dev/null +++ b/controllers/gateway/order_controller.go @@ -0,0 +1,273 @@ +package gateway + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "gateway/conf" + "gateway/models/order" + "gateway/query" + "gateway/service" + "gateway/supplier/third_party" + "gateway/utils" + "github.com/astaxie/beego/logs" + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/server/web" + "strings" +) + +type OrderController struct { + web.Controller +} + +func (c *OrderController) ShowErr(string2 string) { + web.ReadFromRequest(&c.Controller) + c.Data["flash"] = map[string]string{"error": string2} + c.TplName = "err/params.html" +} + +type JsonResponse struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data interface{} `json:"data"` +} + +// CardSuit 卡片提交 +func (c *OrderController) CardSuit() { + params := make(map[string]string) + params["orderNo"] = strings.TrimSpace(c.GetString("orderid")) + params["exValue"] = strings.TrimSpace(c.GetString("card")) + orderInfo := order.GetOrderByMerchantOrderId(params["orderNo"]) + if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 { + jsonResponse := JsonResponse{ + Code: 0, + Msg: "订单已被处理或者不存在。", + } + c.Data["json"] = &jsonResponse + c.ServeJSON() + return + } + if orderInfo.ExValue != "" { + jsonResponse := JsonResponse{ + Code: 0, + Msg: "你已提交过卡密信息,无需重复提交。", + } + c.Data["json"] = &jsonResponse + c.ServeJSON() + return + } + + if orderInfo.Status != "wait" { + logs.Error("阿达达,订单号=", orderInfo.BankOrderId) + return + } + o := orm.NewOrm() + + err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + if orderInfo.Status != "wait" { + logs.Error("是否收到,订单号=", orderInfo.BankOrderId) + return errors.New(fmt.Sprintf("该订单已经处理,订单号= %s", orderInfo.BankOrderId)) + } + + //{"card_type":"171","data":"111111","face_type":"10","recovery_type":"2"} + cdata := third_party.CardInfo{ + CardType: "171", + FaceType: fmt.Sprintf("%f", orderInfo.OrderAmount), + RecoveryType: "2", + Data: params["exValue"], + } + marshal, err := json.Marshal(cdata) + if err != nil { + return err + } + + orderInfo.ExValue = string(marshal) + orderInfo.CardData = params["exValue"] + orderInfo.UpdateTime = utils.GetBasicDateTime() + if _, err := txOrm.Update(&orderInfo); err != nil || orderInfo.BankOrderId == "" { + logs.Error(fmt.Sprintf("solve pay success, update order info fail: %s, bankOrderId = %s", err, orderInfo.BankOrderId)) + return err + } + return nil + }) + if err == nil { + params["MerchantUid"] = orderInfo.MerchantUid + params["payWayCode"] = orderInfo.PayTypeCode + + p := service.GetMerchantInfoByUID(params) + if p.Code == -1 { + jsonResponse := JsonResponse{ + Code: 0, + Msg: p.Msg, + } + c.Data["json"] = &jsonResponse + c.ServeJSON() + return + } + p.OrderAmount = orderInfo.OrderAmount + //选择通道 + p = service.ChooseRoad(p) + if p.Code == -1 { + jsonResponse := JsonResponse{ + Code: 0, + Msg: p.Msg, + } + c.Data["json"] = &jsonResponse + c.ServeJSON() + return + } + supplierCode := "MF178" + supplier := third_party.GetPaySupplierByCode(supplierCode) + sdata := supplier.Syt(orderInfo, p.RoadInfo, p.MerchantInfo) + if sdata.Status == "-1" { + jsonResponse := JsonResponse{ + Code: 0, + Msg: sdata.Msg, + } + + c.Data["json"] = &jsonResponse + c.ServeJSON() + return + } + jsonResponse := JsonResponse{ + Code: 1, + Msg: "提交成功,系统核对成功后,将返回原系统处理。", + } + + c.Data["json"] = &jsonResponse + c.ServeJSON() + } else { + jsonResponse := JsonResponse{ + Code: 0, + Msg: err.Error(), + } + c.Data["json"] = &jsonResponse + c.ServeJSON() + } +} + +// OrderCreate 订单创建 +func (c *OrderController) OrderCreate() { + //客户传递过来对参数 订单ID 支付类型 卡类型 卡面值 + //判断订单是否存在 是否关闭 是否支付成功 + //c.Data["flash"] = map[string]string{"error": string2} + + params := make(map[string]string) + //获取客户端的ip + //clientIp := c.Ctx.Input.IP() + params["payWayCode"] = strings.TrimSpace(c.GetString("paycode")) + params["orderPrice"] = strings.TrimSpace(c.GetString("price")) + params["orderNo"] = strings.TrimSpace(c.GetString("orderid")) + params["notifyUrl"] = strings.TrimSpace(c.GetString("notifyurl")) + params["returnUrl"] = strings.TrimSpace(c.GetString("returnurl")) + + params["orderPeriod"] = "1" //订单有效时间 + params["PayTypeCode"] = "CARD_DH" //类型 + //商户ID + params["payKey"] = strings.TrimSpace(c.GetString("paykey")) + + if params["payWayCode"] == "" || params["orderPrice"] == "" || params["orderNo"] == "" { + c.ShowErr("参数有误,请检查再试试。") + return + } + + p := service.GetMerchantInfo(params) + if p.Code == -1 { + c.ShowErr(p.Msg) + return + } + p.PayWayCode = params["payWayCode"] + p = service.OrderPriceIsValid(p) + if p.Code == -1 { + c.ShowErr(p.Msg) + return + } + + orderInfo := order.GetOrderByMerchantOrderId(params["orderNo"]) + p = service.ChooseRoad(p) + if p.Code == -1 { + c.ShowErr(p.Msg) + return + } + if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 { + //生成订单记录 + orderInfo, _ = service.GenerateRecord(p) + if p.Code == -1 { + c.ShowErr(p.Msg) + return + } + } + + c.Data["Status"] = orderInfo.Status + c.Data["orderNo"] = params["orderNo"] + c.Data["price"] = params["orderPrice"] + c.TplName = "scan.html" + if orderInfo.Status == conf.WAIT { + c.Data["qrCode"] = "../static/new/febs/images/public/jx.png" + } else if orderInfo.Status == conf.SUCCESS || orderInfo.Status == conf.FAIL { + if orderInfo.Status == conf.SUCCESS { + c.Data["price"] = orderInfo.FactAmount + } + c.Data["UpdateTime"] = orderInfo.UpdateTime + } + +} + +func (c *OrderController) OrderQuery() { + bankOrderId := c.GetString("bankOrderId") + logs.Debug(fmt.Sprintf("获取到boss后台的银行id = %s", bankOrderId)) + + qy := query.SupplierOrderQueryResult(bankOrderId) + + if qy { + c.Ctx.WriteString("success") + } else { + c.Ctx.WriteString("fail") + } + c.StopRun() +} + +func (c *OrderController) OrderUpdate() { + bankOrderId := c.GetString("bankOrderId") + solveType := c.GetString("solveType") + + orderInfo := order.GetOrderByBankOrderId(bankOrderId) + + orderInfo.Operator = c.GetString("operator") + + flag := false + if orderInfo.BankOrderId == "" { + logs.Error("该订单不存在,bankOrderId=", bankOrderId) + } else { + switch solveType { + case conf.SUCCESS: + flag = service.SolvePaySuccess(bankOrderId, orderInfo.FactAmount, orderInfo.BankTransId) + case conf.FAIL: + flag = service.SolvePayFail(bankOrderId, orderInfo.BankTransId) + case conf.FREEZE_AMOUNT: + //将这笔订单进行冻结 + flag = service.SolveOrderFreeze(bankOrderId) + case conf.UNFREEZE_AMOUNT: + //将这笔订单金额解冻 + flag = service.SolveOrderUnfreeze(bankOrderId) + case conf.REFUND: + if orderInfo.Status == conf.SUCCESS { + flag = service.SolveRefund(bankOrderId) + } + case conf.ORDERROLL: + if orderInfo.Status == conf.SUCCESS { + flag = service.SolveOrderRoll(bankOrderId) + } + default: + logs.Error("不存在这样的处理类型") + } + if flag { + c.Ctx.WriteString(conf.SUCCESS) + } else { + c.Ctx.WriteString(conf.FAIL) + } + } + + c.StopRun() +} diff --git a/controllers/gateway/payfor_controller.go b/controllers/gateway/payfor_controller.go new file mode 100644 index 0000000..a9f934d --- /dev/null +++ b/controllers/gateway/payfor_controller.go @@ -0,0 +1,133 @@ +package gateway + +/*************************************************** + ** @Desc : 代付、下发金额处理逻辑 + ** @Time : 2019/12/5 14:05 + ** @Author : yuebin + ** @File : payfor_gateway + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/12/5 14:05 + ** @Software: GoLand +****************************************************/ +import ( + "fmt" + "gateway/conf" + "gateway/models/payfor" + "gateway/models/road" + "gateway/pay_for" + "gateway/response" + "gateway/supplier/third_party" + "github.com/astaxie/beego/logs" + "github.com/beego/beego/v2/server/web" + "strings" +) + +type PayForGateway struct { + web.Controller +} + +// PayFor 接受下游商户的代付请求 +func (c *PayForGateway) PayFor() { + params := make(map[string]string) + params["merchantKey"] = strings.TrimSpace(c.GetString("merchantKey")) + params["realname"] = strings.TrimSpace(c.GetString("realname")) + params["cardNo"] = strings.TrimSpace(c.GetString("cardNo")) + //params["bankCode"] = strings.TrimSpace(c.GetString("bankCode")) + params["accType"] = strings.TrimSpace(c.GetString("accType")) + //params["province"] = strings.TrimSpace(c.GetString("province")) + //params["city"] = strings.TrimSpace(c.GetString("city")) + //params["bankAccountAddress"] = strings.TrimSpace(c.GetString("bankAccountAddress")) + params["amount"] = strings.TrimSpace(c.GetString("amount")) + //params["mobileNo"] = strings.TrimSpace(c.GetString("mobileNo")) + params["merchantOrderId"] = strings.TrimSpace(c.GetString("merchantOrderId")) + params["sign"] = strings.TrimSpace(c.GetString("sign")) + + payForResponse := new(response.PayForResponse) + res, msg := checkParams(params) + if !res { + payForResponse.ResultCode = "01" + payForResponse.ResultMsg = msg + } else { + + payForResponse = pay_for.AutoPayFor(params, conf.SELF_API) + } + + c.Data["json"] = payForResponse + _ = c.ServeJSON() + +} + +// PayForQuery 代付结果查询, +func (c *PayForGateway) PayForQuery() { + params := make(map[string]string) + params["merchantKey"] = strings.TrimSpace(c.GetString("merchantKey")) + params["timestamp"] = strings.TrimSpace(c.GetString("timestamp")) + params["merchantOrderId"] = strings.TrimSpace(c.GetString("merchantOrderId")) + params["sign"] = strings.TrimSpace(c.GetString("sign")) + + c.Data["json"] = pay_for.PayForResultQuery(params) + _ = c.ServeJSON() +} + +// QuerySupplierPayForResult 查询上游的代付结果 +func (c *PayForGateway) QuerySupplierPayForResult() { + bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) + p := payfor.GetPayForByBankOrderId(bankOrderId) + if p.RoadUid == "" { + c.Ctx.WriteString("fail") + } else { + roadInfo := road.GetRoadInfoByRoadUid(p.RoadUid) + supplierCode := roadInfo.ProductUid + supplier := third_party.GetPaySupplierByCode(supplierCode) + res := supplier.PayFor(p) + logs.Debug("代付查询结果:", res) + c.Ctx.WriteString("success") + } +} + +// SolvePayForResult 接收boss发送过来的代付手动处理结果 +func (c *PayForGateway) SolvePayForResult() { + resultType := strings.TrimSpace(c.GetString("resultType")) + bankOrderId := strings.TrimSpace(c.GetString("bankOrderId")) + + p := payfor.GetPayForByBankOrderId(bankOrderId) + if p.BankOrderId == "" { + c.Ctx.WriteString(conf.FAIL) + } + + if resultType == conf.PAYFOR_FAIL { + pay_for.PayForFail(p) + } else if resultType == conf.PAYFOR_SUCCESS { + pay_for.PayForSuccess(p) + } + + c.Ctx.WriteString(conf.SUCCESS) +} + +// Balance 商户查找余额 +func (c *PayForGateway) Balance() { + params := make(map[string]string) + params["merchantKey"] = strings.TrimSpace(c.GetString("merchantKey")) + params["timestamp"] = strings.TrimSpace(c.GetString("timestamp")) + params["sign"] = strings.TrimSpace(c.GetString("sign")) + + balanceResponse := new(response.BalanceResponse) + res, msg := checkParams(params) + if !res { + balanceResponse.ResultCode = "-1" + balanceResponse.ResultMsg = msg + c.Data["json"] = balanceResponse + } else { + c.Data["json"] = pay_for.BalanceQuery(params) + } + _ = c.ServeJSON() +} + +func checkParams(params map[string]string) (bool, string) { + for k, v := range params { + if v == "" || len(v) == 0 { + return false, fmt.Sprintf("字段: %s 为必填!", k) + } + } + return true, "" +} diff --git a/controllers/gateway/payfor_controller_test.go b/controllers/gateway/payfor_controller_test.go new file mode 100644 index 0000000..92e2916 --- /dev/null +++ b/controllers/gateway/payfor_controller_test.go @@ -0,0 +1,74 @@ +package gateway + +import ( + "encoding/json" + "fmt" + "gateway/utils" + "io/ioutil" + "log" + "math/rand" + "net/http" + "testing" + "time" +) + +func TestPayFor(t *testing.T) { + u := "http://127.0.0.1:12309/gateway/payfor" + m := make(map[string]string) + m["merchantKey"] = "kkkkc254gk8isf001cqrj6p0" + m["realname"] = "11" + m["cardNo"] = "123" + m["accType"] = "private" + m["amount"] = "0.1" + merchantOrderId := GenerateOrderNo() + m["merchantOrderId"] = merchantOrderId + sec := "ssssc254gk8isf001cqrj6pg" + keys := utils.SortMap(m) + sign := utils.GetMD5Sign(m, keys, sec) + m["sign"] = sign + + m1 := make(map[string]interface{}) + marshal, _ := json.Marshal(m) + json.Unmarshal(marshal, &m1) + req := new(utils.Request) + req.SetParams(m1) + req.SetURL(u) + resp, err := req.GET() + if err != nil { + t.Fatal("err------>", err.Error()) + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + b, _ := ioutil.ReadAll(resp.Body) + + t.Fatal("返回的http状态码不是200,body:", string(b)) + } + b, _ := ioutil.ReadAll(resp.Body) + log.Println("result--------->", string(b)) + /** + result---------> { + "resultCode": "00", + "resultMsg": "银行处理中", + "settAmount": "0.1" + } + */ +} + +func GetTimeTick64() int64 { + return time.Now().UnixNano() / 1e6 +} + +func GetFormatTime(time time.Time) string { + return time.Format("20060102") +} + +// 基础做法 日期20191025时间戳1571987125435+3位随机数 +func GenerateOrderNo() string { + date := GetFormatTime(time.Now()) + r := rand.Intn(1000) + code := fmt.Sprintf("%s%d%03d", date, GetTimeTick64(), r) + return code +} +func TestGenerateCode(t *testing.T) { + GenerateOrderNo() +} diff --git a/controllers/gateway/scan_controller.go b/controllers/gateway/scan_controller.go new file mode 100644 index 0000000..a14cf8c --- /dev/null +++ b/controllers/gateway/scan_controller.go @@ -0,0 +1,69 @@ +// Package gateway / +package gateway + +import ( + "gateway/response" + "gateway/service" + "gateway/supplier/third_party" + "gateway/utils" + "strings" +) + +type ScanController struct { + BaseGateway +} + +// SolveFailJSON 处理错误的返回 +func (c *ScanController) SolveFailJSON(p *response.PayBaseResp) { + scanFailJSON := new(response.ScanFailData) + scanFailJSON.StatusCode = "01" + scanFailJSON.PayKey = p.Params["payKey"] + scanFailJSON.Msg = p.Msg + c.Data["json"] = scanFailJSON + _ = c.ServeJSON() + c.StopRun() +} + +// Scan 处理扫码的请求 +func (c *ScanController) Scan() { + p := c.PayPrepare() + if p.Code == -1 { + c.SolveFailJSON(p) + } + + // 签名验证 + p.Params["returnUrl"] = strings.TrimSpace(c.GetString("returnUrl")) + paySecret := p.MerchantInfo.MerchantSecret + + if !utils.Md5Verify(p.Params, paySecret) { + p.Code = -1 + p.Msg = "签名异常" + c.SolveFailJSON(p) + } + + //选择通道 + p = service.ChooseRoad(p) + + if p.Code == -1 { + c.SolveFailJSON(p) + } + + //生成订单记录 + orderInfo, _ := service.GenerateRecord(p) + if p.Code == -1 { + c.SolveFailJSON(p) + } + + //获取到对应的上游 + supplierCode := p.RoadInfo.ProductUid + supplier := third_party.GetPaySupplierByCode(supplierCode) + scanData := supplier.Scan(orderInfo, p.RoadInfo, p.MerchantInfo) + if scanData.Status == "00" { + scanSuccessData := service.GenerateSuccessData(scanData, p) + c.Data["json"] = scanSuccessData + _ = c.ServeJSON() + } else { + p.Msg = scanData.Msg + c.SolveFailJSON(p) + } +} diff --git a/data/demo.json b/data/demo.json new file mode 100644 index 0000000..a8c11f4 --- /dev/null +++ b/data/demo.json @@ -0,0 +1,12 @@ +{ + "data": { + "order_id": 22122801000268, + "card_no": "2326990900087836031", + "card_pwd": "249132", + "status": 3, + "rsp_info": "", + "face_val": 100, + "amount": 0, + "discount": "950.00" + } +} \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..e712bb8 --- /dev/null +++ b/go.mod @@ -0,0 +1,13 @@ +module gateway + +go 1.13 + +require github.com/beego/beego/v2 v2.0.3 + +require ( + github.com/astaxie/beego v1.12.3 + github.com/go-sql-driver/mysql v1.6.0 + github.com/go-stomp/stomp v2.1.4+incompatible + github.com/rs/xid v1.3.0 + github.com/widuu/gojson v0.0.0-20170212122013-7da9d2cd949b +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..791695d --- /dev/null +++ b/go.sum @@ -0,0 +1,816 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= +github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/astaxie/beego v1.12.3 h1:SAQkdD2ePye+v8Gn1r4X6IKZM1wd28EyUOVQ3PDSOOQ= +github.com/astaxie/beego v1.12.3/go.mod h1:p3qIm0Ryx7zeBHLljmd7omloyca1s4yu1a8kM1FkpIA= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/beego/beego/v2 v2.0.3 h1:vLrjDsn3JcxvIUqduDs4i0BdWuu5v7YN2FRKQcTWIDI= +github.com/beego/beego/v2 v2.0.3/go.mod h1:svcOCy6uDaGYHwcO3nppzKwFigeXm8WHkZfgnvemYNM= +github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ= +github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= +github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= +github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE= +github.com/casbin/casbin v1.9.1/go.mod h1:z8uPsfBJGUsnkagrt3G8QvjgTKFMBJ32UP8HpZllfog= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/couchbase/go-couchbase v0.0.0-20200519150804-63f3cdb75e0d/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U= +github.com/couchbase/go-couchbase v0.1.0/go.mod h1:+/bddYDxXsf9qt0xpDUtRR47A2GjaXmGGAqQ/k3GJ8A= +github.com/couchbase/gomemcached v0.0.0-20200526233749-ec430f949808/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c= +github.com/couchbase/gomemcached v0.1.3/go.mod h1:mxliKQxOv84gQ0bJWbI+w9Wxdpt9HjDvgW9MjCym5Vo= +github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= +github.com/couchbase/goutils v0.1.0/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= +github.com/elastic/go-elasticsearch/v6 v6.8.10/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= +github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= +github.com/elazarl/go-bindata-assetfs v1.0.1 h1:m0kkaHRKEu7tUIUFVwhGGGYClXvyl4RE03qmvRTNfbw= +github.com/elazarl/go-bindata-assetfs v1.0.1/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stomp/stomp v2.1.4+incompatible h1:D3SheUVDOz9RsjVWkoh/1iCOwD0qWjyeTZMUZ0EXg2Y= +github.com/go-stomp/stomp v2.1.4+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.5 h1:J+gdV2cUmX7ZqL2B0lFcW0m+egaHC2V3lpO8nWxyYiQ= +github.com/lib/pq v1.10.5/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= +github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.2/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/xid v1.3.0 h1:6NjYksEUlhurdVehpc7S7dk6DAmcKv8V9gG0FsVN2U4= +github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= +github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 h1:DAYUYH5869yV94zvCES9F51oYtN5oGlwjxJJz7ZCnik= +github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw= +github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s= +github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= +github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= +github.com/widuu/gojson v0.0.0-20170212122013-7da9d2cd949b h1:ieRJ8K7QAPWWltEOv7rzMruuPd7gbeAqTaBFhUECIy0= +github.com/widuu/gojson v0.0.0-20170212122013-7da9d2cd949b/go.mod h1:9W1pyetRkwXqjR9tjOSrSuhGHBK0EqXoQSwWbhBHHwA= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/main.go b/main.go new file mode 100644 index 0000000..a3317ef --- /dev/null +++ b/main.go @@ -0,0 +1,49 @@ +package main + +import ( + _ "gateway/message" + _ "gateway/models" + "gateway/notify" + "gateway/query" + _ "gateway/routers" + "gateway/service" + _ "gateway/supplier/third_party" + "github.com/beego/beego/v2/core/logs" + "github.com/beego/beego/v2/server/web" +) + +// /网关 处理下单 支付扽 +func main() { + RegisterLogs() + web.BConfig.WebConfig.Session.SessionOn = true + + go notify.CreateOrderNotifyConsumer() + //go pay_for.PayForInit() + go query.CreatePayForQueryConsumer() + go service.OrderSettleInit() + go query.CreateSupplierOrderQueryCuConsumer() + + web.Run() +} + +// RegisterLogs / +func RegisterLogs() { + _ = logs.SetLogger(logs.AdapterFile, + `{ + "filename":"../logs/legend.log", + "level":4, + "maxlines":0, + "maxsize":0, + "daily":true, + "maxdays":10, + "color":true + }`) + + f := &logs.PatternLogFormatter{ + Pattern: "%F:%n|%w%t>> %m", + WhenFormat: "2006-01-02", + } + + logs.RegisterFormatter("pattern", f) + _ = logs.SetGlobalFormatter("pattern") +} diff --git a/message/init.go b/message/init.go new file mode 100644 index 0000000..3002516 --- /dev/null +++ b/message/init.go @@ -0,0 +1,44 @@ +package message + +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/11/6 11:43 + ** @Author : yuebin + ** @File : active_mq + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/6 11:43 + ** @Software: GoLand +****************************************************/ + +import ( + "gateway/conf" + "github.com/beego/beego/v2/core/logs" + "github.com/go-stomp/stomp" + "os" + "time" +) + +// 解决第一个问题的代码 +var activeConn *stomp.Conn + +var options = []func(*stomp.Conn) error{ + //设置读写超时,超时时间为1个小时 + stomp.ConnOpt.HeartBeat(7200*time.Second, 7200*time.Second), + stomp.ConnOpt.HeartBeatError(360 * time.Second), +} + +func init() { + address := conf.GetMQAddress() + conn, err := stomp.Dial("tcp", address, options...) + + if err != nil { + logs.Error("链接active mq 失败:", err.Error()) + os.Exit(1) + } + + activeConn = conn +} + +func GetActiveMQConn() *stomp.Conn { + return activeConn +} diff --git a/message/send_message.go b/message/send_message.go new file mode 100644 index 0000000..070664a --- /dev/null +++ b/message/send_message.go @@ -0,0 +1,33 @@ +package message + +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/11/21 15:53 + ** @Author : yuebin + ** @File : send_message + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/21 15:53 + ** @Software: GoLand +****************************************************/ + +import ( + "github.com/beego/beego/v2/core/logs" + "os" +) + +func SendMessage(topic, message string) { + conn := GetActiveMQConn() + + if conn == nil { + logs.Error("send message get Active mq fail") + os.Exit(1) + } + + err := conn.Send(topic, "text/plain", []byte(message)) + + if err != nil { + logs.Error("发送消息给activeMQ失败, message=", message) + } else { + logs.Info("发送消息给activeMQ成功,message=", message) + } +} diff --git a/models/accounts/account.go b/models/accounts/account.go new file mode 100644 index 0000000..0351f2d --- /dev/null +++ b/models/accounts/account.go @@ -0,0 +1,119 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/16 11:11 + ** @Author : yuebin + ** @File : account + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/16 11:11 + ** @Software: GoLand +****************************************************/ +package accounts + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type AccountInfo struct { + Id int + Status string + AccountUid string + AccountName string + Balance float64 //账户总余额 + SettleAmount float64 //已经结算的金额 + LoanAmount float64 //账户押款金额 + FreezeAmount float64 //账户冻结金额 + WaitAmount float64 //待结算资金 + PayforAmount float64 //代付在途金额 + //AbleBalance float64 //账户可用金额 + UpdateTime string + CreateTime string +} + +const ACCOUNT_INFO = "account_info" + +func InsetAcount(account AccountInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&account) + if err != nil { + logs.Error("insert account fail: ", err) + return false + } + return true +} + +func GetAccountByUid(accountUid string) AccountInfo { + o := orm.NewOrm() + var account AccountInfo + _, err := o.QueryTable(ACCOUNT_INFO).Filter("account_uid", accountUid).Limit(1).All(&account) + if err != nil { + logs.Error("get account by uid fail: ", err) + } + + return account +} + +func GetAccountLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(ACCOUNT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Limit(-1).OrderBy("-update_time").Count() + if err != nil { + logs.Error("get account len by map fail: ", err) + } + return int(cnt) +} + +func GetAccountByMap(params map[string]string, displayCount, offset int) []AccountInfo { + o := orm.NewOrm() + var accountList []AccountInfo + qs := o.QueryTable(ACCOUNT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + _, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&accountList) + if err != nil { + logs.Error("get account by map fail: ", err) + } + return accountList +} + +func GetAllAccount() []AccountInfo { + o := orm.NewOrm() + var accountList []AccountInfo + + _, err := o.QueryTable(ACCOUNT_INFO).Limit(-1).All(&accountList) + + if err != nil { + logs.Error("get all account fail: ", err) + } + + return accountList +} + +func UpdateAccount(account AccountInfo) bool { + o := orm.NewOrm() + _, err := o.Update(&account) + if err != nil { + logs.Error("update account fail: ", err) + return false + } + return true +} + +func DeleteAccountByUid(accountUid string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(ACCOUNT_INFO).Filter("account_uid", accountUid).Delete() + if err != nil { + logs.Error("delete account fail: ", err) + return false + } + return true +} diff --git a/models/accounts/account_history_info.go b/models/accounts/account_history_info.go new file mode 100644 index 0000000..864d432 --- /dev/null +++ b/models/accounts/account_history_info.go @@ -0,0 +1,69 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/19 14:56 + ** @Author : yuebin + ** @File : account_history_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/19 14:56 + ** @Software: GoLand +****************************************************/ +package accounts + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type AccountHistoryInfo struct { + Id int + AccountUid string + AccountName string + Type string + Amount float64 + Balance float64 + UpdateTime string + CreateTime string +} + +const ACCOUNT_HISTORY_INFO = "account_history_info" + +func InsertAccountHistory(accountHistory AccountHistoryInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(accountHistory) + if err != nil { + logs.Error("insert account history fail: ", err) + return false + } + return true +} + +func GetAccountHistoryLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(ACCOUNT_HISTORY_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Limit(-1).Count() + if err != nil { + logs.Error("get account history len by map fail: ", err) + } + return int(cnt) +} + +func GetAccountHistoryByMap(params map[string]string, displayCount, offset int) []AccountHistoryInfo { + o := orm.NewOrm() + qs := o.QueryTable(ACCOUNT_HISTORY_INFO) + var accountHistoryList []AccountHistoryInfo + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&accountHistoryList) + if err != nil { + logs.Error("get account history by map fail: ", err) + } + return accountHistoryList +} diff --git a/models/agent/agent_info.go b/models/agent/agent_info.go new file mode 100644 index 0000000..d37873b --- /dev/null +++ b/models/agent/agent_info.go @@ -0,0 +1,162 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/9/19 14:41 + ** @Author : yuebin + ** @File : agent_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/9/19 14:41 + ** @Software: GoLand +****************************************************/ +package agent + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type AgentInfo struct { + Id int + Status string + AgentName string + AgentPassword string + PayPassword string + AgentRemark string + AgentUid string + AgentPhone string + UpdateTime string + CreateTime string +} + +const AGENT_INFO = "agent_info" + +func IsEixstByAgentName(agentName string) bool { + o := orm.NewOrm() + exist := o.QueryTable(AGENT_INFO).Filter("agent_name", agentName).Exist() + + return exist +} + +func IsExistByAgentUid(uid string) bool { + o := orm.NewOrm() + exist := o.QueryTable(AGENT_INFO).Filter("agent_uid", uid).Exist() + + return exist +} + +func IsEixstByAgentPhone(agentPhone string) bool { + o := orm.NewOrm() + exist := o.QueryTable(AGENT_INFO).Filter("agent_phone", agentPhone).Exist() + return exist +} + +func InsertAgentInfo(agentInfo AgentInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&agentInfo) + if err != nil { + logs.Error("insert agent info fail: ", err) + return false + } + + return true +} + +func GetAgentInfoByAgentUid(agentUid string) AgentInfo { + o := orm.NewOrm() + var agentInfo AgentInfo + _, err := o.QueryTable(AGENT_INFO).Filter("agent_uid", agentUid).Limit(1).All(&agentInfo) + + if err != nil { + logs.Error("get agent info by agentUid fail: ", err) + } + + return agentInfo +} + +func GetAgentInfoByPhone(phone string) AgentInfo { + o := orm.NewOrm() + var agentInfo AgentInfo + _, err := o.QueryTable(AGENT_INFO).Filter("agent_phone", phone).Limit(1).All(&agentInfo) + + if err != nil { + logs.Error("get agent info by phone fail: ", err) + } + + return agentInfo +} + +func GetAgentInfoLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(AGENT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Limit(-1).Count() + if err != nil { + logs.Error("get agentinfo len by map fail: ", err) + } + + return int(cnt) +} + +func GetAgentInfoByMap(params map[string]string, displayCount, offset int) []AgentInfo { + o := orm.NewOrm() + var agentInfoList []AgentInfo + + qs := o.QueryTable(AGENT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + _, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&agentInfoList) + + if err != nil { + logs.Error("get agentInfo by map fail: ", err) + } + + return agentInfoList +} + +func GetAllAgentByMap(parmas map[string]string) []AgentInfo { + o := orm.NewOrm() + var agentList []AgentInfo + + qs := o.QueryTable(AGENT_INFO) + for k, v := range parmas { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + _, err := qs.Limit(-1).All(&agentList) + if err != nil { + logs.Error("get all agent by map fail: ", err) + } + + return agentList +} + +func UpdateAgentInfo(agentInfo AgentInfo) bool { + o := orm.NewOrm() + _, err := o.Update(&agentInfo) + + if err != nil { + logs.Error("update agentinfo fail: ", err) + return false + } + + return true +} + +func DeleteAgentByAgentUid(agentUid string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(AGENT_INFO).Filter("agent_uid", agentUid).Delete() + if err != nil { + logs.Error("delete agent by agent uid fail: ", err) + return false + } + return true +} diff --git a/models/agent/agent_profit.go b/models/agent/agent_profit.go new file mode 100644 index 0000000..f217152 --- /dev/null +++ b/models/agent/agent_profit.go @@ -0,0 +1,13 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/12/17 17:50 + ** @Author : yuebin + ** @File : agent_profit + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/12/17 17:50 + ** @Software: GoLand +****************************************************/ +package agent + +type AgentProfit struct { +} diff --git a/models/init.go b/models/init.go new file mode 100644 index 0000000..dbc9802 --- /dev/null +++ b/models/init.go @@ -0,0 +1,62 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/8/9 13:48 + ** @Author : yuebin + ** @File : init + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/8/9 13:48 + ** @Software: GoLand +****************************************************/ +package models + +import ( + "fmt" + "gateway/models/accounts" + "gateway/models/agent" + "gateway/models/merchant" + "gateway/models/notify" + "gateway/models/order" + "gateway/models/payfor" + "gateway/models/road" + "gateway/models/system" + "gateway/models/user" + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" + "github.com/beego/beego/v2/server/web" + _ "github.com/go-sql-driver/mysql" +) + +func init() { + dbHost, _ := web.AppConfig.String("mysql::dbhost") + dbUser, _ := web.AppConfig.String("mysql::dbuser") + dbPassword, _ := web.AppConfig.String("mysql::dbpasswd") + dbBase, _ := web.AppConfig.String("mysql::dbbase") + dbPort, _ := web.AppConfig.String("mysql::dbport") + + link := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8", dbUser, dbPassword, dbHost, dbPort, dbBase) + + logs.Info("mysql init.....", link) + + orm.RegisterDriver("mysql", orm.DRMySQL) + orm.RegisterDataBase("default", "mysql", link) + orm.RegisterModel(new(user.UserInfo), + new(system.MenuInfo), + new(system.SecondMenuInfo), + new(system.PowerInfo), + new(system.RoleInfo), + new(system.BankCardInfo), + new(road.RoadInfo), + new(road.RoadPoolInfo), + new(agent.AgentInfo), + new(merchant.MerchantInfo), + new(merchant.MerchantDeployInfo), + new(accounts.AccountInfo), + new(accounts.AccountHistoryInfo), + new(order.OrderInfo), + new(order.OrderProfitInfo), + new(order.OrderSettleInfo), + new(notify.NotifyInfo), + new(merchant.MerchantLoadInfo), + new(payfor.PayforInfo), + ) +} diff --git a/models/merchant/merchant_deploy_info.go b/models/merchant/merchant_deploy_info.go new file mode 100644 index 0000000..9b95622 --- /dev/null +++ b/models/merchant/merchant_deploy_info.go @@ -0,0 +1,66 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/7 11:52 + ** @Author : yuebin + ** @File : merchant_deploy_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/7 11:52 + ** @Software: GoLand +****************************************************/ +package merchant + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type MerchantDeployInfo struct { + Id int + Status string + MerchantUid string + PayType string + SingleRoadUid string + SingleRoadName string + SingleRoadPlatformRate float64 + SingleRoadAgentRate float64 + RollRoadCode string + RollRoadName string + RollRoadPlatformRate float64 + RollRoadAgentRate float64 + IsLoan string + LoanRate float64 + LoanDays int + UnfreezeHour int + WaitUnfreezeAmount float64 + LoanAmount float64 + UpdateTime string + CreateTime string +} + +const MERCHANT_DEPLOY_INFO = "merchant_deploy_info" + +func GetMerchantDeployByUidAndPayType(uid, payType string) MerchantDeployInfo { + o := orm.NewOrm() + var merchantDeployInfo MerchantDeployInfo + + _, err := o.QueryTable(MERCHANT_DEPLOY_INFO). + Filter("merchant_uid", uid).Filter("pay_type", payType). + Limit(1). + All(&merchantDeployInfo) + + if err != nil { + logs.Error("get merchant deploy by uid and paytype fail:", err) + } + return merchantDeployInfo +} + +func GetMerchantDeployByHour(hour int) []MerchantDeployInfo { + o := orm.NewOrm() + var merchantDeployList []MerchantDeployInfo + _, err := o.QueryTable(MERCHANT_DEPLOY_INFO).Filter("unfreeze_hour", hour).Filter("status", "active").Limit(-1).All(&merchantDeployList) + if err != nil { + logs.Error("get merchant deploy list fail: ", err) + } + + return merchantDeployList +} diff --git a/models/merchant/merchant_info.go b/models/merchant/merchant_info.go new file mode 100644 index 0000000..41f881d --- /dev/null +++ b/models/merchant/merchant_info.go @@ -0,0 +1,205 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/9/28 16:47 + ** @Author : yuebin + ** @File : merchant_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/9/28 16:47 + ** @Software: GoLand +****************************************************/ +package merchant + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type MerchantInfo struct { + Id int + Status string + BelongAgentUid string + BelongAgentName string + MerchantName string + MerchantUid string + MerchantKey string + MerchantSecret string + LoginPassword string + LoginAccount string + AutoSettle string + AutoPayFor string + WhiteIps string + Remark string + SinglePayForRoadUid string + SinglePayForRoadName string + RollPayForRoadCode string + RollPayForRoadName string + PayforFee float64 + UpdateTime string + CreateTime string +} + +const MERCHANT_INFO = "merchant_info" + +func IsExistByMerchantName(merchantName string) bool { + o := orm.NewOrm() + exist := o.QueryTable(MERCHANT_INFO).Filter("merchant_name", merchantName).Exist() + + return exist +} + +func IsExistByMerchantUid(uid string) bool { + o := orm.NewOrm() + exist := o.QueryTable(MERCHANT_INFO).Filter("merchant_uid", uid).Exist() + + return exist +} + +func IsExistMerchantByAgentUid(uid string) bool { + o := orm.NewOrm() + exist := o.QueryTable(MERCHANT_INFO).Filter("belong_agent_uid", uid).Exist() + + return exist +} + +func IsExistByMerchantPhone(phone string) bool { + o := orm.NewOrm() + exist := o.QueryTable(MERCHANT_INFO).Filter("LoginAccount", phone).Exist() + + return exist +} + +func GetMerchantByPhone(phone string) (m MerchantInfo) { + o := orm.NewOrm() + _, e := o.QueryTable(MERCHANT_INFO).Filter("LoginAccount", phone).Limit(1).All(&m) + if e != nil { + logs.Error("GetMerchantByPhone merchant fail: ", e) + } + return m +} + +func InsertMerchantInfo(merchantInfo MerchantInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&merchantInfo) + if err != nil { + logs.Error("insert merchant fail: ", err) + return false + } + return true +} + +func GetMerchantLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(MERCHANT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Count() + if err != nil { + logs.Error("get merchant len by map fail: ", err) + } + return int(cnt) +} + +func GetMerchantListByMap(params map[string]string, displayCount, offset int) []MerchantInfo { + o := orm.NewOrm() + qs := o.QueryTable(MERCHANT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + var merchantList []MerchantInfo + _, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&merchantList) + if err != nil { + logs.Error("get merchant list by map fail: ", err) + } + return merchantList +} + +func GetAllMerchant() []MerchantInfo { + o := orm.NewOrm() + var merchantList []MerchantInfo + + _, err := o.QueryTable(MERCHANT_INFO).Limit(-1).All(&merchantList) + if err != nil { + logs.Error("get all merchant fail:", err) + } + + return merchantList +} + +func GetMerchantByParams(params map[string]string, displayCount, offset int) []MerchantInfo { + o := orm.NewOrm() + var merchantList []MerchantInfo + qs := o.QueryTable(MERCHANT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + qs.Limit(displayCount, offset).All(&merchantList) + + return merchantList +} + +func GetMerchantLenByParams(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(MERCHANT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + cnt, err := qs.Limit(-1).Count() + + if err != nil { + logs.Error("get merchant len by params fail: ", err) + } + return int(cnt) +} + +func GetMerchantByUid(merchantUid string) MerchantInfo { + o := orm.NewOrm() + var merchantInfo MerchantInfo + _, err := o.QueryTable(MERCHANT_INFO).Filter("merchant_uid", merchantUid).Limit(1).All(&merchantInfo) + if err != nil { + logs.Error("get merchant info fail: ", err) + } + return merchantInfo +} + +func GetMerchantByPasskey(payKey string) MerchantInfo { + o := orm.NewOrm() + var merchantInfo MerchantInfo + _, err := o.QueryTable(MERCHANT_INFO).Filter("merchant_key", payKey).Limit(1).All(&merchantInfo) + if err != nil { + logs.Error("get merchant by merchantKey fail: ", err) + } + return merchantInfo +} + +func UpdateMerchant(merchantInfo MerchantInfo) bool { + o := orm.NewOrm() + _, err := o.Update(&merchantInfo) + + if err != nil { + logs.Error("update merchant fail: ", err) + return false + } + + return true +} + +func DeleteMerchantByUid(merchantUid string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(MERCHANT_INFO).Filter("merchant_uid", merchantUid).Delete() + if err != nil { + logs.Error("delete merchant fail: ", err) + return false + } + return true +} diff --git a/models/merchant/merchant_load_info.go b/models/merchant/merchant_load_info.go new file mode 100644 index 0000000..6da7b41 --- /dev/null +++ b/models/merchant/merchant_load_info.go @@ -0,0 +1,56 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/11/22 13:07 + ** @Author : yuebin + ** @File : merchant_load_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/22 13:07 + ** @Software: GoLand +****************************************************/ +package merchant + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type MerchantLoadInfo struct { + Id int + Status string + MerchantUid string + RoadUid string + LoadDate string + LoadAmount float64 + UpdateTime string + CreateTime string +} + +const MERCHANT_LOAD_INFO = "merchant_load_info" + +func GetMerchantLoadInfoByMap(params map[string]string) []MerchantLoadInfo { + o := orm.NewOrm() + qs := o.QueryTable(MERCHANT_LOAD_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + var merchantLoadList []MerchantLoadInfo + _, err := qs.Limit(-11).All(&merchantLoadList) + if err != nil { + logs.Error("get merchant load info fail: ", err) + } + return merchantLoadList +} + +func IsExistMerchantLoadByParams(params map[string]string) bool { + o := orm.NewOrm() + qs := o.QueryTable(MERCHANT_LOAD_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + return qs.Exist() +} diff --git a/models/notify/notify_info.go b/models/notify/notify_info.go new file mode 100644 index 0000000..7c9a430 --- /dev/null +++ b/models/notify/notify_info.go @@ -0,0 +1,84 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/11/20 13:13 + ** @Author : yuebin + ** @File : notify_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/20 13:13 + ** @Software: GoLand +****************************************************/ +package notify + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type NotifyInfo struct { + Id int + Type string //订单-order,代付-payfor + BankOrderId string + MerchantOrderId string + Status string + Times int + Url string + Response string + UpdateTime string + CreateTime string +} + +const NOTIFYINFO = "notify_info" + +func InsertNotifyInfo(notifyInfo NotifyInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(¬ifyInfo) + if err != nil { + logs.Error("insert notify fail:", err) + return false + } + return true +} + +func NotifyInfoExistByBankOrderId(bankOrderId string) bool { + o := orm.NewOrm() + exist := o.QueryTable(NOTIFYINFO).Filter("bank_order_id", bankOrderId).Exist() + return exist +} + +func GetNotifyInfoByBankOrderId(bankOrderId string) NotifyInfo { + o := orm.NewOrm() + var notifyInfo NotifyInfo + _, err := o.QueryTable(NOTIFYINFO).Filter("bank_order_id", bankOrderId).All(¬ifyInfo) + if err != nil { + logs.Error("get notify info by bankOrderId fail: ", err) + } + + return notifyInfo +} + +func GetNotifyInfosNotSuccess(params map[string]interface{}) []NotifyInfo { + o := orm.NewOrm() + var notifyInfoList []NotifyInfo + qs := o.QueryTable(NOTIFYINFO) + for k, v := range params { + qs = qs.Filter(k, v) + } + qs = qs.Exclude("status", "success") + _, err := qs.Limit(-1).All(¬ifyInfoList) + + if err != nil { + logs.Error("get notifyinfos fail: ", err) + } + + return notifyInfoList +} + +func UpdateNotifyInfo(notifyInfo NotifyInfo) bool { + o := orm.NewOrm() + _, err := o.Update(¬ifyInfo) + if err != nil { + logs.Error("update notify info fail: ", err) + return false + } + return true +} diff --git a/models/order/order_info.go b/models/order/order_info.go new file mode 100644 index 0000000..0344678 --- /dev/null +++ b/models/order/order_info.go @@ -0,0 +1,235 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/28 10:15 + ** @Author : yuebin + ** @File : order_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/28 10:15 + ** @Software: GoLand +****************************************************/ +package order + +import ( + "fmt" + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" + "strconv" +) + +type OrderInfo struct { + Id int + ShopName string //商品名称 + OrderPeriod string //订单有效时间 + MerchantOrderId string //商户订单id + BankOrderId string //本系统订单id + BankTransId string //上游流水id + OrderAmount float64 //订单提交的金额 + ShowAmount float64 //待支付的金额 + FactAmount float64 //用户实际支付金额 + RollPoolCode string //轮询池编码 + RollPoolName string //轮询池名称 + RoadUid string //通道标识 + RoadName string //通道名称 + PayProductName string //上游支付公司的名称 + PayProductCode string //上游支付公司的编码代号 + PayTypeCode string //支付产品编码 + PayTypeName string //支付产品名称 + OsType string //操作系统类型 + Status string //订单支付状态 + Refund string //退款状态 + RefundTime string //退款操作时间 + Freeze string //冻结状态 + FreezeTime string //冻结时间 + Unfreeze string //是否已经解冻 + UnfreezeTime string //解冻时间 + ReturnUrl string //支付完跳转地址 + NotifyUrl string //下游回调地址 + MerchantUid string //商户id + MerchantName string //商户名称 + AgentUid string //该商户所属代理 + AgentName string //该商户所属代理名称 + ExValue string //扩展属性 + CardData string + UpdateTime string + CreateTime string + Operator string // 操作人 +} + +const ORDER_INFO = "order_info" + +func InsertOrder(orderInfo OrderInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&orderInfo) + if err != nil { + logs.Error("insert order info fail: ", err) + return false + } + return true +} + +func OrderNoIsEixst(orderId string) bool { + o := orm.NewOrm() + exits := o.QueryTable(ORDER_INFO).Filter("merchant_order_id", orderId).Exist() + return exits +} + +func BankOrderIdIsEixst(bankOrderId string) bool { + o := orm.NewOrm() + exists := o.QueryTable(ORDER_INFO).Filter("bank_order_id", bankOrderId).Exist() + return exists +} + +func GetOrderLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(ORDER_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, _ := qs.Limit(-1).Count() + return int(cnt) +} + +func GetOrderByMap(params map[string]string, display, offset int) []OrderInfo { + o := orm.NewOrm() + var orderInfoList []OrderInfo + qs := o.QueryTable(ORDER_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(display, offset).OrderBy("-update_time").All(&orderInfoList) + if err != nil { + logs.Error("get order by map fail: ", err) + } + return orderInfoList +} + +func GetSuccessRateByMap(params map[string]string) string { + o := orm.NewOrm() + qs := o.QueryTable(ORDER_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + successRate := "0%" + allCount, _ := qs.Limit(-1).Count() + successCount, _ := qs.Filter("status", "success").Limit(-1).Count() + if allCount == 0 { + return successRate + } + tmp := float64(successCount) / float64(allCount) * 100 + successRate = fmt.Sprintf("%.1f", tmp) + return successRate + "%" +} + +func GetAllAmountByMap(params map[string]string) float64 { + o := orm.NewOrm() + condition := "select sum(order_amount) as allAmount from order_info " + for _, v := range params { + if len(v) > 0 { + condition = condition + "where " + break + } + } + flag := false + if params["create_time__gte"] != "" { + flag = true + condition = condition + " create_time >= '" + params["create_time__gte"] + "'" + } + if params["create_time__lte"] != "" { + if flag { + condition = condition + " and " + } + condition = condition + " create_time <= '" + params["create_time__lte"] + "'" + } + if params["merchant_name__icontains"] != "" { + if flag { + condition = condition + " and " + } + condition = condition + "merchant_name like %'" + params["merchant_name__icontains"] + "'% " + } + if params["merchant_order_id"] != "" { + if flag { + condition = condition + " and " + } + condition = condition + " merchant_order_id = '" + params["merchant_order_id"] + "'" + } + if params["bank_order_id"] != "" { + if flag { + condition = condition + " and " + } + condition = condition + " bank_order_id = '" + params["bank_order_id"] + "'" + } + if params["status"] != "" { + if flag { + condition = condition + " and " + } + condition = condition + "status = '" + params["status"] + "'" + } + if params["pay_product_code"] != "" { + if flag { + condition = condition + " and " + } + condition = condition + "pay_product_code = " + params["pay_product_code"] + "'" + } + if params["pay_type_code"] != "" { + if flag { + condition = condition + " and " + } + condition = condition + "pay_type_code = " + params["pay_type_code"] + } + logs.Info("get order amount str = ", condition) + var maps []orm.Params + allAmount := 0.00 + num, err := o.Raw(condition).Values(&maps) + if err == nil && num > 0 { + allAmount, _ = strconv.ParseFloat(maps[0]["allAmount"].(string), 64) + } + return allAmount +} + +func GetOrderByBankOrderId(bankOrderId string) OrderInfo { + o := orm.NewOrm() + var orderInfo OrderInfo + _, err := o.QueryTable(ORDER_INFO).Filter("bank_order_id", bankOrderId).Limit(1).All(&orderInfo) + if err != nil { + logs.Error("get order info by bankOrderId fail: ", err) + } + return orderInfo +} + +func GetOrderByBankTransId(BankTransId string) OrderInfo { + o := orm.NewOrm() + var orderInfo OrderInfo + _, err := o.QueryTable(ORDER_INFO).Filter("bank_trans_id", BankTransId).Limit(1).All(&orderInfo) + if err != nil { + logs.Error("get order info by bankOrderId fail: ", err) + } + return orderInfo +} + +func GetOrderByMerchantOrderId(merchantOrderId string) OrderInfo { + o := orm.NewOrm() + var orderInfo OrderInfo + _, err := o.QueryTable(ORDER_INFO).Filter("merchant_order_id", merchantOrderId).Limit(1).All(&orderInfo) + if err != nil { + logs.Error("get order by merchant_order_id: ", err.Error()) + } + return orderInfo +} + +func GetOneOrder(bankOrderId string) OrderInfo { + o := orm.NewOrm() + var orderInfo OrderInfo + _, err := o.QueryTable(ORDER_INFO).Filter("bank_order_id", bankOrderId).Limit(1).All(&orderInfo) + if err != nil { + logs.Error("get one order fail: ", err) + } + + return orderInfo +} diff --git a/models/order/order_profit_info.go b/models/order/order_profit_info.go new file mode 100644 index 0000000..6c8abae --- /dev/null +++ b/models/order/order_profit_info.go @@ -0,0 +1,120 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/30 11:44 + ** @Author : yuebin + ** @File : order_profit_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/30 11:44 + ** @Software: GoLand +****************************************************/ +package order + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type OrderProfitInfo struct { + Id int + MerchantName string + MerchantUid string + AgentName string + AgentUid string + PayProductCode string + PayProductName string + PayTypeCode string + PayTypeName string + Status string + MerchantOrderId string + BankOrderId string + BankTransId string + OrderAmount float64 + ShowAmount float64 + FactAmount float64 + UserInAmount float64 + SupplierRate float64 + PlatformRate float64 + AgentRate float64 + AllProfit float64 + SupplierProfit float64 + PlatformProfit float64 + AgentProfit float64 + UpdateTime string + CreateTime string +} + +const ORDER_PROFIT_INFO = "order_profit_info" + +func GetOrderProfitByBankOrderId(bankOrderId string) OrderProfitInfo { + o := orm.NewOrm() + var orderProfit OrderProfitInfo + _, err := o.QueryTable(ORDER_PROFIT_INFO).Filter("bank_order_id", bankOrderId).Limit(1).All(&orderProfit) + if err != nil { + logs.Error("GetOrderProfitByBankOrderId fail:", err) + } + return orderProfit +} + +func GetOrderProfitLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(ORDER_PROFIT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, _ := qs.Limit(-1).Count() + return int(cnt) +} + +func GetOrderProfitByMap(params map[string]string, display, offset int) []OrderProfitInfo { + o := orm.NewOrm() + var orderProfitInfoList []OrderProfitInfo + qs := o.QueryTable(ORDER_PROFIT_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(display, offset).OrderBy("-update_time").All(&orderProfitInfoList) + if err != nil { + logs.Error("get order by map fail: ", err) + } + return orderProfitInfoList +} + +/* +func GetPlatformProfitByMap(params map[string]string) []models.PlatformProfit { + + o := orm.NewOrm() + + cond := "select merchant_name, agent_name, pay_product_name as supplier_name, pay_type_name, sum(fact_amount) as order_amount, count(1) as order_count, " + + "sum(platform_profit) as platform_profit, sum(agent_profit) as agent_profit from " + ORDER_PROFIT_INFO + " where status='success' " + flag := false + for k, v := range params { + if len(v) > 0 { + if flag { + cond += " and" + } + if strings.Contains(k, "create_time__gte") { + cond = cond + " create_time>='" + v + "'" + } else if strings.Contains(k, "create_time__lte") { + cond = cond + " create_time<='" + v + "'" + } else { + cond = cond + " " + k + "='" + v + "'" + } + flag = true + } + } + + cond += " group by merchant_uid, agent_uid, pay_product_code, pay_type_code" + + var platformProfitList []models.PlatformProfit + _, err := o.Raw(cond).QueryRows(&platformProfitList) + if err != nil { + logs.Error("get platform profit by map fail:", err) + } + + return platformProfitList +} +*/ diff --git a/models/order/order_settle_info.go b/models/order/order_settle_info.go new file mode 100644 index 0000000..a4bbc1f --- /dev/null +++ b/models/order/order_settle_info.go @@ -0,0 +1,51 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/10/30 11:41 + ** @Author : yuebin + ** @File : order_settle_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/10/30 11:41 + ** @Software: GoLand +****************************************************/ +package order + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type OrderSettleInfo struct { + Id int + PayProductCode string + PayProductName string + PayTypeCode string + RoadUid string + PayTypeName string + MerchantUid string + MerchantName string + MerchantOrderId string + BankOrderId string + SettleAmount float64 + IsAllowSettle string + IsCompleteSettle string + UpdateTime string + CreateTime string +} + +const ORDER_SETTLE_INFO = "order_settle_info" + +func GetOrderSettleListByParams(params map[string]string) []OrderSettleInfo { + o := orm.NewOrm() + qs := o.QueryTable(ORDER_SETTLE_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + var orderSettleList []OrderSettleInfo + if _, err := qs.Limit(-1).All(&orderSettleList); err != nil { + logs.Error("get order settle list fail: ", err) + } + + return orderSettleList +} diff --git a/models/order/platform_profit.go b/models/order/platform_profit.go new file mode 100644 index 0000000..08e8e87 --- /dev/null +++ b/models/order/platform_profit.go @@ -0,0 +1,21 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/12/17 17:50 + ** @Author : yuebin + ** @File : platform_profit + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/12/17 17:50 + ** @Software: GoLand +****************************************************/ +package order + +type PlatformProfit struct { + MerchantName string + AgentName string + SupplierName string + PayTypeName string + OrderAmount float64 + OrderCount int + PlatformProfit float64 + AgentProfit float64 +} diff --git a/models/payfor/payfor_info.go b/models/payfor/payfor_info.go new file mode 100644 index 0000000..a6a9e22 --- /dev/null +++ b/models/payfor/payfor_info.go @@ -0,0 +1,116 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/11/25 14:32 + ** @Author : yuebin + ** @File : payfor_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/25 14:32 + ** @Software: GoLand +****************************************************/ +package payfor + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type PayforInfo struct { + Id int + PayforUid string + MerchantUid string + MerchantName string + MerchantOrderId string + BankOrderId string + BankTransId string + RoadUid string + RoadName string + RollPoolCode string + RollPoolName string + PayforFee float64 + PayforAmount float64 + PayforTotalAmount float64 + BankCode string + BankName string + BankAccountName string + BankAccountNo string + BankAccountType string + Country string + City string + Ares string + BankAccountAddress string + PhoneNo string + GiveType string + Type string + NotifyUrl string + Status string + IsSend string + RequestTime string + ResponseTime string + ResponseContent string + Remark string + CreateTime string + UpdateTime string +} + +const PAYFORINFO = "payfor_info" + +func InsertPayfor(payFor PayforInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&payFor) + if err != nil { + logs.Error("insert payfor fail: ", err) + return false + } + return true +} + +func IsExistPayForByBankOrderId(bankOrderId string) bool { + o := orm.NewOrm() + exist := o.QueryTable(PAYFORINFO).Filter("bank_order_id", bankOrderId).Exist() + + return exist +} + +func IsExistPayForByMerchantOrderId(merchantOrderId string) bool { + o := orm.NewOrm() + exist := o.QueryTable(PAYFORINFO).Filter("merchant_order_id", merchantOrderId).Exist() + + return exist +} + +func GetPayForByBankOrderId(bankOrderId string) PayforInfo { + o := orm.NewOrm() + var payFor PayforInfo + _, err := o.QueryTable(PAYFORINFO).Filter("bank_order_id", bankOrderId).Limit(1).All(&payFor) + + if err != nil { + logs.Error("get pay for by bank_order_id fail: ", err) + } + + return payFor +} + +func GetPayForByMerchantOrderId(merchantOrderId string) PayforInfo { + o := orm.NewOrm() + var payFor PayforInfo + + _, err := o.QueryTable(PAYFORINFO).Filter("merchant_order_id", merchantOrderId).Limit(1).All(&payFor) + + if err != nil { + logs.Error("fail: ", err) + } + + return payFor +} + +func UpdatePayFor(payFor PayforInfo) bool { + o := orm.NewOrm() + _, err := o.Update(&payFor) + + if err != nil { + logs.Error("update pay for fail:", err) + return false + } + + return true +} diff --git a/models/road/road_info.go b/models/road/road_info.go new file mode 100644 index 0000000..18ef408 --- /dev/null +++ b/models/road/road_info.go @@ -0,0 +1,166 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/9/8 12:09 + ** @Author : yuebin + ** @File : road_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/9/8 12:09 + ** @Software: GoLand +****************************************************/ +package road + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type RoadInfo struct { + Id int + Status string + RoadName string + RoadUid string + Remark string + ProductName string + ProductUid string + PayType string + BasicFee float64 + SettleFee float64 + TotalLimit float64 + TodayLimit float64 + SingleMinLimit float64 + SingleMaxLimit float64 + StarHour int + EndHour int + Params string + TodayIncome float64 + TotalIncome float64 + TodayProfit float64 + TotalProfit float64 + Balance float64 + RequestAll int + RequestSuccess int + + TodayRequestAll int `json:"TodayRequestAll" orm:"today_request_all"` + TodayRequestSuccess int + + UpdateTime string + CreateTime string +} + +const ROAD_INFO = "road_info" + +func GetRoadInfoByRoadUid(roadUid string) RoadInfo { + o := orm.NewOrm() + var roadInfo RoadInfo + _, err := o.QueryTable(ROAD_INFO).Exclude("status", "delete").Filter("road_uid", roadUid).Limit(1).All(&roadInfo) + if err != nil { + logs.Error("get road info by road uid fail: ", err) + } + return roadInfo +} + +func GetRoadInfosByRoadUids(roadUids []string) []RoadInfo { + o := orm.NewOrm() + var roadInfoList []RoadInfo + _, err := o.QueryTable(ROAD_INFO).Filter("road_uid__in", roadUids).OrderBy("update_time").All(&roadInfoList) + if err != nil { + logs.Error("get roadInfos by roadUids fail: ", err) + } + return roadInfoList +} + +func GetRoadInfoByName(roadName string) RoadInfo { + o := orm.NewOrm() + var roadInfo RoadInfo + _, err := o.QueryTable(ROAD_INFO).Exclude("status", "delete").Filter("road_name", roadName).Limit(1).All(&roadInfo) + if err != nil { + logs.Error("get road info by name fail: ", err) + } + return roadInfo +} + +func GetRoadLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(ROAD_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Exclude("status", "delete").Limit(-1).Count() + if err != nil { + logs.Error("get road len by map fail: ", err) + } + return int(cnt) +} + +func GetRoadInfoByMap(params map[string]string, displayCount, offset int) []RoadInfo { + o := orm.NewOrm() + var roadInfoList []RoadInfo + qs := o.QueryTable(ROAD_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + _, err := qs.Exclude("status", "delete").Limit(displayCount, offset).OrderBy("-update_time").All(&roadInfoList) + if err != nil { + logs.Error("get road info by map fail: ", err) + } + return roadInfoList +} + +func GetAllRoad(params map[string]string) []RoadInfo { + o := orm.NewOrm() + var roadInfoList []RoadInfo + qs := o.QueryTable(ROAD_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(-1).All(&roadInfoList) + if err != nil { + logs.Error("get all road fail: ", err) + } + return roadInfoList +} + +func InsertRoadInfo(roadInfo RoadInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&roadInfo) + + if err != nil { + logs.Error("insert road info fail: ", err) + return false + } + return true +} + +func RoadInfoExistByRoadUid(roadUid string) bool { + o := orm.NewOrm() + exist := o.QueryTable(ROAD_INFO).Filter("status", "active").Filter("road_uid", roadUid).Exist() + + return exist +} + +func UpdateRoadInfo(roadInfo RoadInfo) bool { + o := orm.NewOrm() + _, err := o.Update(&roadInfo) + if err != nil { + logs.Error("update road info fail: ", err) + return false + } + return true +} + +func DeleteRoadByRoadUid(roadUid string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(ROAD_INFO).Filter("road_uid", roadUid).Delete() + if err != nil { + logs.Error("delete road by road uid fail: ", err) + return false + } + return true +} diff --git a/models/road/road_pool_info.go b/models/road/road_pool_info.go new file mode 100644 index 0000000..42e959a --- /dev/null +++ b/models/road/road_pool_info.go @@ -0,0 +1,127 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/9/9 16:35 + ** @Author : yuebin + ** @File : road_pool_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/9/9 16:35 + ** @Software: GoLand +****************************************************/ +package road + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type RoadPoolInfo struct { + Id int + Status string + RoadPoolName string + RoadPoolCode string + RoadUidPool string + UpdateTime string + CreateTime string +} + +const ROAD_POOL_INFO = "road_pool_info" + +func InsertRoadPool(roadPool RoadPoolInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&roadPool) + if err != nil { + logs.Error("insert road pool fail: ", err) + return false + } + return true +} + +func GetRoadPoolLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(ROAD_POOL_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Limit(-1).Count() + if err != nil { + logs.Error("get road pool len by map fail: ", err) + } + return int(cnt) +} + +func GetRoadPoolByMap(params map[string]string, displayCount, offset int) []RoadPoolInfo { + o := orm.NewOrm() + var roadPoolList []RoadPoolInfo + qs := o.QueryTable(ROAD_POOL_INFO) + for k, v := range params { + if len(v) > 0 { + qs.Filter(k, v) + } + } + _, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&roadPoolList) + if err != nil { + logs.Error("get road pool by map fail: ", err) + } + return roadPoolList +} + +func GetRoadPoolByRoadPoolCode(roadPoolCode string) RoadPoolInfo { + o := orm.NewOrm() + var roadPoolInfo RoadPoolInfo + _, err := o.QueryTable(ROAD_POOL_INFO).Filter("road_pool_code", roadPoolCode).Limit(1).All(&roadPoolInfo) + + if err != nil { + logs.Error("get road pool info by road pool code fail: ", err) + } + + return roadPoolInfo +} + +func GetAllRollPool(params map[string]string) []RoadPoolInfo { + o := orm.NewOrm() + var roadPoolList []RoadPoolInfo + qs := o.QueryTable(ROAD_POOL_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(-1).All(&roadPoolList) + if err != nil { + logs.Error("get all roll pool fail: ", err) + } + return roadPoolList +} + +func GetRoadPoolByName(roadPoolName string) RoadPoolInfo { + o := orm.NewOrm() + var roadPoolInfo RoadPoolInfo + _, err := o.QueryTable(ROAD_POOL_INFO).Filter("road_pool_name", roadPoolName).Limit(1).All(&roadPoolInfo) + if err != nil { + logs.Error("get road pool by name fail: ", err) + } + return roadPoolInfo +} + +func DeleteRoadPoolByCode(roadPoolCode string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(ROAD_POOL_INFO).Filter("road_pool_code", roadPoolCode).Delete() + if err != nil { + logs.Error("delete road pool by code fail: ", err) + return false + } + return true +} + +func UpdateRoadPool(roadPool RoadPoolInfo) bool { + o := orm.NewOrm() + _, err := o.Update(&roadPool) + + if err != nil { + logs.Error("update road pool fail: ", err) + return false + } + return true +} diff --git a/models/system/bank_card_info.go b/models/system/bank_card_info.go new file mode 100644 index 0000000..bfa0e82 --- /dev/null +++ b/models/system/bank_card_info.go @@ -0,0 +1,106 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/9/6 10:19 + ** @Author : yuebin + ** @File : bank_card_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/9/6 10:19 + ** @Software: GoLand +****************************************************/ +package system + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type BankCardInfo struct { + Id int + Uid string + UserName string + BankName string + BankCode string + BankAccountType string + AccountName string + BankNo string + IdentifyCard string + CertificateNo string + PhoneNo string + BankAddress string + UpdateTime string + CreateTime string +} + +const BANK_CARD_INFO = "bank_card_info" + +func InsertBankCardInfo(bankCardInfo BankCardInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&bankCardInfo) + + if err != nil { + logs.Error("insert bank card info fail: ", err) + return false + } + return true +} + +func GetBankCardLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(BANK_CARD_INFO) + for k, v := range params { + qs = qs.Filter(k, v) + } + cnt, err := qs.Limit(-1).Count() + if err != nil { + logs.Error("get bank card len by map fail: ", err) + } + return int(cnt) +} + +func GetBankCardByMap(params map[string]string, displayCount, offset int) []BankCardInfo { + o := orm.NewOrm() + var bankCardList []BankCardInfo + qs := o.QueryTable(BANK_CARD_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&bankCardList) + if err != nil { + logs.Error("get bank card by map fail: ", err) + } + return bankCardList +} + +func GetBankCardByUid(uid string) BankCardInfo { + o := orm.NewOrm() + var bankCardInfo BankCardInfo + _, err := o.QueryTable(bankCardInfo).Filter("uid", uid).Limit(1).All(&bankCardInfo) + if err != nil { + logs.Error("get bank card by uid fail: ", err) + } + + return bankCardInfo +} + +func DeleteBankCardByUid(uid string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(BANK_CARD_INFO).Filter("uid", uid).Delete() + + if err != nil { + logs.Error("delete bank card by uid fail: ", err) + return false + } + return true +} + +func UpdateBankCard(bankCard BankCardInfo) bool { + o := orm.NewOrm() + _, err := o.Update(&bankCard) + if err != nil { + logs.Error("update bank card fail: ", err) + return false + } + return true +} diff --git a/models/system/menu_info.go b/models/system/menu_info.go new file mode 100644 index 0000000..f5dea36 --- /dev/null +++ b/models/system/menu_info.go @@ -0,0 +1,179 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/8/21 9:33 + ** @Author : yuebin + ** @File : menu_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/8/21 9:33 + ** @Software: GoLand +****************************************************/ +package system + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type MenuInfo struct { + Id int + MenuOrder int + MenuUid string + FirstMenu string + SecondMenu string + Creater string + Status string + CreateTime string + UpdateTime string +} + +// 实现排序的三个接口函数 +type MenuInfoSlice []MenuInfo + +func (m MenuInfoSlice) Len() int { + return len(m) +} + +func (m MenuInfoSlice) Swap(i, j int) { + m[i], m[j] = m[j], m[i] +} + +func (m MenuInfoSlice) Less(i, j int) bool { + return m[i].MenuOrder < m[j].MenuOrder //从小到大排序 +} + +const MENUINFO = "menu_info" + +func InsertMenu(menuInfo MenuInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&menuInfo) + if err != nil { + logs.Error("insert new menu info fail:", err) + return false + } + return true +} + +func FirstMenuIsExists(firstMenu string) bool { + o := orm.NewOrm() + exist := o.QueryTable(MENUINFO).Filter("first_menu", firstMenu).Exist() + return exist +} + +func FirstMenuUidIsExists(firstMenUid string) bool { + o := orm.NewOrm() + exist := o.QueryTable(MENUINFO).Filter("menu_uid", firstMenUid).Exist() + return exist +} + +func MenuOrderIsExists(menuOrder int) bool { + o := orm.NewOrm() + exist := o.QueryTable(MENUINFO).Filter("menu_order", menuOrder).Exist() + return exist +} + +func GetMenuLen() int { + o := orm.NewOrm() + cnt, err := o.QueryTable(MENUINFO).Count() + if err != nil { + logs.Error("get menu info len length fail: ", err) + } + return int(cnt) +} + +func GetMenuInfoByMenuUid(menuUid string) MenuInfo { + o := orm.NewOrm() + var menuInfo MenuInfo + _, err := o.QueryTable(MENUINFO).Filter("menu_uid", menuUid).Limit(1).All(&menuInfo) + if err != nil { + logs.Error("get menu info by menuUid fail: ", err) + } + return menuInfo +} + +func GetMenuInfosByMenuUids(menuUids []string) []MenuInfo { + menuInfoList := make([]MenuInfo, 0) + for _, v := range menuUids { + m := GetMenuInfoByMenuUid(v) + menuInfoList = append(menuInfoList, m) + } + return menuInfoList +} + +func GetMenuInfoByMenuOrder(menuOrder int) MenuInfo { + o := orm.NewOrm() + var menuInfo MenuInfo + _, err := o.QueryTable(MENUINFO).Filter("menu_order", menuOrder).Limit(1).All(&menuInfo) + if err != nil { + logs.Error("get menu info by menu order fail: ", err) + } + return menuInfo +} + +func GetMenuAll() []MenuInfo { + o := orm.NewOrm() + var menuInfoList []MenuInfo + _, err := o.QueryTable(MENUINFO).OrderBy("-update_time").All(&menuInfoList) + if err != nil { + logs.Error("get all menu list fail:", err) + } + return menuInfoList +} + +func GetMenuOffset(displayCount, offset int) []MenuInfo { + o := orm.NewOrm() + var menuInfoList []MenuInfo + _, err := o.QueryTable(MENUINFO).Limit(displayCount, offset).All(&menuInfoList) + if err != nil { + logs.Error("get menu offset fail: ", err) + } + return menuInfoList +} + +func GetMenuOffsetByMap(params map[string]string, displayCount, offset int) []MenuInfo { + o := orm.NewOrm() + var menuInfoList []MenuInfo + qs := o.QueryTable(MENUINFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&menuInfoList) + if err != nil { + logs.Error("get menu offset by map fail: ", err) + } + return menuInfoList +} + +func GetMenuLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(MENUINFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Count() + if err != nil { + logs.Error("get menu len by map fail: ", err) + } + return int(cnt) +} + +func UpdateMenuInfo(menuInfo MenuInfo) { + o := orm.NewOrm() + cnt, err := o.Update(&menuInfo) + if err != nil { + logs.Error("update menu info fail: ", err) + } + logs.Info("update menu info success, num: ", cnt) +} + +func DeleteMenuInfo(menuUid string) { + o := orm.NewOrm() + cnt, err := o.QueryTable(MENUINFO).Filter("menu_uid", menuUid).Delete() + if err != nil { + logs.Error("delete menu info fail: ", err) + } + logs.Info("delete menu info num: ", cnt) +} diff --git a/models/system/power_info.go b/models/system/power_info.go new file mode 100644 index 0000000..1dbb63e --- /dev/null +++ b/models/system/power_info.go @@ -0,0 +1,143 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/8/28 17:59 + ** @Author : yuebin + ** @File : power_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/8/28 17:59 + ** @Software: GoLand +****************************************************/ +package system + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type PowerInfo struct { + Id int + FirstMenuUid string + SecondMenuUid string + SecondMenu string + PowerId string + PowerItem string + Creater string + Status string + CreateTime string + UpdateTime string +} + +const POWER_INFO = "power_info" + +type PowerInfoSlice []PowerInfo + +func (sm PowerInfoSlice) Len() int { + return len(sm) +} + +func (sm PowerInfoSlice) Swap(i, j int) { + sm[i], sm[j] = sm[j], sm[i] +} + +func (sm PowerInfoSlice) Less(i, j int) bool { + return sm[i].SecondMenuUid < sm[j].SecondMenuUid +} + +func PowerUidExists(powerUid string) bool { + o := orm.NewOrm() + exists := o.QueryTable(POWER_INFO).Filter("power_id", powerUid).Exist() + return exists +} + +func InsertPowerInfo(powerInfo PowerInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&powerInfo) + if err != nil { + logs.Error("insert power info fail: ", err) + return false + } + return true +} + +func GetPower() []PowerInfo { + o := orm.NewOrm() + var powerInfo []PowerInfo + _, err := o.QueryTable(POWER_INFO).Limit(-1).All(&powerInfo) + + if err != nil { + logs.Error("get power fail: ", err) + } + return powerInfo +} + +func GetPowerById(powerId string) PowerInfo { + o := orm.NewOrm() + var powerInfo PowerInfo + _, err := o.QueryTable(POWER_INFO).Filter("power_id", powerId).Limit(1).All(&powerInfo) + if err != nil { + logs.Error("get power by id fail: ", err) + } + return powerInfo +} + +func GetPowerByIds(powerIds []string) []PowerInfo { + var powerInfoList []PowerInfo + for _, v := range powerIds { + m := GetPowerById(v) + powerInfoList = append(powerInfoList, m) + } + return powerInfoList +} + +func GetPowerItemLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(POWER_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Limit(-1).Count() + if err != nil { + logs.Error("get power item len by map fail: ", err) + } + return int(cnt) +} + +func GetPowerItemByMap(params map[string]string, displpay, offset int) []PowerInfo { + o := orm.NewOrm() + var powerItemList []PowerInfo + qs := o.QueryTable(POWER_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + + _, err := qs.Limit(displpay, offset).OrderBy("-update_time").All(&powerItemList) + if err != nil { + logs.Error("get power item by map fail: ", err) + } + return powerItemList +} + +func DeletePowerItemByPowerID(powerID string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(POWER_INFO).Filter("power_id", powerID).Delete() + if err != nil { + logs.Error("delete power item by powerID fail: ", err) + return false + } + return true +} + +func DeletePowerBySecondUid(secondUid string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(POWER_INFO).Filter("second_menu_uid", secondUid).Delete() + + if err != nil { + logs.Error("delete power by second menu uid fail: ", err) + return false + } + return true +} diff --git a/models/system/role_info.go b/models/system/role_info.go new file mode 100644 index 0000000..84a6a41 --- /dev/null +++ b/models/system/role_info.go @@ -0,0 +1,123 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/8/29 14:43 + ** @Author : yuebin + ** @File : role_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/8/29 14:43 + ** @Software: GoLand +****************************************************/ +package system + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +type RoleInfo struct { + Id int + RoleName string + RoleUid string + ShowFirstMenu string + ShowFirstUid string + ShowSecondMenu string + ShowSecondUid string + ShowPower string + ShowPowerUid string + Creater string + Status string + Remark string + CreateTime string + UpdateTime string +} + +const ROLE_INFO = "role_info" + +func GetRoleLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(ROLE_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + cnt, err := qs.Count() + if err != nil { + logs.Error("get role len by map fail: ", err) + } + return int(cnt) +} + +func GetRole() []RoleInfo { + o := orm.NewOrm() + var roleInfo []RoleInfo + _, err := o.QueryTable(ROLE_INFO).Limit(-1).OrderBy("-update_time").All(&roleInfo) + if err != nil { + logs.Error("get all role fail: ", err) + } + return roleInfo +} + +func GetRoleByMap(params map[string]string, display, offset int) []RoleInfo { + o := orm.NewOrm() + var roleInfo []RoleInfo + qs := o.QueryTable(ROLE_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(display, offset).OrderBy("-update_time").All(&roleInfo) + if err != nil { + logs.Error("get role by map fail: ", err) + } + return roleInfo +} + +func GetRoleByRoleUid(roleUid string) RoleInfo { + o := orm.NewOrm() + var roleInfo RoleInfo + _, err := o.QueryTable(ROLE_INFO).Filter("role_uid", roleUid).Limit(1).All(&roleInfo) + + if err != nil { + logs.Error("get role by role uid fail: ", err) + } + return roleInfo +} + +func RoleNameExists(roleName string) bool { + o := orm.NewOrm() + exists := o.QueryTable(ROLE_INFO).Filter("role_name", roleName).Exist() + return exists +} + +func InsertRole(roleInfo RoleInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&roleInfo) + if err != nil { + logs.Error("insert role fail: ", err) + return false + } + return true +} + +func DeleteRoleByRoleUid(roleUid string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(ROLE_INFO).Filter("role_uid", roleUid).Delete() + if err != nil { + logs.Error("delete role by role uid fail: ", err) + return false + } + return true +} + +func UpdateRoleInfo(roleInfo RoleInfo) bool { + o := orm.NewOrm() + _, err := o.Update(&roleInfo) + + if err != nil { + logs.Error("update role info fail: ", err) + return false + } + return true +} diff --git a/models/system/second_menu_info.go b/models/system/second_menu_info.go new file mode 100644 index 0000000..da9a070 --- /dev/null +++ b/models/system/second_menu_info.go @@ -0,0 +1,216 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/8/26 9:33 + ** @Author : yuebin + ** @File : second_menu_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/8/26 9:33 + ** @Software: GoLand +****************************************************/ +package system + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +const SECOND_MENU_INFO = "second_menu_info" + +type SecondMenuInfo struct { + Id int + FirstMenuOrder int + FirstMenuUid string + FirstMenu string + MenuOrder int + SecondMenuUid string + SecondMenu string + SecondRouter string + Creater string + Status string + CreateTime string + UpdateTime string +} + +type SecondMenuSlice []SecondMenuInfo + +func (sm SecondMenuSlice) Len() int { + return len(sm) +} + +func (sm SecondMenuSlice) Swap(i, j int) { + sm[i], sm[j] = sm[j], sm[i] +} + +func (sm SecondMenuSlice) Less(i, j int) bool { + if sm[i].FirstMenuOrder == sm[j].FirstMenuOrder { + return sm[i].MenuOrder < sm[j].MenuOrder + } + return sm[i].FirstMenuOrder < sm[j].FirstMenuOrder +} + +func GetSecondMenuLen() int { + o := orm.NewOrm() + cnt, err := o.QueryTable(SECOND_MENU_INFO).Count() + if err != nil { + logs.Error("get second meun len fail: ", err) + } + return int(cnt) +} + +func GetSecondMenuInfoByMenuOrder(menuOrder int, firstMenuUid string) SecondMenuInfo { + o := orm.NewOrm() + var secondMenuInfo SecondMenuInfo + _, err := o.QueryTable(SECOND_MENU_INFO).Filter("first_menu_uid", firstMenuUid).Filter("menu_order", menuOrder).Limit(1).All(&secondMenuInfo) + if err != nil { + logs.Error("get second menu info by menu order fail: ", err) + } + return secondMenuInfo +} + +func GetSecondMenuLenByFirstMenuUid(firstMenuUid string) int { + o := orm.NewOrm() + cnt, err := o.QueryTable(SECOND_MENU_INFO).Filter("first_menu_uid", firstMenuUid).Count() + if err != nil { + logs.Error("get second menu len by first menu uid fail: ", err) + } + return int(cnt) +} + +func GetSecondMenuList() []SecondMenuInfo { + o := orm.NewOrm() + var secondMenuList []SecondMenuInfo + _, err := o.QueryTable(SECOND_MENU_INFO).Limit(-1).OrderBy("-update_time").All(&secondMenuList) + if err != nil { + logs.Error("get second menu list fail: ", err) + } + return secondMenuList +} + +func GetSecondMenuInfoBySecondMenuUid(secondMenuUid string) SecondMenuInfo { + o := orm.NewOrm() + var secondMenuInfo SecondMenuInfo + _, err := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu_uid", secondMenuUid).Limit(1).All(&secondMenuInfo) + if err != nil { + logs.Error("get scond menu info by second menu uid fail: ", err) + } + return secondMenuInfo +} + +func GetSecondMenuInfoBySecondMenuUids(secondMenuUids []string) []SecondMenuInfo { + secondMenuInfoList := make([]SecondMenuInfo, 0) + for _, v := range secondMenuUids { + sm := GetSecondMenuInfoBySecondMenuUid(v) + secondMenuInfoList = append(secondMenuInfoList, sm) + } + return secondMenuInfoList +} + +func GetSecondMenuListByFirstMenuUid(firstMenuUid string) []SecondMenuInfo { + o := orm.NewOrm() + var secondMenuList []SecondMenuInfo + _, err := o.QueryTable(SECOND_MENU_INFO).Filter("first_menu_uid", firstMenuUid).Limit(-1).OrderBy("-update_time").All(&secondMenuList) + if err != nil { + logs.Error("get second menu list by first menu uid fail: ", err) + } + return secondMenuList +} + +func GetSecondMenuLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(SECOND_MENU_INFO) + for k, v := range params { + qs = qs.Filter(k, v) + } + cnt, err := qs.Limit(-1).Count() + if err != nil { + logs.Error("get second menu len by map fail: ", err) + } + return int(cnt) +} + +func GetSecondMenuByMap(params map[string]string, displayCount, offset int) []SecondMenuInfo { + o := orm.NewOrm() + var secondMenuList []SecondMenuInfo + qs := o.QueryTable(SECOND_MENU_INFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Limit(displayCount, offset).OrderBy("-update_time").All(&secondMenuList) + if err != nil { + logs.Error("get second menu by map fail: ", err) + } + return secondMenuList +} +func InsertSecondMenu(secondMenuInfo SecondMenuInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&secondMenuInfo) + if err != nil { + logs.Error("insert second menu fail: ", err) + return false + } + return true +} + +func SecondMenuIsExists(seconfMenu string) bool { + o := orm.NewOrm() + exist := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu", seconfMenu).Exist() + return exist +} + +func SecondMenuUidIsExists(secondMenuUid string) bool { + o := orm.NewOrm() + exist := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu_uid", secondMenuUid).Exist() + return exist +} + +func SecondRouterExists(secondRouter string) bool { + o := orm.NewOrm() + exist := o.QueryTable(SECOND_MENU_INFO).Filter("second_router", secondRouter).Exist() + return exist +} + +func DeleteSecondMenuByFirstMenuUid(firstMenuUid string) bool { + o := orm.NewOrm() + num, err := o.QueryTable(SECOND_MENU_INFO).Filter("first_menu_uid", firstMenuUid).Delete() + if err != nil { + logs.Error("delete second menu by first menu uid fail: ", err) + return false + } + logs.Info("delete second menu by first menu uid success, num: ", num) + return true +} + +func DeleteSecondMenuBySecondMenuUid(secondMenuUid string) bool { + o := orm.NewOrm() + num, err := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu_uid", secondMenuUid).Delete() + if err != nil { + logs.Error("delete second menu by second menu uid fail: ", err) + return false + } + logs.Info("delete second menu by second menu uid success, num: ", num) + return true +} + +func UpdateSecondMenuOrderBySecondUid(secondUid string, order int) { + o := orm.NewOrm() + _, err := o.QueryTable(SECOND_MENU_INFO).Filter("second_menu_uid", secondUid).Update(orm.Params{"menu_order": order}) + if err != nil { + logs.Error("update second menu order by second menu uid fail: ", err) + } +} + +func UpdateSecondMenu(secondMenu SecondMenuInfo) { + o := orm.NewOrm() + _, err := o.Update(&secondMenu) + if err != nil { + logs.Error("update second menu for first order fail: ", err) + } +} + +func SecondMenuExistByMenuOrder(menuOrder int) bool { + o := orm.NewOrm() + exist := o.QueryTable(SECOND_MENU_INFO).Filter("menu_order", menuOrder).Exist() + return exist +} diff --git a/models/user/user_info.go b/models/user/user_info.go new file mode 100644 index 0000000..70d3f2c --- /dev/null +++ b/models/user/user_info.go @@ -0,0 +1,146 @@ +/*************************************************** + ** @Desc : This file for ... + ** @Time : 2019/8/9 14:02 + ** @Author : yuebin + ** @File : user_info + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/8/9 14:02 + ** @Software: GoLand +****************************************************/ +package user + +import ( + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +const ( + USERINFO = "user_info" +) + +type UserInfo struct { + Id int + UserId string + Passwd string + Nick string + Remark string + Ip string + Status string + Role string + RoleName string + CreateTime string + UpdateTime string +} + +func GetUserInfoByUserID(userID string) UserInfo { + o := orm.NewOrm() + var userInfo UserInfo + err := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userID).One(&userInfo) + if err != nil { + logs.Error("get user info fail: ", err) + } + return userInfo +} + +func GetOperatorByMap(params map[string]string, displayCount, offset int) []UserInfo { + o := orm.NewOrm() + var userInfo []UserInfo + qs := o.QueryTable(USERINFO) + for k, v := range params { + if len(v) > 0 { + qs = qs.Filter(k, v) + } + } + _, err := qs.Exclude("status", "delete").Limit(displayCount, offset).OrderBy("-update_time").All(&userInfo) + + if err != nil { + logs.Error("get operator by map fail: ", err) + } + return userInfo +} + +func GetOperatorLenByMap(params map[string]string) int { + o := orm.NewOrm() + qs := o.QueryTable(USERINFO) + for k, v := range params { + qs = qs.Filter(k, v) + } + cnt, err := qs.Exclude("status", "delete").Count() + if err != nil { + logs.Error("get operator len by map fail: ", err) + } + return int(cnt) +} + +func UpdateUserInfoIP(userInfo UserInfo) { + o := orm.NewOrm() + num, err := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userInfo.UserId).Update(orm.Params{"ip": userInfo.Ip}) + if err != nil { + logs.Error("%s update user info ip fail: %v", userInfo.UserId, err) + } else { + logs.Info("%s update user info ip success, num: %d", userInfo.UserId, num) + } +} + +func UpdateUserInfoPassword(userInfo UserInfo) { + o := orm.NewOrm() + num, err := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userInfo.UserId).Update(orm.Params{"passwd": userInfo.Passwd}) + if err != nil { + logs.Error("%s update user info password fail: %v", userInfo.UserId, err) + } else { + logs.Info("%s update user info password success, update num: %d", userInfo.UserId, num) + } +} + +func UpdateUserInfo(userInfo UserInfo) { + o := orm.NewOrm() + if num, err := o.Update(&userInfo); err != nil { + logs.Error("update user info fail: ", err) + } else { + logs.Info("update user info success, num: ", num) + } +} + +func UpdateStauts(status, userId string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(USERINFO).Filter("user_id", userId).Update(orm.Params{"status": status}) + + if err != nil { + logs.Error("update status fail: ", err) + return false + } + return true +} + +func UserInfoExistByUserId(userId string) bool { + o := orm.NewOrm() + exist := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userId).Exist() + return exist +} + +func NickIsExist(nick string) bool { + o := orm.NewOrm() + exist := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("nick", nick).Exist() + return exist +} + +func InsertUser(userInfo UserInfo) bool { + o := orm.NewOrm() + _, err := o.Insert(&userInfo) + if err != nil { + logs.Error("insert user fail: ", err) + return false + } + return true +} + +func DeleteUserByUserId(userId string) bool { + o := orm.NewOrm() + _, err := o.QueryTable(USERINFO).Exclude("status", "delete").Filter("user_id", userId).Update(orm.Params{"status": "delete"}) + + if err != nil { + logs.Error("delete user by userId fail: ", err) + return false + } + return true +} diff --git a/notify/order_notify.go b/notify/order_notify.go new file mode 100644 index 0000000..26efd95 --- /dev/null +++ b/notify/order_notify.go @@ -0,0 +1,170 @@ +package notify + +import ( + "fmt" + "gateway/conf" + "gateway/message" + "gateway/models/notify" + "gateway/utils" + "github.com/beego/beego/v2/client/httplib" + "github.com/beego/beego/v2/core/logs" + "github.com/go-stomp/stomp" + "os" + "strings" + "time" +) + +type OrderNotifyTask struct { + Delay *time.Timer + MerchantOrderId string + BankOrderId string + FirstNotifyTime string + NotifyTimes int + LimitTimes int + Status string //success-通知成功,其余的为待通知或者通知未完成 +} + +const ( + LimitTimes = 5 //最多通知5次 +) + +// SendOrderNotify 给商户发送订单结果 +func SendOrderNotify(bankOrderId string) { + if !notify.NotifyInfoExistByBankOrderId(bankOrderId) { + logs.Error("该订单不存在回调内容,bankOrderId= " + bankOrderId) + return + } + + notifyInfo := notify.GetNotifyInfoByBankOrderId(bankOrderId) + if notifyInfo.Status == "success" { + logs.Info(fmt.Sprintf("该订单= %s,已经回调", bankOrderId)) + return + } + + notifyInfo.Times += 1 + notifyInfo.UpdateTime = utils.GetBasicDateTime() + + req := httplib.Post(notifyInfo.Url) + response, err := req.String() + + if err == nil && ("success" == response || "SUCCESS" == response) { + if strings.Contains(strings.ToLower(response), "success") { + notifyInfo.Status = "success" + if notify.UpdateNotifyInfo(notifyInfo) { + logs.Info("订单回调成功, bankOrderId=", bankOrderId) + } else { + logs.Error("订单回调成功,但是更新数据库失败, bankOrderId=", bankOrderId) + } + } else { + logs.Notice("订单已经回调,商户已经收到了回调通知,但是返回值错误: ", response) + } + } else { + if notifyInfo.Times > LimitTimes { + logs.Notice(fmt.Sprintf("该订单= %s,已经超过了回调次数", bankOrderId)) + } else { + minute := GetOrderNotifyMinute(notifyInfo.Times) + logs.Info(fmt.Sprintf("bankOrderId = %s, 进行第 %d 次回调,本次延时时间为:%d", notifyInfo.BankOrderId, notifyInfo.Times, minute)) + task := OrderNotifyTask{Delay: time.NewTimer(time.Duration(minute) * time.Minute), + MerchantOrderId: notifyInfo.MerchantOrderId, BankOrderId: notifyInfo.BankOrderId, FirstNotifyTime: notifyInfo.CreateTime, + NotifyTimes: notifyInfo.Times, LimitTimes: LimitTimes, Status: notifyInfo.Status} + go OrderNotifyTimer(task) + if !notify.UpdateNotifyInfo(notifyInfo) { + logs.Error("订单回调失败,数据库更新失败:" + bankOrderId) + } + } + } +} + +func GetOrderNotifyMinute(times int) int { + cur := 0 + switch times { + case 0: + cur = 0 + break + case 1: + cur = 1 + break + case 2: + cur = 2 + break + case 3: + cur = 5 + break + case 4: + cur = 15 + break + case 5: + cur = 30 + break + default: + cur = 45 + break + } + return cur +} + +func OrderNotifyTimer(task OrderNotifyTask) { + for { + select { + case <-task.Delay.C: + SendOrderNotify(task.BankOrderId) + return + case <-time.After(time.Minute * 70): + logs.Notice("订单回调延时执行,70分钟没有执行") + return + } + } +} + +// CreateOrderDelayQueue 读取一小时之内,未发送成功,并且还没有到达回调限制次数的记录读取,存入延迟队列 +func CreateOrderDelayQueue() { + params := make(map[string]interface{}) + params["times__lte"] = LimitTimes + params["create_time__gte"] = utils.GetDateTimeBeforeHours(48) + notifyList := notify.GetNotifyInfosNotSuccess(params) + for _, nf := range notifyList { + minute := GetOrderNotifyMinute(nf.Times) + task := OrderNotifyTask{ + Delay: time.NewTimer(time.Duration(minute) * time.Minute), + MerchantOrderId: nf.MerchantOrderId, + BankOrderId: nf.BankOrderId, + FirstNotifyTime: nf.CreateTime, + NotifyTimes: nf.Times, + LimitTimes: LimitTimes, + Status: nf.Status, + } + go OrderNotifyTimer(task) + } +} + +// CreateOrderNotifyConsumer 创建订单回调消费者 +func CreateOrderNotifyConsumer() { + CreateOrderDelayQueue() + //启动定时任务 + conn := message.GetActiveMQConn() + if conn == nil { + logs.Error("启动消息队列消费者失败....") + os.Exit(1) + } + + logs.Notice("订单回调消息队列启动成功......") + orderNotify, err := conn.Subscribe(conf.MqOrderNotify, stomp.AckClient) + if err != nil { + logs.Error("订阅订单回调失败......") + os.Exit(1) + } + for { + select { + case v := <-orderNotify.C: + if v != nil { + bankOrderId := string(v.Body) + go SendOrderNotify(bankOrderId) + //应答,重要 + err := conn.Ack(v) + if err != nil { + logs.Error("消息应答失败!") + } + } + } + } +} diff --git a/notify/payfor_notify.go b/notify/payfor_notify.go new file mode 100644 index 0000000..a3131f1 --- /dev/null +++ b/notify/payfor_notify.go @@ -0,0 +1 @@ +package notify diff --git a/pay_for/payfor_service.go b/pay_for/payfor_service.go new file mode 100644 index 0000000..4ffb486 --- /dev/null +++ b/pay_for/payfor_service.go @@ -0,0 +1,370 @@ +/*************************************************** + ** @Desc : 代付处理 + ** @Time : 2019/11/28 18:52 + ** @Author : yuebin + ** @File : payfor_service + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/28 18:52 + ** @Software: GoLand +****************************************************/ +package pay_for + +import ( + "context" + "encoding/json" + "fmt" + "gateway/conf" + "gateway/message" + "gateway/models/accounts" + "gateway/models/merchant" + "gateway/models/payfor" + "gateway/models/road" + "gateway/response" + "gateway/supplier/third_party" + "gateway/utils" + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" + "github.com/rs/xid" + "strconv" + "strings" +) + +/** +** 程序自动代付 + */ +func AutoPayFor(params map[string]string, giveType string) *response.PayForResponse { + + payForResponse := new(response.PayForResponse) + + merchantInfo := merchant.GetMerchantByPasskey(params["merchantKey"]) + if !utils.Md5Verify(params, merchantInfo.MerchantSecret) { + logs.Error(fmt.Sprintf("下游商户代付请求,签名失败,商户信息: %+v", merchantInfo)) + payForResponse.ResultCode = "01" + payForResponse.ResultMsg = "下游商户代付请求,签名失败。" + return payForResponse + } else { + res, msg := checkSettAmount(params["amount"]) + if !res { + payForResponse.ResultCode = "01" + payForResponse.ResultMsg = msg + + return payForResponse + } + + exist := payfor.IsExistPayForByMerchantOrderId(params["merchantOrderId"]) + if exist { + logs.Error(fmt.Sprintf("代付订单号重复:merchantOrderId = %s", params["merchantOrderId"])) + payForResponse.ResultMsg = "商户订单号重复" + payForResponse.ResultCode = "01" + + return payForResponse + } + + settAmount, err := strconv.ParseFloat(params["amount"], 64) + if err != nil { + logs.Error("代付的金额错误:", err) + payForResponse.ResultMsg = "代付金额错误" + payForResponse.ResultCode = "01" + return payForResponse + } + + p := payfor.PayforInfo{ + PayforUid: "pppp" + xid.New().String(), + MerchantUid: merchantInfo.MerchantUid, + MerchantName: merchantInfo.MerchantName, + MerchantOrderId: params["merchantOrderId"], + BankOrderId: "4444" + xid.New().String(), + PayforAmount: settAmount, + Status: conf.PAYFOR_COMFRIM, + BankAccountName: params["realname"], + BankAccountNo: params["cardNo"], + BankAccountType: params["accType"], + City: params["city"], + Ares: params["province"] + params["city"], + PhoneNo: params["mobileNo"], + GiveType: giveType, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + RequestTime: utils.GetBasicDateTime(), + } + + // 获取银行编码和银行名称 + p.BankCode = utils.GetBankCodeByBankCardNo(p.BankAccountNo) + p.BankName = utils.GetBankNameByCode(p.BankCode) + + if !payfor.InsertPayfor(p) { + payForResponse.ResultCode = "01" + payForResponse.ResultMsg = "代付记录插入失败" + } else { + payForResponse.ResultMsg = "代付订单已生成" + payForResponse.ResultCode = "00" + payForResponse.SettAmount = params["amount"] + payForResponse.MerchantOrderId = params["MerchantOrderId"] + + p = payfor.GetPayForByBankOrderId(p.BankOrderId) + + if findPayForRoad(p) { + payForResponse.ResultCode = "00" + payForResponse.ResultMsg = "银行处理中" + } else { + payForResponse.ResultCode = "01" + payForResponse.ResultMsg = "系统处理失败" + } + + } + + return payForResponse + } + +} + +/** +* 返回1表示需要手动打款,返回0表示银行已经受理,-1表示系统处理失败 + */ +func findPayForRoad(p payfor.PayforInfo) bool { + + m := merchant.GetMerchantByUid(p.MerchantUid) + // 检查商户是否设置了自动代付 + if m.AutoPayFor == conf.NO || m.AutoPayFor == "" { + logs.Notice(fmt.Sprintf("该商户uid=%s, 没有开通自动代付功能", p.MerchantUid)) + p.Type = conf.PAYFOR_HAND + payfor.UpdatePayFor(p) + } else { + + if m.SinglePayForRoadUid != "" { + p.RoadUid = m.SinglePayForRoadUid + p.RoadName = m.SinglePayForRoadName + } else { + roadPoolInfo := road.GetRoadPoolByRoadPoolCode(m.RollPayForRoadCode) + roadUids := strings.Split(roadPoolInfo.RoadUidPool, "||") + roadInfoList := road.GetRoadInfosByRoadUids(roadUids) + if len(roadUids) == 0 || len(roadInfoList) == 0 { + logs.Error(fmt.Sprintf("通道轮询池=%s, 没有配置通道", m.RollPayForRoadCode)) + } else { + p.RoadUid = roadInfoList[0].RoadUid + p.RoadName = roadInfoList[0].RoadName + } + } + + if !payfor.UpdatePayFor(p) { + return false + } + + if len(p.RoadUid) > 0 { + roadInfo := road.GetRoadInfoByRoadUid(p.RoadUid) + p.PayforFee = roadInfo.SettleFee + p.PayforTotalAmount = p.PayforFee + p.PayforAmount + + if m.PayforFee > conf.ZERO { + logs.Info(fmt.Sprintf("商户uid=%s,有单独的代付手续费。", m.MerchantUid)) + p.PayforFee = m.PayforFee + p.PayforTotalAmount = p.PayforFee + p.PayforAmount + } + + if !payfor.UpdatePayFor(p) { + return false + } + + if p.GiveType == conf.SELF_HELP { + if !MerchantSelf(p) { + return false + } + } else { + if !SendPayFor(p) { + return false + } + } + } else { + p.Status = conf.PAYFOR_FAIL + if !payfor.UpdatePayFor(p) { + return false + } + p.ResponseContent = "没有设置代付通道" + } + } + + return true +} + +/** +** 商户自己体现 + */ +func MerchantSelf(p payfor.PayforInfo) bool { + o := orm.NewOrm() + + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + p.UpdateTime = utils.GetBasicDateTime() + p.Status = conf.PAYFOR_BANKING + p.RequestTime = utils.GetBasicDateTime() + p.IsSend = conf.YES + if _, err := txOrm.Update(&p); err != nil { + return err + } + + RequestPayFor(p) + + return nil + + }); err != nil { + return false + } + return true +} + +func SendPayFor(p payfor.PayforInfo) bool { + o := orm.NewOrm() + + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + var account accounts.AccountInfo + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", p.MerchantUid).QueryRow(&account); err != nil || account.AccountUid == "" { + logs.Error("send payfor select account fail:", err) + return err + } + + //支付金额不足,将直接判定为失败,不往下面邹逻辑了 + if account.SettleAmount-account.PayforAmount < p.PayforAmount+p.PayforFee { + p.Status = conf.PAYFOR_FAIL + p.UpdateTime = utils.GetBasicDateTime() + + if _, err := txOrm.Update(&p); err != nil { + return err + } else { + return nil + } + } + + account.UpdateTime = utils.GetBasicDateTime() + account.PayforAmount = account.PayforAmount + p.PayforAmount + p.PayforFee + + if _, err := txOrm.Update(&account); err != nil { + logs.Error(fmt.Sprintf("商户uid=%s,在发送代付给上游的处理中,更新账户表出错, err: %s", p.MerchantUid, err)) + return err + } + + p.IsSend = conf.YES + p.Status = conf.PAYFOR_BANKING //变为银行处理中 + p.GiveType = conf.PAYFOR_ROAD + p.RequestTime = utils.GetBasicDateTime() + p.UpdateTime = utils.GetBasicDateTime() + + if _, err := txOrm.Update(&p); err != nil { + logs.Error(fmt.Sprintf("商户uid=%s,在发送代付给上游的处理中,更代付列表出错, err:%s", p.MerchantUid, err)) + return err + } + + RequestPayFor(p) + + return nil + }); err != nil { + return false + } + return true +} + +func RequestPayFor(p payfor.PayforInfo) { + if p.RoadUid == "" { + return + } + p.Type = conf.PAYFOR_ROAD + roadInfo := road.GetRoadInfoByRoadUid(p.RoadUid) + supplierCode := roadInfo.ProductUid + supplier := third_party.GetPaySupplierByCode(supplierCode) + res := supplier.PayFor(p) + logs.Info(fmt.Sprintf("代付uid=%s,上游处理结果为:%s", p.PayforUid, res)) + //将代付订单号发送到消息队列 + message.SendMessage(conf.MQ_PAYFOR_QUERY, p.BankOrderId) +} + +/** +* 代付结果查询 + */ +func PayForResultQuery(params map[string]string) string { + + query := make(map[string]string) + query["merchantOrderId"] = params["merchantOrderId"] + merchantInfo := merchant.GetMerchantByPasskey(params["merchantKey"]) + if !utils.Md5Verify(params, merchantInfo.MerchantSecret) { + query["resultMsg"] = "签名错误" + query["settStatus"] = "03" + query["sign"] = utils.GetMD5Sign(params, utils.SortMap(params), merchantInfo.MerchantSecret) + } else { + payForInfo := payfor.GetPayForByMerchantOrderId(params["merchantOrderId"]) + if payForInfo.BankOrderId == "" { + query["resultMsg"] = "不存在这样的代付订单" + query["settStatus"] = "03" + query["sign"] = utils.GetMD5Sign(params, utils.SortMap(params), merchantInfo.MerchantSecret) + } else { + switch payForInfo.Status { + case conf.PAYFOR_BANKING: + query["resultMsg"] = "打款中" + query["settStatus"] = "02" + case conf.PAYFOR_SOLVING: + query["resultMsg"] = "打款中" + query["settStatus"] = "02" + case conf.PAYFOR_COMFRIM: + query["resultMsg"] = "打款中" + query["settStatus"] = "02" + case conf.PAYFOR_SUCCESS: + query["resultMsg"] = "打款成功" + query["settStatus"] = "00" + query["settAmount"] = strconv.FormatFloat(payForInfo.PayforAmount, 'f', 2, 64) + query["settFee"] = strconv.FormatFloat(payForInfo.PayforFee, 'f', 2, 64) + case conf.PAYFOR_FAIL: + query["resultMsg"] = "打款失败" + query["settStatus"] = "01" + } + query["sign"] = utils.GetMD5Sign(query, utils.SortMap(query), merchantInfo.MerchantSecret) + } + } + + mJson, err := json.Marshal(query) + if err != nil { + logs.Error("PayForQuery json marshal fail:", err) + return fmt.Sprintf("PayForQuery json marshal fail:%s", err.Error()) + } else { + return string(mJson) + } +} + +/** +* 商户查询余额 + */ +func BalanceQuery(params map[string]string) string { + + balanceResponse := new(response.BalanceResponse) + str := "" + merchantInfo := merchant.GetMerchantByPasskey(params["merchantKey"]) + if !utils.Md5Verify(params, merchantInfo.MerchantSecret) { + balanceResponse.ResultCode = "-1" + balanceResponse.ResultMsg = "签名错误" + mJson, _ := json.Marshal(balanceResponse) + str = string(mJson) + } else { + accountInfo := accounts.GetAccountByUid(merchantInfo.MerchantUid) + tmp := make(map[string]string) + tmp["resultCode"] = "00" + tmp["balance"] = strconv.FormatFloat(accountInfo.Balance, 'f', 2, 64) + tmp["availableAmount"] = strconv.FormatFloat(accountInfo.SettleAmount, 'f', 2, 64) + tmp["freezeAmount"] = strconv.FormatFloat(accountInfo.FreezeAmount, 'f', 2, 64) + tmp["waitAmount"] = strconv.FormatFloat(accountInfo.WaitAmount, 'f', 2, 64) + tmp["loanAmount"] = strconv.FormatFloat(accountInfo.LoanAmount, 'f', 2, 64) + tmp["payforAmount"] = strconv.FormatFloat(accountInfo.PayforAmount, 'f', 2, 64) + tmp["resultMsg"] = "查询成功" + tmp["sign"] = utils.GetMD5Sign(tmp, utils.SortMap(tmp), merchantInfo.MerchantSecret) + mJson, _ := json.Marshal(tmp) + str = string(mJson) + } + + return str +} + +func checkSettAmount(settAmount string) (bool, string) { + _, err := strconv.ParseFloat(settAmount, 64) + if err != nil { + logs.Error(fmt.Sprintf("代付金额有误,settAmount = %s", settAmount)) + return false, "代付金额有误" + } + return true, "" +} diff --git a/pay_for/payfor_solve.go b/pay_for/payfor_solve.go new file mode 100644 index 0000000..0f1460e --- /dev/null +++ b/pay_for/payfor_solve.go @@ -0,0 +1,135 @@ +package pay_for + +import ( + "context" + "errors" + "fmt" + "gateway/conf" + "gateway/models/accounts" + "gateway/models/payfor" + "gateway/utils" + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" +) + +func PayForFail(p payfor.PayforInfo) bool { + + o := orm.NewOrm() + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + var tmpForPay payfor.PayforInfo + if err := txOrm.Raw("select * from payfor_info where bank_order_id = ? for update", p.BankOrderId).QueryRow(&tmpForPay); err != nil || tmpForPay.PayforUid == "" { + + logs.Error("solve pay fail select fail:", err) + return err + } + + if tmpForPay.Status == conf.PAYFOR_FAIL || tmpForPay.Status == conf.PAYFOR_SUCCESS { + logs.Error(fmt.Sprintf("该代付订单uid=%s,状态已经是最终结果", tmpForPay.PayforUid)) + return errors.New("状态已经是最终结果") + } + //更新payfor记录的状态 + tmpForPay.Status = conf.PAYFOR_FAIL + tmpForPay.UpdateTime = utils.GetBasicDateTime() + if _, err := txOrm.Update(&tmpForPay); err != nil { + logs.Error("PayForFail update payfor_info fail: ", err) + return err + } + + var account accounts.AccountInfo + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", tmpForPay.MerchantUid).QueryRow(&account); err != nil || account.AccountUid == "" { + + logs.Error("payfor select account fail:", err) + return err + } + + account.UpdateTime = utils.GetBasicDateTime() + if account.PayforAmount < tmpForPay.PayforTotalAmount { + logs.Error(fmt.Sprintf("商户uid=%s,账户中待代付金额小于代付记录的金额", tmpForPay.MerchantUid)) + return errors.New("账户中待代付金额小于代付记录的金额") + } + //将正在打款中的金额减去 + account.PayforAmount = account.PayforAmount - tmpForPay.PayforTotalAmount + + if _, err := txOrm.Update(&account); err != nil { + logs.Error("PayForFail update account fail: ", err) + return err + } + + return nil + + }); err != nil { + return false + } + return true +} + +func PayForSuccess(p payfor.PayforInfo) bool { + o := orm.NewOrm() + + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + var tmpPayFor payfor.PayforInfo + if err := txOrm.Raw("select * from payfor_info where bank_order_id = ? for update", p.BankOrderId).QueryRow(&tmpPayFor); err != nil || tmpPayFor.PayforUid == "" { + logs.Error("payfor success select payfor fail:", err) + return err + } + if tmpPayFor.Status == conf.PAYFOR_FAIL || tmpPayFor.Status == conf.PAYFOR_SUCCESS { + logs.Error(fmt.Sprintf("该代付订单uid=#{payFor.PayforUid},已经是最终结果,不需要处理")) + return errors.New("已经是最终结果,不需要处理") + } + + tmpPayFor.UpdateTime = utils.GetBasicDateTime() + tmpPayFor.Status = conf.PAYFOR_SUCCESS + _, err := txOrm.Update(&tmpPayFor) + if err != nil { + logs.Error("PayForSuccess update payfor fail: ", err) + return err + } + + var account accounts.AccountInfo + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", tmpPayFor.MerchantUid).QueryRow(&account); err != nil || account.AccountUid == "" { + logs.Error("payfor success select account fail:", err) + return err + } + + account.UpdateTime = utils.GetBasicDateTime() + if account.PayforAmount < tmpPayFor.PayforTotalAmount { + logs.Error(fmt.Sprintf("商户uid=#{payFor.MerchantUid},账户中待代付金额小于代付记录的金额")) + return errors.New("账户中待代付金额小于代付记录的金额") + } + + //代付打款中的金额减去 + account.PayforAmount = account.PayforAmount - tmpPayFor.PayforTotalAmount + //减去余额,减去可用金额 + account.Balance = account.Balance - tmpPayFor.PayforTotalAmount + //已结算金额减去 + account.SettleAmount = account.SettleAmount - tmpPayFor.PayforTotalAmount + + if _, err := txOrm.Update(&account); err != nil { + logs.Error("PayForSuccess update account fail:", err) + return err + } + + //添加一条动账记录 + accountHistory := accounts.AccountHistoryInfo{ + AccountUid: tmpPayFor.MerchantUid, + AccountName: tmpPayFor.MerchantName, + Type: conf.SUB_AMOUNT, + Amount: tmpPayFor.PayforTotalAmount, + Balance: account.Balance, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + } + + if _, err := txOrm.Insert(&accountHistory); err != nil { + logs.Error("PayForSuccess insert account history fail: ", err) + return err + } + + return nil + }); err != nil { + return false + } + + return true +} diff --git a/query/merchant_query.go b/query/merchant_query.go new file mode 100644 index 0000000..6aa419c --- /dev/null +++ b/query/merchant_query.go @@ -0,0 +1,83 @@ +/*************************************************** + ** @Desc : 供下游订单状态查询和代付结果查询 + ** @Time : 2019/11/6 13:59 + ** @Author : yuebin + ** @File : order_query + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/6 13:59 + ** @Software: GoLand +****************************************************/ +package query + +import ( + "encoding/json" + "fmt" + "gateway/models/merchant" + "gateway/models/order" + "gateway/utils" + "github.com/beego/beego/v2/core/logs" + "github.com/beego/beego/v2/server/web" + "strings" +) + +type MerchantQueryController struct { + web.Controller +} + +type OrderQueryFailData struct { + PayKey string `json:"payKey"` + StatusCode string `json:"statusCode"` + Msg string `json:"msg"` +} + +/* +** 改接口是为下游商户提供订单查询 + */ +func (c *MerchantQueryController) OrderQuery() { + orderNo := strings.TrimSpace(c.GetString("orderNo")) + payKey := strings.TrimSpace(c.GetString("payKey")) + sign := strings.TrimSpace(c.GetString("sign")) + params := make(map[string]string) + params["orderNo"] = orderNo + params["payKey"] = payKey + + failData := new(OrderQueryFailData) + failData.StatusCode = "01" + failData.PayKey = payKey + + merchantInfo := merchant.GetMerchantByPasskey(payKey) + if merchantInfo.MerchantUid == "" || len(merchantInfo.MerchantUid) == 0 { + failData.Msg = "商户不存在,请核对payKey字段" + } + orderInfo := order.GetOrderByMerchantOrderId(orderNo) + if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 { + failData.Msg = "不存在这样的订单,请核对orderNo字段" + } + keys := utils.SortMap(params) + paySercet := merchantInfo.MerchantSecret + tmpSign := utils.GetMD5Sign(params, keys, paySercet) + if tmpSign != sign { + failData.Msg = "签名错误" + } + if failData.Msg != "" { + c.Data["json"] = failData + _ = c.ServeJSON() + return + } + p := make(map[string]string) + p["orderNo"] = orderNo + p["orderTime"] = strings.TrimSpace(strings.Replace("-", "", orderInfo.UpdateTime, -1)) + p["trxNo"] = orderInfo.BankOrderId + p["tradeStatus"] = orderInfo.Status + p["payKey"] = payKey + p["orderPrice"] = fmt.Sprintf("%.2f", orderInfo.OrderAmount) + p["factPrice"] = fmt.Sprintf("%.2f", orderInfo.FactAmount) + p["statusCode"] = "00" + keys = utils.SortMap(p) + p["sign"] = utils.GetMD5Sign(p, keys, paySercet) + s, err := json.Marshal(p) + if err != nil { + logs.Error("json marshal fail: ", err) + } + c.Data["json"] = s +} diff --git a/query/payfor_query.go b/query/payfor_query.go new file mode 100644 index 0000000..5a16b76 --- /dev/null +++ b/query/payfor_query.go @@ -0,0 +1,135 @@ +/*************************************************** + ** @Desc : 处理代付查询功能 + ** @Time : 2019/12/3 15:07 + ** @Author : yuebin + ** @File : pay_for_query + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/12/3 15:07 + ** @Software: GoLand +****************************************************/ +package query + +import ( + "fmt" + "gateway/conf" + "gateway/message" + "gateway/models/payfor" + "gateway/models/road" + "gateway/pay_for" + "gateway/supplier/third_party" + "gateway/utils" + "github.com/beego/beego/v2/core/logs" + "github.com/go-stomp/stomp" + "os" + "time" +) + +type PayForQueryTask struct { + Delay *time.Timer + MerchantOrderId string + BankOrderId string + FirstNotifyTime string + QueryTimes int + LimitTimes int + Status string +} + +const ( + PayForLimitTimes = 12 //最多查询次数 + PayForQueryInterval = 5 //时间间隔为5分钟 +) + +func PayForQueryTimer(task PayForQueryTask) { + for { + select { + case <-task.Delay.C: + PayForSupplier(task) + task.Delay.Stop() + return + //70分钟没有执行该协程,那么退出协程 + case <-time.After(time.Minute * 70): + return + } + } +} + +func PayForSupplier(task PayForQueryTask) { + logs.Info(fmt.Sprintf("执行代付查询任务:%+v", task)) + payFor := payfor.GetPayForByBankOrderId(task.BankOrderId) + roadInfo := road.GetRoadInfoByRoadUid(payFor.RoadUid) + supplier := third_party.GetPaySupplierByCode(roadInfo.ProductUid) + if supplier == nil { + logs.Error("代付查询返回supplier为空") + return + } + res, _ := supplier.PayForQuery(payFor) + if res == conf.PAYFOR_SUCCESS { + //代付成功了 + pay_for.PayForSuccess(payFor) + } else if res == conf.PAYFOR_FAIL { + //代付失败 + pay_for.PayForFail(payFor) + } else if res == conf.PAYFOR_BANKING { + //银行处理中,那么就继续执行查询,直到次数超过最大次数 + if task.QueryTimes <= task.LimitTimes { + task.QueryTimes += 1 + task.Delay = time.NewTimer(time.Duration(PayForQueryInterval) * time.Minute) + go PayForQueryTimer(task) + } else { + logs.Info(fmt.Sprintf("该代付订单已经超过最大查询次数,bankOrderId = %s", task.BankOrderId)) + } + } +} + +func payForQueryConsumer(bankOrderId string) { + exist := payfor.IsExistPayForByBankOrderId(bankOrderId) + if !exist { + logs.Error(fmt.Sprintf("代付记录不存在,bankOrderId = %s", bankOrderId)) + return + } + + payFor := payfor.GetPayForByBankOrderId(bankOrderId) + + if payFor.Status != conf.PAYFOR_BANKING { + logs.Info(fmt.Sprintf("代付状态不是银行处理中,不需要去查询,bankOrderId = %s", bankOrderId)) + return + } + + payForQueryTask := PayForQueryTask{Delay: time.NewTimer(time.Duration(PayForQueryInterval) * time.Minute), MerchantOrderId: payFor.MerchantOrderId, + BankOrderId: payFor.BankOrderId, FirstNotifyTime: utils.GetBasicDateTime(), QueryTimes: 1, LimitTimes: PayForLimitTimes, Status: payFor.Status} + + go PayForQueryTimer(payForQueryTask) +} + +// CreatePayForQueryConsumer 创建代付查询的消费者 +func CreatePayForQueryConsumer() { + //启动定时任务 + conn := message.GetActiveMQConn() + if conn == nil { + logs.Error("启动消息队列消费者失败....") + os.Exit(1) + } + + logs.Notice("代付查询消费启动成功......") + + payForQuery, err := conn.Subscribe(conf.MQ_PAYFOR_QUERY, stomp.AckClient) + if err != nil { + logs.Error("订阅代付查询失败......") + os.Exit(1) + } + + for { + select { + case v := <-payForQuery.C: + if v != nil { + bankOrderId := string(v.Body) + go payForQueryConsumer(bankOrderId) + //应答,重要 + err := conn.Ack(v) + if err != nil { + logs.Error("消息应答失败!") + } + } + } + } +} diff --git a/query/supplier_query.go b/query/supplier_query.go new file mode 100644 index 0000000..a5cb38e --- /dev/null +++ b/query/supplier_query.go @@ -0,0 +1,119 @@ +package query + +/*************************************************** + ** @Desc : 自动查询上游的支付结果 + ** @Time : 2019/11/22 23:02 + ** @Author : yuebin + ** @File : order_query + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/22 23:02 + ** @Software: GoLand +****************************************************/ + +import ( + "fmt" + "gateway/conf" + "gateway/message" + "gateway/models/order" + "gateway/supplier/third_party" + "github.com/beego/beego/v2/core/logs" + "github.com/go-stomp/stomp" + "os" + "time" +) + +type OrderQueryTask struct { + BankOrderId string + OrderQueryTimer *time.Timer + Times int +} + +const ( + DelayTime = 5 //延时时间为5分钟查询一次 + LimitTimes = 5 //最多查询5次 +) + +func SupplierOrderQueryResult(bankOrderId string) bool { + orderInfo := order.GetOrderByBankOrderId(bankOrderId) + if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 { + logs.Error("不存在这样的订单,订单查询结束") + return false + } + if orderInfo.Status != "" && orderInfo.Status != "wait" { + logs.Error(fmt.Sprintf("该订单=%s,已经处理完毕,", bankOrderId)) + return false + } + supplierCode := orderInfo.PayProductCode + supplier := third_party.GetPaySupplierByCode(supplierCode) + + if supplier == nil { + return false + } + + flag := false + //flag = supplier.PayQuery(orderInfo) + + return flag +} + +/* +** 该接口是查询上游的订单 + */ +func solveSupplierOrderQuery(task OrderQueryTask) { + bankOrderId := task.BankOrderId + + flag := SupplierOrderQueryResult(bankOrderId) + if flag { + logs.Info("订单查询成功, bankOrderId:", bankOrderId) + } else { + if task.Times <= LimitTimes { + task.Times += 1 + task.OrderQueryTimer = time.NewTimer(time.Duration(5) * time.Minute) + DelayOrderQueryQueue(task) + } else { + logs.Notice(fmt.Sprintf("订单id=%s, 已经查询超过次数", bankOrderId)) + } + } +} + +// DelayOrderQueryQueue 延时队列 +func DelayOrderQueryQueue(task OrderQueryTask) { + for { + select { + case <-task.OrderQueryTimer.C: + logs.Info(fmt.Sprintf("订单id=%s,执行第:%d 次查询", task.BankOrderId, task.Times)) + solveSupplierOrderQuery(task) + return + case <-time.After(time.Duration(2*DelayTime) * time.Minute): + return + } + } +} + +// CreateSupplierOrderQueryCuConsumer 启动消息订单查询的消息队列消费者 +func CreateSupplierOrderQueryCuConsumer() { + conn := message.GetActiveMQConn() + if conn == nil { + logs.Error("supplier order query consumer fail") + os.Exit(1) + } + logs.Notice("启动订单查询的消费者成功.....") + orderQuerySub, _ := conn.Subscribe(conf.MqOrderQuery, stomp.AckClient) + + for { + select { + case v := <-orderQuerySub.C: + if v != nil { + bankOrderId := string(v.Body) + logs.Info("消费者正在处理订单查询: " + bankOrderId) + task := OrderQueryTask{BankOrderId: bankOrderId, OrderQueryTimer: time.NewTimer(time.Second * 1), Times: 1} + DelayOrderQueryQueue(task) + //应答,重要 + err := conn.Ack(v) + if err != nil { + logs.Error("消息应答失败!") + } + } + } + } +} diff --git a/response/pay_resp.go b/response/pay_resp.go new file mode 100644 index 0000000..29f9245 --- /dev/null +++ b/response/pay_resp.go @@ -0,0 +1,36 @@ +package response + +import ( + "gateway/models/merchant" + "gateway/models/road" +) + +type PayBaseResp struct { + Params map[string]string //请求的基本参数 + ClientIP string //商户ip + MerchantInfo merchant.MerchantInfo //商户信息 + Msg string //信息 + Code int //状态码 200正常 + RoadInfo road.RoadInfo + RoadPoolInfo road.RoadPoolInfo + OrderAmount float64 + PayWayCode string + PlatformRate float64 + AgentRate float64 +} + +type ScanSuccessData struct { + OrderNo string `json:"orderNo"` + Sign string `json:"sign"` + OrderPrice string `json:"orderPrice"` + PayKey string `json:"payKey"` + PayUrl string `json:"payURL"` + StatusCode string `json:"statusCode"` + Msg string `json:"msg"` +} + +type ScanFailData struct { + PayKey string `json:"payKey"` + StatusCode string `json:"statusCode"` + Msg string `json:"msg"` +} diff --git a/response/payfor_resp.go b/response/payfor_resp.go new file mode 100644 index 0000000..4835e70 --- /dev/null +++ b/response/payfor_resp.go @@ -0,0 +1,40 @@ +package response + +/** +* 返回自动代付结果 + */ +type PayForResponse struct { + ResultCode string `json:"resultCode,omitempty"` + ResultMsg string `json:"resultMsg,omitempty"` + MerchantOrderId string `json:"merchantOrderId,omitempty"` + SettAmount string `json:"settAmount,omitempty"` + SettFee string `json:"settFee,omitempty"` + Sign string `json:"sign,omitempty"` +} + +/** +* 返回商户代付结果查询结果 + */ +type PayForQueryResponse struct { + ResultMsg string `json:"resultMsg,omitempty"` + MerchantOrderId string `json:"merchantOrderId,omitempty"` + SettAmount string `json:"settAmount,omitempty"` + SettFee string `json:"settFee,omitempty"` + SettStatus string `json:"settStatus,omitempty"` + Sign string `json:"sign,omitempty"` +} + +/** +* 返回商户查询余额结果 + */ +type BalanceResponse struct { + ResultCode string `json:"resultCode,omitempty"` + Balance string `json:"balance,omitempty"` + AvailableAmount string `json:"availableAmount,omitempty"` + FreezeAmount string `json:"freezeAmount,omitempty"` + WaitAmount string `json:"waitAmount,omitempty"` + LoanAmount string `json:"loanAmount,omitempty"` + PayforAmount string `json:"payforAmount,omitempty"` + ResultMsg string `json:"resultMsg,omitempty"` + Sign string `json:"sign,omitempty"` +} diff --git a/routers/router.go b/routers/router.go new file mode 100644 index 0000000..0a55ee0 --- /dev/null +++ b/routers/router.go @@ -0,0 +1,35 @@ +package routers + +import ( + "gateway/controllers/gateway" + "gateway/supplier/third_party" + "github.com/beego/beego/v2/server/web" +) + +func init() { + //网关处理函数 + web.Router("/gateway/scan", &gateway.ScanController{}, "*:Scan") + web.Router("/err/params", &gateway.ErrorGatewayController{}, "*:ErrorParams") + + //代付相关的接口 + web.Router("/gateway/payfor", &gateway.PayForGateway{}, "*:PayFor") + web.Router("/gateway/payfor/query", &gateway.PayForGateway{}, "*:PayForQuery") + web.Router("/gateway/balance", &gateway.PayForGateway{}, "*:Balance") + web.Router("/gateway/supplier/payfor/query", &gateway.PayForGateway{}, "*:QuerySupplierPayForResult") + web.Router("/solve/payfor/result", &gateway.PayForGateway{}, "*:SolvePayForResult") + + // 接收回调 + web.Router("/daili/notify", &third_party.DaiLiImpl{}, "*:PayNotify") + web.Router("/mfcard/notify", &third_party.MFCardImpl{}, "*:PayNotify") + web.Router("/mfcard/test", &third_party.MFCardImpl{}, "*:Test") + + web.Router("/mfcard/notifyV2", &third_party.MFCardV2Impl{}, "*:PayNotify") + + web.Router("/gateway/supplier/order/query", &gateway.OrderController{}, "*:OrderQuery") + web.Router("/gateway/update/order", &gateway.OrderController{}, "*:OrderUpdate") + + //网关可视化 + web.Router("/order/create", &gateway.OrderController{}, "*:OrderCreate") + web.Router("/order/cardsuit", &gateway.OrderController{}, "*:CardSuit") + +} diff --git a/service/base_service.go b/service/base_service.go new file mode 100644 index 0000000..5961ad9 --- /dev/null +++ b/service/base_service.go @@ -0,0 +1,210 @@ +package service + +import ( + "context" + "gateway/conf" + "gateway/models/merchant" + "gateway/models/order" + "gateway/response" + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" + "strconv" + "strings" +) + +// GetMerchantInfoByUID 获取商户信息 +func GetMerchantInfoByUID(params map[string]string) *response.PayBaseResp { + c := new(response.PayBaseResp) + c.Params = make(map[string]string) + c.Params = params + merchantInfo := merchant.GetMerchantByUid(params["MerchantUid"]) + if merchantInfo.MerchantUid == "" || len(merchantInfo.MerchantUid) == 0 { + c.Code = -1 + c.Msg = "商户不存在,或者paykey有误,请联系管理员" + } else if merchantInfo.Status != conf.ACTIVE { + c.Code = -1 + c.Msg = "商户状态已经被冻结或者被删除,请联系管理员!" + } else { + c.MerchantInfo = merchantInfo + } + + return c +} + +// GetMerchantInfo 获取商户信息 +func GetMerchantInfo(params map[string]string) *response.PayBaseResp { + + c := new(response.PayBaseResp) + c.Params = make(map[string]string) + c.Params = params + + merchantInfo := merchant.GetMerchantByPasskey(params["payKey"]) + + if merchantInfo.MerchantUid == "" || len(merchantInfo.MerchantUid) == 0 { + c.Code = -1 + c.Msg = "商户不存在,或者paykey有误,请联系管理员" + } else if merchantInfo.Status != conf.ACTIVE { + c.Code = -1 + c.Msg = "商户状态已经被冻结或者被删除,请联系管理员!" + } else { + c.MerchantInfo = merchantInfo + } + + return c +} + +func JudgeParams(c *response.PayBaseResp) *response.PayBaseResp { + //c.ReturnUrlIsValid() + c = OrderIsValid(c) + c = NotifyUrlIsValid(c) + c = OsTypeIsValid(c) + c = PayWayCodeIsValid(c) + c = ProductIsValid(c) + c = OrderPeriodIsValid(c) + //c = IpIsWhite() + c = OrderPriceIsValid(c) + + return c +} + +// InsertOrderAndOrderProfit 插入支付订单记录和订单利润记录,保证一致性 +func InsertOrderAndOrderProfit(orderInfo order.OrderInfo, orderProfitInfo order.OrderProfitInfo) bool { + o := orm.NewOrm() + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + if _, err := txOrm.Insert(&orderInfo); err != nil { + logs.Error("insert orderInfo fail: ", err) + return err + } + if _, err := txOrm.Insert(&orderProfitInfo); err != nil { + logs.Error("insert orderProfit fail: ", err) + return err + } + + return nil + + }); err != nil { + return false + } + return true +} + +/** +** 判断跳转地址是否符合规则 + */ +func ReturnUrlIsValid(c *response.PayBaseResp) *response.PayBaseResp { + if c.Params["returnUrl"] == "" || len(c.Params["returnUrl"]) == 0 { + c.Code = -1 + c.Msg = "支付成功后跳转地址不能为空" + } + return c +} + +/** +** 判断回调地址是否符合规则 + */ +func NotifyUrlIsValid(c *response.PayBaseResp) *response.PayBaseResp { + if c.Params["notifyUrl"] == "" || len(c.Params["notifyUrl"]) == 0 { + c.Code = -1 + c.Msg = "支付成功订单回调地址不能空位" + } + + return c +} + +/** +** 判断设备类型是否符合规则 + */ +func OsTypeIsValid(c *response.PayBaseResp) *response.PayBaseResp { + if c.Params["osType"] == "" || len(c.Params["osType"]) == 0 { + c.Code = -1 + c.Msg = "支付设备系统类型不能为空,默认填写\"1\"即可" + } + + return c +} + +/** +** 判断支付类型字段是否符合规则 + */ +func PayWayCodeIsValid(c *response.PayBaseResp) *response.PayBaseResp { + if c.Params["payWayCode"] == "" || len(c.Params["payWayCode"]) == 0 { + c.Code = -1 + c.Msg = "支付类型字段不能为空" + return c + } + payWayCode := c.Params["payWayCode"] + if !(strings.Contains(payWayCode, "SCAN") || payWayCode == "CARD_DH") { + c.Code = -1 + c.Msg = "扫码支付不支持这种支付类型" + } else { + scanPayWayCodes := conf.GetScanPayWayCodes() + for _, v := range scanPayWayCodes { + if c.Params["payWayCode"] == v { + c.PayWayCode = strings.Replace(c.Params["payWayCode"], "-", "_", -1) + return c + } + } + c.Code = -1 + c.Msg = "不存在这种支付类型,请仔细阅读对接文档" + } + + return c +} + +func ProductIsValid(c *response.PayBaseResp) *response.PayBaseResp { + if c.Params["productName"] == "" || len(c.Params["productName"]) == 0 { + c.Code = -1 + c.Msg = "商品描述信息字段不能为空" + } + + return c +} + +func OrderPeriodIsValid(c *response.PayBaseResp) *response.PayBaseResp { + if c.Params["orderPeriod"] == "" || len(c.Params["orderPeriod"]) == 0 { + c.Code = -1 + c.Msg = "订单过期时间不能为空,默认填写\"1\"即可" + } + + return c +} + +// 判断订单金额 +func OrderPriceIsValid(c *response.PayBaseResp) *response.PayBaseResp { + if c.Params["orderPrice"] == "" || len(c.Params["orderPrice"]) == 0 { + c.Code = -1 + c.Msg = "订单金额不能为空" + return c + } + + a, err := strconv.ParseFloat(c.Params["orderPrice"], 64) + if err != nil { + logs.Error("order price is invalid: ", c.Params["orderPrice"]) + c.Code = -1 + c.Msg = "订单金额非法" + } + c.OrderAmount = a + + return c +} + +// 判断金额订单号是否为空或者有重复 +func OrderIsValid(c *response.PayBaseResp) *response.PayBaseResp { + if c.Params["orderNo"] == "" || len(c.Params["orderNo"]) == 0 { + c.Code = -1 + c.Msg = "商户订单号不能为空" + return c + } + if order.OrderNoIsEixst(c.Params["orderNo"]) { + c.Code = -1 + c.Msg = "商户订单号重复" + } + + return c +} + +// 判断ip是否在白名单中 +func IpIsWhite() bool { + //TODO + return true +} diff --git a/service/pay_service.go b/service/pay_service.go new file mode 100644 index 0000000..0d09e69 --- /dev/null +++ b/service/pay_service.go @@ -0,0 +1,254 @@ +package service + +/*************************************************** + ** @Desc : 处理网关模块的一些需要操作数据库的功能 + ** @Time : 2019/12/7 16:40 + ** @Author : yuebin + ** @File : gateway_solve + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/12/7 16:40 + ** @Software: GoLand +****************************************************/ +import ( + "fmt" + "gateway/conf" + "gateway/models/merchant" + "gateway/models/order" + "gateway/models/road" + "gateway/response" + "gateway/supplier" + "gateway/utils" + "github.com/beego/beego/v2/core/logs" + "github.com/rs/xid" + "strings" + "time" +) + +// ChooseRoad 选择通道 +func ChooseRoad(c *response.PayBaseResp) *response.PayBaseResp { + payWayCode := c.Params["payWayCode"] + merchantUid := c.MerchantInfo.MerchantUid + //通道配置信息 + deployInfo := merchant.GetMerchantDeployByUidAndPayType(merchantUid, payWayCode) + + if deployInfo.MerchantUid == "" { + c.Code = -1 + c.Msg = "该商户没有配置通道信息" + return c + } + + singleRoad := road.GetRoadInfoByRoadUid(deployInfo.SingleRoadUid) + c.RoadPoolInfo = road.GetRoadPoolByRoadPoolCode(deployInfo.RollRoadCode) + if msg, ok := RoadIsValid(singleRoad, c); ok { + c.RoadInfo = singleRoad + c.PlatformRate = deployInfo.SingleRoadPlatformRate + c.AgentRate = deployInfo.SingleRoadAgentRate + return c + } else { + c.Code = -1 + c.Msg = msg + } + //如果单通道没有有效的,那么寻找通道池里面的通道 + if c.RoadPoolInfo.RoadPoolCode == "" { + c.Code = -1 + c.Msg = "该商户没有配置通道" + return c + } + roadUids := strings.Split(c.RoadPoolInfo.RoadUidPool, "||") + roadInfos := road.GetRoadInfosByRoadUids(roadUids) + for _, roadInfo := range roadInfos { + if _, ok := RoadIsValid(roadInfo, c); ok { + c.RoadInfo = roadInfo + c.PlatformRate = deployInfo.RollRoadPlatformRate + c.AgentRate = deployInfo.RollRoadAgentRate + return c + } + } + if c.RoadInfo.RoadUid == "" { + c.Code = -1 + c.Msg = "该商户没有配置通道或者通道不可用" + } + + return c +} + +// RoadIsValid 判断通道是否是合法的 +func RoadIsValid(roadInfo road.RoadInfo, c *response.PayBaseResp) (string, bool) { + if roadInfo.RoadUid == "" || len(roadInfo.RoadUid) == 0 { + return "参数缺失", false + } + FORMAT := fmt.Sprintf("该通道:%s;", roadInfo.RoadName) + if roadInfo.Status != "active" { + logs.Notice(FORMAT + "不是激活状态") + return "通道未激活", false + } + hour := time.Now().Hour() + s := roadInfo.StarHour + e := roadInfo.EndHour + if hour < s || hour > e { + logs.Notice(FORMAT) + return "当前未处在交易区间内", false + } + minAmount := roadInfo.SingleMinLimit + maxAmount := roadInfo.SingleMaxLimit + if minAmount > c.OrderAmount || maxAmount < c.OrderAmount { + logs.Error(FORMAT + "订单金额超限制") + return "订单金额超过交易限制", false + } + todayLimit := roadInfo.TodayLimit + totalLimit := roadInfo.TotalLimit + todayIncome := roadInfo.TodayIncome + totalIncome := roadInfo.TotalIncome + if (todayIncome + c.OrderAmount) > todayLimit { + logs.Error(FORMAT + "达到了每天金额上限") + return "订单金额超过金额限制", false + } + if (totalIncome + c.OrderAmount) > totalLimit { + logs.Error(FORMAT + "达到了总量限制") + return "订单金额达到总量限制", false + } + //如果通道被选中,那么总请求数+1 + roadInfo.RequestAll = roadInfo.RequestAll + 1 + roadInfo.TodayRequestAll = roadInfo.RequestAll + 1 + roadInfo.UpdateTime = utils.GetBasicDateTime() + road.UpdateRoadInfo(roadInfo) + return "", true +} + +// 获取基本订单记录 +func GenerateOrderInfo(c *response.PayBaseResp) order.OrderInfo { + //6666是自己系统订单号 + bankOrderNo := "6666" + xid.New().String() + //获取支付类型的名称,例如支付宝扫码等 + payTypeName := conf.GetNameByPayWayCode(c.Params["payWayCode"]) + orderInfo := order.OrderInfo{ + MerchantUid: c.MerchantInfo.MerchantUid, + MerchantName: c.MerchantInfo.MerchantName, + MerchantOrderId: c.Params["orderNo"], + BankOrderId: bankOrderNo, + OrderAmount: c.OrderAmount, + FactAmount: c.OrderAmount, + ShowAmount: c.OrderAmount, + RollPoolCode: c.RoadPoolInfo.RoadPoolCode, + RollPoolName: c.RoadPoolInfo.RoadPoolName, + RoadUid: c.RoadInfo.RoadUid, + RoadName: c.RoadInfo.RoadName, + PayProductName: c.RoadInfo.ProductName, + ShopName: c.Params["productName"], + Freeze: conf.NO, + Refund: conf.NO, + Unfreeze: conf.NO, + PayProductCode: c.RoadInfo.ProductUid, + PayTypeCode: c.PayWayCode, + PayTypeName: payTypeName, + OsType: c.Params["osType"], + Status: conf.WAIT, + NotifyUrl: c.Params["notifyUrl"], + ReturnUrl: c.Params["returnUrl"], + OrderPeriod: c.Params["orderPeriod"], + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + ExValue: c.Params["exValue"], + } + + if c.MerchantInfo.BelongAgentUid != "" || c.AgentRate > conf.ZERO { + orderInfo.AgentUid = c.MerchantInfo.BelongAgentUid + orderInfo.AgentName = c.MerchantInfo.BelongAgentName + } + return orderInfo +} + +// 计算收益,平台利润,代理利润 +func GenerateOrderProfit(orderInfo order.OrderInfo, c *response.PayBaseResp) order.OrderProfitInfo { + //因为所有的手续费率都是百分率,所以需要除以100 + payTypeName := conf.GetNameByPayWayCode(c.PayWayCode) + supplierProfit := c.OrderAmount / 100 * c.RoadInfo.BasicFee + platformProfit := c.OrderAmount / 100 * c.PlatformRate //平台费率 + agentProfit := c.OrderAmount / 100 * c.AgentRate //代理费率 + //如果用户没有设置代理,那么代理利润为0.000 + if c.MerchantInfo.BelongAgentUid == "" || len(c.MerchantInfo.BelongAgentUid) == 0 { + agentProfit = conf.ZERO + } + + allProfit := supplierProfit + platformProfit + agentProfit + + if allProfit >= c.OrderAmount { + logs.Error("手续费已经超过订单金额,bankOrderId = %s", orderInfo.BankOrderId) + c.Msg = "手续费已经超过了订单金额" + c.Code = -1 + } + + orderProfit := order.OrderProfitInfo{ + PayProductCode: c.RoadInfo.ProductUid, + PayProductName: c.RoadInfo.ProductName, + PayTypeCode: c.PayWayCode, + PayTypeName: payTypeName, + Status: conf.WAIT, + MerchantOrderId: c.Params["orderNo"], + BankOrderId: orderInfo.BankOrderId, + OrderAmount: c.OrderAmount, + FactAmount: c.OrderAmount, + ShowAmount: c.OrderAmount, + AllProfit: allProfit, + UserInAmount: c.OrderAmount - allProfit, + SupplierProfit: supplierProfit, + PlatformProfit: platformProfit, + AgentProfit: agentProfit, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + MerchantUid: c.MerchantInfo.MerchantUid, + MerchantName: orderInfo.MerchantName, + SupplierRate: c.RoadInfo.BasicFee, + PlatformRate: c.PlatformRate, + AgentRate: c.AgentRate, + AgentName: orderInfo.AgentName, + AgentUid: orderInfo.AgentUid, + } + + //如果该条订单设置了代理利率,并且设置了代理 + if c.MerchantInfo.BelongAgentUid != "" || c.AgentRate > conf.ZERO { + orderProfit.AgentUid = c.MerchantInfo.BelongAgentUid + orderProfit.AgentName = c.MerchantInfo.BelongAgentName + } + return orderProfit +} + +// GenerateRecord 生成订单一系列的记录 +func GenerateRecord(c *response.PayBaseResp) (order.OrderInfo, order.OrderProfitInfo) { + //生成订单记录,订单利润利润 + orderInfo := GenerateOrderInfo(c) + orderProfit := GenerateOrderProfit(orderInfo, c) + if c.Code == -1 { + return orderInfo, orderProfit + } + if !InsertOrderAndOrderProfit(orderInfo, orderProfit) { + c.Code = -1 + return orderInfo, orderProfit + } + logs.Info("插入支付订单记录和支付利润记录成功") + return orderInfo, orderProfit +} + +func GenerateSuccessData(scanData supplier.ScanData, c *response.PayBaseResp) *response.ScanSuccessData { + params := make(map[string]string) + params["orderNo"] = scanData.OrderNo + params["orderPrice"] = scanData.OrderPrice + params["payKey"] = c.MerchantInfo.MerchantKey + params["payURL"] = scanData.PayUrl + params["statusCode"] = "00" + + keys := utils.SortMap(params) + sign := utils.GetMD5Sign(params, keys, c.MerchantInfo.MerchantSecret) + scanSuccessData := new(response.ScanSuccessData) + + scanSuccessData.StatusCode = "00" + scanSuccessData.PayKey = c.MerchantInfo.MerchantKey + scanSuccessData.OrderNo = scanData.OrderNo + scanSuccessData.OrderPrice = scanData.OrderPrice + scanSuccessData.PayUrl = scanData.PayUrl + scanSuccessData.PayKey = c.MerchantInfo.MerchantKey + scanSuccessData.Msg = "请求成功" + scanSuccessData.Sign = sign + + return scanSuccessData +} diff --git a/service/pay_solve.go b/service/pay_solve.go new file mode 100644 index 0000000..d4f7836 --- /dev/null +++ b/service/pay_solve.go @@ -0,0 +1,510 @@ +package service + +import ( + "context" + "errors" + "fmt" + "gateway/conf" + "gateway/message" + "gateway/models/accounts" + "gateway/models/merchant" + "gateway/models/notify" + "gateway/models/order" + "gateway/models/road" + "gateway/utils" + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" + "net/url" + "strconv" +) + +// SolvePaySuccess 处理支付成功的加款等各项操作 +func SolvePaySuccess(bankOrderId string, factAmount float64, trxNo string) bool { + o := orm.NewOrm() + + err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + var orderInfo order.OrderInfo + if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(&orderInfo); err != nil || orderInfo.BankOrderId == "" { + logs.Error("不存在该订单,或者select for update出错") + return err + } + + if orderInfo.Status != "wait" { + logs.Error("该订单已经处理,订单号=", bankOrderId) + return errors.New(fmt.Sprintf("该订单已经处理,订单号= %s", bankOrderId)) + } + + if factAmount <= conf.ZERO { + factAmount = orderInfo.OrderAmount + } + + //make + var orderProfitInfo order.OrderProfitInfo + if err := txOrm.Raw("select * from order_profit_info where bank_order_id = ? for update", bankOrderId).QueryRow(&orderProfitInfo); err != nil || orderProfitInfo.BankOrderId == "" { + logs.Error("select order_profit_info for update fail: ", err) + return err + } + + if orderProfitInfo.BankOrderId == "" { + logs.Error("solve pay success, get orderProfit fail, bankOrderId = ", bankOrderId) + return errors.New(fmt.Sprintf("solve pay success, get orderProfit fail, bankOrderId = %s", bankOrderId)) + } + + orderInfo.Status = conf.SUCCESS + orderInfo.BankTransId = trxNo + orderInfo.UpdateTime = utils.GetBasicDateTime() + if _, err := txOrm.Update(&orderInfo); err != nil || orderInfo.BankOrderId == "" { + logs.Error(fmt.Sprintf("solve pay success, update order info fail: %s, bankOrderId = %s", err, bankOrderId)) + return err + } + + orderSettleInfo := order.OrderSettleInfo{ + PayTypeCode: orderInfo.PayTypeCode, + PayProductCode: orderInfo.PayProductCode, + RoadUid: orderInfo.RoadUid, + PayProductName: orderInfo.PayProductName, + PayTypeName: orderInfo.PayTypeName, + MerchantUid: orderInfo.MerchantUid, + MerchantOrderId: orderInfo.MerchantOrderId, + MerchantName: orderInfo.MerchantName, + BankOrderId: bankOrderId, + SettleAmount: orderProfitInfo.UserInAmount, + IsAllowSettle: conf.YES, + IsCompleteSettle: conf.NO, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + } + + if _, err := txOrm.Insert(&orderSettleInfo); err != nil { + logs.Error(fmt.Sprintf("solve pay success,insert order settle info fail: %s, bankOrderId = %s", err, bankOrderId)) + return err + } + + //做账户的加款操作,最重要的一部 + var accountInfo accounts.AccountInfo + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(&accountInfo); err != nil || accountInfo.AccountUid == "" { + logs.Error(fmt.Sprintf("solve pay success, raw account info fail: %s, bankOrderId = %s", err, bankOrderId)) + return err + } + if _, err := txOrm.QueryTable(accounts.ACCOUNT_INFO).Filter("account_uid", orderInfo.MerchantUid). + Update((orm.Params{"balance": accountInfo.Balance + orderProfitInfo.UserInAmount, "wait_amount": accountInfo.WaitAmount + orderProfitInfo.UserInAmount})); err != nil { + logs.Error(fmt.Sprintf("solve pay success, update account info fail: %s, bankOrderId = %s", err, bankOrderId)) + return err + } + + //添加一条动账记录 + accountHistory := accounts.AccountHistoryInfo{ + AccountUid: orderInfo.MerchantUid, + AccountName: orderInfo.MerchantName, + Type: conf.PLUS_AMOUNT, + Amount: orderProfitInfo.UserInAmount, + Balance: accountInfo.Balance + orderProfitInfo.UserInAmount, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + } + + if _, err := txOrm.Insert(&accountHistory); err != nil { + logs.Error(fmt.Sprintf("solve pay success,insert account history fail:%s, bankOrderId = %s", err, bankOrderId)) + return err + } + + //更新通道信息 + roadInfo := road.GetRoadInfoByRoadUid(orderInfo.RoadUid) + + roadInfo.RequestSuccess += 1 + roadInfo.TodayRequestSuccess += 1 //今日成功 + roadInfo.TotalIncome += orderInfo.FactAmount + roadInfo.TodayIncome += orderInfo.FactAmount + roadInfo.TodayProfit += orderProfitInfo.PlatformProfit + orderProfitInfo.AgentProfit + roadInfo.TotalProfit += orderProfitInfo.PlatformProfit + orderProfitInfo.AgentProfit + roadInfo.UpdateTime = utils.GetBasicDateTime() + if _, err := txOrm.Update(&roadInfo); err != nil { + logs.Error(fmt.Sprintf("solve pay success, update road info fail: %s, bankOrderId = %s", err, bankOrderId)) + return err + } + + //更新订单利润表 + orderProfitInfo.Status = conf.SUCCESS + orderProfitInfo.UpdateTime = utils.GetBasicDateTime() + if _, err := txOrm.Update(&orderProfitInfo); err != nil { + logs.Error(fmt.Sprintf("solve pay success, update order profit info fail: %s, bankOrderId = %s", err, bankOrderId)) + return err + } + + // 给下游发送回调通知 + go CreateOrderNotifyInfo(orderInfo, conf.SUCCESS) + + return nil + }) + + if err != nil { + logs.Error("SolvePaySuccess失败:", err) + return false + } + + logs.Info("SolvePaySuccess处理成功") + return true +} + +// 处理支付失败 +func SolvePayFail(bankOrderId, transId string) bool { + o := orm.NewOrm() + err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + var orderTmp order.OrderInfo + if err := txOrm.Raw("select * from order_info where bank_order_id = ?", bankOrderId).QueryRow(&orderTmp); err != nil || orderTmp.BankOrderId == "" { + return err + } + + if orderTmp.Status != "wait" { + return errors.New("订单已经处理,不要重复加款") + } + if _, err := txOrm.QueryTable(order.ORDER_INFO).Filter("bank_order_id", bankOrderId).Update(orm.Params{"status": conf.FAIL, "bank_trans_id": transId}); err != nil { + logs.Error("更改订单状态失败:", err) + return err + } + if _, err := txOrm.QueryTable(order.ORDER_PROFIT_INFO).Filter("bank_order_id", bankOrderId).Update(orm.Params{"status": conf.FAIL, "bank_trans_id": transId}); err != nil { + logs.Error("更改订单状态失败:", err) + return err + } + + go CreateOrderNotifyInfo(orderTmp, conf.FAIL) + + return nil + }) + + if err != nil { + logs.Error("SolvePayFail:", err) + return false + } + + logs.Info("SolvePayFail成功") + return true +} + +// 处理订单冻结 +func SolveOrderFreeze(bankOrderId string) bool { + o := orm.NewOrm() + + err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + var orderInfo order.OrderInfo + if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(&orderInfo); err != nil || orderInfo.BankOrderId == "" { + logs.Error("solve order freeze 不存在这样的订单记录,bankOrderId = ", bankOrderId) + return err + } + + if orderInfo.Status != conf.SUCCESS { + logs.Error("非成功订单不能进行冻结") + return errors.New("非成功订单不能进行冻结") + } + + orderInfo.Freeze = conf.YES + orderInfo.FreezeTime = utils.GetBasicDateTime() + orderInfo.UpdateTime = utils.GetBasicDateTime() + if _, err := txOrm.Update(&orderInfo); err != nil { + logs.Error("solve order freeze fail: ", err) + return err + } + + //账户的冻结金额里面加入相应的金额 + orderProfitInfo := order.GetOrderProfitByBankOrderId(bankOrderId) + + var accountInfo accounts.AccountInfo + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(&accountInfo); err != nil || accountInfo.AccountUid == "" { + logs.Error(fmt.Sprintf("solve pay fail select acount fail:%s", err)) + return err + } + + accountInfo.UpdateTime = utils.GetBasicDateTime() + accountInfo.FreezeAmount = accountInfo.FreezeAmount + orderProfitInfo.UserInAmount + if _, err := txOrm.Update(&accountInfo); err != nil { + logs.Error("solve order freeze fail: ", err) + return err + } + //插入一条动账记录 + accountHistoryInfo := accounts.AccountHistoryInfo{ + AccountName: accountInfo.AccountName, + AccountUid: accountInfo.AccountUid, + Type: conf.FREEZE_AMOUNT, + Amount: orderProfitInfo.UserInAmount, + Balance: accountInfo.Balance, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + } + if _, err := txOrm.Insert(&accountHistoryInfo); err != nil { + logs.Error("solve order freeze fail: ", err) + return err + } + + return nil + }) + + if err != nil { + logs.Error("SolveOrderFreeze:", err) + return false + } + + logs.Info("SolveOrderFreeze") + + return true +} + +// 订单解冻 +func SolveOrderUnfreeze(bankOrderId string) bool { + o := orm.NewOrm() + + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + orderInfo := new(order.OrderInfo) + if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(orderInfo); err != nil || orderInfo.BankOrderId == "" { + logs.Error("solve order unfreeze 不存在这样的订单记录,bankOrderId = ", bankOrderId) + return err + } + + orderInfo.Freeze = "" + orderInfo.Unfreeze = conf.YES + orderInfo.UnfreezeTime = utils.GetBasicDateTime() + orderInfo.UpdateTime = utils.GetBasicDateTime() + if _, err := txOrm.Update(orderInfo); err != nil { + logs.Error("solve order unfreeze fail: ", err) + return err + } + + orderProfitInfo := order.GetOrderProfitByBankOrderId(bankOrderId) + + accountInfo := new(accounts.AccountInfo) + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(accountInfo); err != nil || accountInfo.AccountUid == "" { + logs.Error(fmt.Sprintf("unfreeze select account fail: %s", err)) + return err + } + accountInfo.UpdateTime = utils.GetBasicDateTime() + accountInfo.FreezeAmount = accountInfo.FreezeAmount - orderProfitInfo.UserInAmount + + if _, err := txOrm.Update(accountInfo); err != nil { + logs.Error("solve order unfreeze fail: ", err) + return err + } + + accountHistoryInfo := accounts.AccountHistoryInfo{ + AccountUid: accountInfo.AccountUid, + AccountName: accountInfo.AccountName, + Type: conf.UNFREEZE_AMOUNT, + Amount: orderProfitInfo.UserInAmount, + Balance: accountInfo.Balance, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + } + + if _, err := txOrm.Insert(&accountHistoryInfo); err != nil { + return err + } + + return nil + }); err != nil { + logs.Error("SolveOrderUnfreeze失败:", err) + return false + } + + return true +} + +func SolveRefund(bankOrderId string) bool { + o := orm.NewOrm() + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + orderInfo := new(order.OrderInfo) + if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(orderInfo); err != nil || orderInfo.BankOrderId == "" { + logs.Error("solve refund 不存在这样的订单,bankOrderId = " + bankOrderId) + return err + } + + orderInfo.UpdateTime = utils.GetBasicDateTime() + orderInfo.Refund = conf.YES + orderInfo.RefundTime = utils.GetBasicDateTime() + + orderProfitInfo := order.GetOrderProfitByBankOrderId(bankOrderId) + account := new(accounts.AccountInfo) + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(account); err != nil || account.AccountUid == "" { + return err + } + + account.UpdateTime = utils.GetBasicDateTime() + account.SettleAmount = account.SettleAmount - orderProfitInfo.UserInAmount + account.Balance = account.Balance - orderProfitInfo.UserInAmount + + if orderInfo.Freeze == conf.YES { + account.FreezeAmount = account.FreezeAmount - orderProfitInfo.UserInAmount + if account.FreezeAmount < 0 { + account.FreezeAmount = conf.ZERO + } + orderInfo.Freeze = "" + } + + if _, err := txOrm.Update(orderInfo); err != nil { + logs.Error("solve order refund update order info fail: ", err) + return err + } + if _, err := txOrm.Update(account); err != nil { + logs.Error("solve order refund update account fail: ", err) + return err + } + + accountHistoryInfo := accounts.AccountHistoryInfo{ + AccountName: account.AccountName, + AccountUid: account.AccountUid, + Type: conf.REFUND, + Amount: orderProfitInfo.UserInAmount, + Balance: account.Balance, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + } + + if _, err := txOrm.Insert(&accountHistoryInfo); err != nil { + logs.Error("solve order refund insert account history fail: ", err) + return err + } + + return nil + }); err != nil { + logs.Error("SolveRefund 成功:", err) + return false + } + return true +} + +func SolveOrderRoll(bankOrderId string) bool { + o := orm.NewOrm() + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + + orderInfo := new(order.OrderInfo) + + if err := txOrm.Raw("select * from order_info where bank_order_id = ? for update", bankOrderId).QueryRow(orderInfo); err != nil { + logs.Error("solve order roll fail: ", err) + return err + } + + if orderInfo.Status != conf.SUCCESS { + logs.Error("solve order roll 订单不存在或者订单状态不是success, bankOrderId=", bankOrderId) + return errors.New("solve order roll failed") + } + orderInfo.UpdateTime = utils.GetBasicDateTime() + + orderProfitInfo := order.GetOrderProfitByBankOrderId(bankOrderId) + + account := new(accounts.AccountInfo) + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", orderInfo.MerchantUid).QueryRow(account); err != nil || account.AccountUid == "" { + return err + } + + account.UpdateTime = utils.GetBasicDateTime() + if orderInfo.Refund == conf.YES { + account.Balance = account.Balance + orderProfitInfo.UserInAmount + account.SettleAmount = account.SettleAmount + orderProfitInfo.UserInAmount + orderInfo.Refund = conf.NO + } + + if _, err := txOrm.Update(orderInfo); err != nil { + logs.Error("solve order roll fail update order info fail: ", err) + return err + } + if _, err := txOrm.Update(account); err != nil { + logs.Error("solve order roll update account fail: ", err) + return err + } + + accountHistoryInfo := accounts.AccountHistoryInfo{ + AccountUid: account.AccountUid, + AccountName: account.AccountName, + Type: conf.PLUS_AMOUNT, + Amount: orderProfitInfo.UserInAmount, + Balance: account.Balance, + UpdateTime: utils.GetBasicDateTime(), + CreateTime: utils.GetBasicDateTime(), + } + + if _, err := txOrm.Insert(&accountHistoryInfo); err != nil { + logs.Error("solve order roll insert account history fail: ", err) + return err + } + + return nil + + }); err != nil { + logs.Error("SolveOrderRoll处理失败:", err) + return false + } + + return true +} + +// 比较订单金额和实际支付金额的大小 +func CompareOrderAndFactAmount(factAmount float64, orderInfo order.OrderInfo) int { + orderAmount := orderInfo.OrderAmount + //将金额放大1000倍 + oa := int64(orderAmount * 1000) + fa := int64(factAmount * 1000) + if oa > fa { + //如果实际金额大,返回1 + return 1 + } else if oa == fa { + return 0 + } else { + return 2 + } +} + +// 支付完成后,处理给商户的回调信息 +func CreateOrderNotifyInfo(orderInfo order.OrderInfo, tradeStatus string) { + + notifyInfo := new(notify.NotifyInfo) + notifyInfo.Type = "order" + notifyInfo.BankOrderId = orderInfo.BankOrderId + notifyInfo.MerchantOrderId = orderInfo.MerchantOrderId + notifyInfo.Status = "wait" + notifyInfo.Times = 0 + notifyInfo.UpdateTime = utils.GetBasicDateTime() + notifyInfo.CreateTime = utils.GetBasicDateTime() + + merchantInfo := merchant.GetMerchantByUid(orderInfo.MerchantUid) + + params := make(map[string]string) + params["orderNo"] = orderInfo.MerchantOrderId + params["orderPrice"] = strconv.FormatFloat(orderInfo.OrderAmount, 'f', 2, 64) + params["factPrice"] = strconv.FormatFloat(orderInfo.FactAmount, 'f', 2, 64) + params["orderTime"] = utils.GetDateTimeNot() + + if orderInfo.BankTransId != "" { + params["trxNo"] = orderInfo.BankTransId + } else { + params["trxNo"] = orderInfo.BankOrderId + } + + if tradeStatus == "success" { + params["statusCode"] = "01" + } else { + params["statusCode"] = "00" + } + + params["tradeStatus"] = tradeStatus + params["payKey"] = merchantInfo.MerchantKey + s := params["orderNo"] + params["orderPrice"] + params["factPrice"] + params["trxNo"] + params["statusCode"] + params["tradeStatus"] + params["payKey"] + merchantInfo.MerchantSecret + md5Str := utils.GetMD5LOWER(s) + params["sign"] = md5Str + + u := url.Values{} + for k, v := range params { + u.Add(k, v) + } + + notifyInfo.Url = orderInfo.NotifyUrl + "?" + u.Encode() + + if notify.InsertNotifyInfo(*notifyInfo) { + logs.Info(fmt.Sprintf("订单bankOrderId=%s,已经将回调地址插入数据库", orderInfo.BankOrderId)) + } else { + logs.Error(fmt.Sprintf("订单bankOrderId=%s,插入回调数据库失败", orderInfo.BankOrderId)) + } + //将订单发送到消息队列,给下面的商户进行回调 + go message.SendMessage(conf.MqOrderNotify, orderInfo.BankOrderId) +} diff --git a/service/settle_service.go b/service/settle_service.go new file mode 100644 index 0000000..702518d --- /dev/null +++ b/service/settle_service.go @@ -0,0 +1,234 @@ +/*************************************************** + ** @Desc : 订单结算,将订单上面的钱加入到账户余额中 + ** @Time : 2019/11/22 11:34 + ** @Author : yuebin + ** @File : order_settle + ** @Last Modified by : yuebin + ** @Last Modified time: 2019/11/22 11:34 + ** @Software: GoLand +****************************************************/ +package service + +import ( + "context" + "errors" + "fmt" + "gateway/conf" + "gateway/models/accounts" + "gateway/models/merchant" + "gateway/models/order" + "gateway/utils" + "github.com/beego/beego/v2/client/orm" + "github.com/beego/beego/v2/core/logs" + "time" +) + +const ( + Interval = 2 //隔多少分钟进行结算 + Minutes = 1 //每隔15分钟,进行扫码,看有没有隔天押款金额 +) + +// OrderSettle 订单结算,将那些支付成功的订单金额加入到商户账户的结算金额中 +func OrderSettle() { + + params := make(map[string]string) + params["is_allow_settle"] = conf.YES + params["is_complete_settle"] = conf.NO + orderSettleList := order.GetOrderSettleListByParams(params) + for _, orderSettle := range orderSettleList { + orderProfitInfo := order.GetOrderProfitByBankOrderId(orderSettle.BankOrderId) + if !settle(orderSettle, orderProfitInfo) { + logs.Error(fmt.Sprintf("结算订单bankOrderId = #{orderSettle.BankOrderId}, 执行失败")) + } else { + logs.Info(fmt.Sprintf("结算订单bankOrderId= #{orderSettle.BankOrderId},执行成功")) + } + } +} + +func settle(orderSettle order.OrderSettleInfo, orderProfit order.OrderProfitInfo) bool { + o := orm.NewOrm() + + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + tmpSettle := new(order.OrderSettleInfo) + if err := txOrm.Raw("select * from order_settle_info where bank_order_id=? for update", orderSettle.BankOrderId).QueryRow(tmpSettle); err != nil || tmpSettle.BankOrderId == "" { + logs.Error("获取tmpSettle失败,bankOrderId=%s", orderSettle.BankOrderId) + return err + } + + tmpSettle.UpdateTime = utils.GetBasicDateTime() + tmpSettle.IsCompleteSettle = conf.YES + if _, err := txOrm.Update(tmpSettle); err != nil { + logs.Error("更新tmpSettle失败,错误:", err) + return err + } + + accountInfo := new(accounts.AccountInfo) + if err := txOrm.Raw("select * from account_info where account_uid= ? for update", orderSettle.MerchantUid). + QueryRow(accountInfo); err != nil || accountInfo.UpdateTime == "" { + logs.Error("结算select account info失败,错误信息:", err) + return err + } + accountInfo.UpdateTime = utils.GetBasicDateTime() + + // 商户有押款操作 + loadAmount := 0.0 + merchantDeployInfo := merchant.GetMerchantDeployByUidAndPayType(accountInfo.AccountUid, orderSettle.PayTypeCode) + if merchantDeployInfo.IsLoan == conf.YES { + loadAmount = merchantDeployInfo.LoanRate * 0.01 * orderProfit.FactAmount + date := utils.GetDate() + params := make(map[string]string) + params["merchant_uid"] = tmpSettle.MerchantUid + params["road_uid"] = tmpSettle.RoadUid + params["load_date"] = date + if !merchant.IsExistMerchantLoadByParams(params) { + + tmp := merchant.MerchantLoadInfo{Status: conf.NO, MerchantUid: orderSettle.MerchantUid, RoadUid: orderSettle.RoadUid, + LoadDate: utils.GetDateAfterDays(merchantDeployInfo.LoanDays), LoadAmount: loadAmount, + UpdateTime: utils.GetBasicDateTime(), CreateTime: utils.GetBasicDateTime()} + + if _, err := txOrm.Insert(&tmp); err != nil { + logs.Error("結算插入merchantLoad失敗,失败信息:", err) + return err + } else { + logs.Info("结算插入新的merchantLoad信息成功") + } + } else { + merchantLoad := new(merchant.MerchantLoadInfo) + if err := txOrm.Raw("select * from merchant_load_info where merchant_uid=? and road_uid=? and load_date=? for update", orderSettle.MerchantUid, orderSettle.RoadUid, date). + QueryRow(merchantLoad); err != nil || merchantLoad.UpdateTime == "" { + logs.Error(fmt.Sprintf("结算过程,select merchant load info失败,错误信息:%s", err)) + return err + } else { + merchantLoad.UpdateTime = utils.GetBasicDateTime() + merchantLoad.LoadAmount += loadAmount + if _, err := txOrm.Update(merchantLoad); err != nil { + logs.Error(fmt.Sprintf("结算过程,update merchant load info失败,失败信息:%s", err)) + return err + } + } + } + } else { + logs.Info(fmt.Sprintf("结算过程中,该商户不需要押款,全款结算")) + } + + if accountInfo.WaitAmount < orderProfit.UserInAmount { + logs.Error("系统出现严重故障,账户的带结算金额小于订单结算金额") + return errors.New("系统出现严重故障,账户的带结算金额小于订单结算金额, 账户 = " + accountInfo.AccountName + "订单id = " + orderProfit.BankOrderId) + } + + needAmount := orderProfit.UserInAmount - loadAmount + + accountInfo.SettleAmount = accountInfo.SettleAmount + needAmount + accountInfo.WaitAmount = accountInfo.WaitAmount - orderProfit.UserInAmount + accountInfo.LoanAmount = accountInfo.LoanAmount + loadAmount + + if _, err := txOrm.Update(accountInfo); err != nil { + logs.Error("结算update account 失败,错误信息:", err) + return err + } + + return nil + }); err != nil { + return false + } + return true +} + +/* +* 商户的押款释放处理,根据商户的押款时间进行处理 + */ +func MerchantLoadSolve() { + hour := time.Now().Hour() + merchantDeployList := merchant.GetMerchantDeployByHour(hour) + for _, merchantDeploy := range merchantDeployList { + logs.Info(fmt.Sprintf("开始执行商户uid= #{merchantDeploy.MerchantUid},进行解款操作")) + + loadDate := utils.GetDateBeforeDays(merchantDeploy.LoanDays) + params := make(map[string]string) + params["status"] = conf.NO + params["merchant_uid"] = merchantDeploy.MerchantUid + params["load_date__lte"] = loadDate + + merchantLoadList := merchant.GetMerchantLoadInfoByMap(params) + for _, merchantLoad := range merchantLoadList { + if MerchantAbleAmount(merchantLoad) { + logs.Info(fmt.Sprintf("商户uid= %s,押款金额=%f,押款通道= %s, 解款成功", merchantLoad.MerchantUid, merchantLoad.LoadAmount, merchantLoad.RoadUid)) + } else { + logs.Error(fmt.Sprintf("商户uid=%s,押款金额=%f,押款通道=%s, 解款失败", + merchantLoad.MerchantUid, merchantLoad.LoadAmount, merchantLoad.RoadUid)) + } + } + } +} + +/* +* 对应的商户的账户可用金额进行调整操作 + */ +func MerchantAbleAmount(merchantLoad merchant.MerchantLoadInfo) bool { + o := orm.NewOrm() + + if err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { + tmpLoad := new(merchant.MerchantLoadInfo) + if err := txOrm.Raw("select * from merchant_load_info where merchant_uid=? and road_uid=? and load_date=? for update", + merchantLoad.MerchantUid, merchantLoad.RoadUid, merchantLoad.LoadDate).QueryRow(tmpLoad); err != nil || tmpLoad.MerchantUid == "" { + logs.Error(fmt.Sprintf("解款操作获取商户押款信息失败,fail: %s", err)) + return err + + } + if tmpLoad.Status != conf.NO { + logs.Error(fmt.Sprintf("押款信息merchantuid=%s,通道uid=%s, 押款日期=%s,已经解款过,不需要再进行处理了", tmpLoad.MerchantUid, tmpLoad.RoadUid, tmpLoad.LoadDate)) + return errors.New("已经解款过,不需要再进行处理了") + } + + tmpLoad.UpdateTime = utils.GetBasicDateTime() + tmpLoad.Status = conf.YES + if _, err := txOrm.Update(tmpLoad); err != nil { + logs.Error(fmt.Sprintf("解款操作更新merchant load info 失败:%s", err)) + return err + } + + accountInfo := new(accounts.AccountInfo) + if err := txOrm.Raw("select * from account_info where account_uid = ? for update", merchantLoad.MerchantUid).QueryRow(accountInfo); err != nil || accountInfo.AccountUid == "" { + logs.Error("结款操作获取账户信息失败:", err) + return err + } + accountInfo.UpdateTime = utils.GetBasicDateTime() + if accountInfo.LoanAmount >= tmpLoad.LoadAmount { + accountInfo.LoanAmount = accountInfo.LoanAmount - tmpLoad.LoadAmount + accountInfo.SettleAmount = accountInfo.SettleAmount + tmpLoad.LoadAmount + } else { + accountInfo.LoanAmount = conf.ZERO + } + + if _, err := txOrm.Update(accountInfo); err != nil { + logs.Error(fmt.Sprintf("解款操作更新account info 失败:%s,账户uid=%s", err, accountInfo.AccountUid)) + return err + } + + return nil + + }); err != nil { + return false + } + return true +} + +func OrderSettleInit() { + //每隔5分钟,巡查有没有可以进行结算的订单 + go func() { + settleTimer := time.NewTimer(time.Duration(Interval) * time.Minute) + oneMinuteTimer := time.NewTimer(time.Duration(Minutes) * time.Minute) + for { + select { + case <-settleTimer.C: + settleTimer = time.NewTimer(time.Duration(Interval) * time.Minute) + logs.Info("开始对商户进行支付订单结算>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") + OrderSettle() + case <-oneMinuteTimer.C: + oneMinuteTimer = time.NewTimer(time.Duration(Minutes) * time.Minute) + logs.Info("开始执行商户的解款操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") + MerchantLoadSolve() + } + } + }() +} diff --git a/static/css/cashier.css b/static/css/cashier.css new file mode 100644 index 0000000..7391c8c --- /dev/null +++ b/static/css/cashier.css @@ -0,0 +1,238 @@ +/* CSS Document */ +li, ol, ul { + list-style: outside none none; +} +html, body { + height: 100%; +} +body { + background: #f8f8f8; +} +* { + font-family: Arial,microsoft yahei; + margin: 0; + padding: 0; +} +.tastesdk-box { + background-color: #f8f8f8; + position: relative; +} +/*头部*/ +.header{width:100%; height:60px;background: #fefefe;border-bottom: 2px solid #f68452;} +.header .title{width: 1200px;margin: 0 auto;position: relative;} +.header .title .scan_code{display:none;width:190px;height:190px;position: absolute;right: 0px;top: 52px;background: #ffffff;border: 1px solid #dcdcdc;box-shadow:0 0 7px rgba(115, 115, 115, .2);-webkit-box-shadow:0 0 7px rgba(115, 115, 115, .2);-moz-box-shadow:0 0 7px rgba(1115, 115, 115, .2);} +.header .title .scan_code img{width: 160px;height: 160px;padding: 15px;} +.header .title .logo{font-family: "方正正黑简体";font-size:22px;color:#000000;float:left;background: url(../images/icon_logo.png) no-repeat left center;display:inline-block;height: 30px;margin-top: 17px;padding-left: 126px;} +.header .title .logo span{font-size: 24px;color: #9f9f9f;font-family: "微软雅黑";background: url(../images/syt_03.png) no-repeat 8px 4px;display: block;width: 72px;height:30px;} +.header .title .right{float:right; padding-top:16px;} +.header .title .right ul{float:right; padding-top:7px;} +.header .title .right li{float:left; padding-left:15px;font-size:12px;line-height: 17px;height: 17px;} +.header .title .right li span{display:inline-block;color:#868686; background-repeat:no-repeat; background-image:url(../images/icon_header.png);letter-spacing: 1px;} +.icon_info{padding-left:21px; background-position:left top;line-height: 13px;} +.icon_qq{padding-left:22px; background-position:left -13px;} +.icon_phone{padding-left:21px; background-position:left -30px;} +.login{padding-left: 15px;} +.iap_new img{margin-left: 8px;float: right;margin-top: 1px;} +.iap_new:hover .scan_code{display: block;} + +.clearfix { + zoom: 1; +} +li { + list-style-image: none; + list-style-position: outside; + list-style-type: none; +} +.header .title .right li { + float: left; + padding-left: 15px; + font-size: 12px; + line-height: 17px; + height: 17px; +} +.header .title .right li span { + display: inline-block; + color: #868686; + background-repeat: no-repeat; + background-image: url(../images/icon_header.png); + letter-spacing: 1px; +} + +.icon_info { + padding-left: 21px; + background-position: left top; + line-height: 13px; +} + +.tastesdk-box::after { + background-color: #f8f8f8; + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 166px; + z-index: 1; +} +.tastesdk-box .main { + position: relative; + z-index: 2; +} +.main { + margin: 0 auto; + width: 1200px; +} +.tastesdk-box .typedemo { + background-color: #fff; + display: block; + height: 480px; + margin: 50px 0 0; + position: relative; + transition: box-shadow 0.5s cubic-bezier(0, 0, 0.2, 1) 0s; +} + +.tastesdk-box .typedemo .tit, .tastesdk-box .typedemo .title { + border-bottom: 1px solid #e5e5e5; + font-size: 16px; + height: 60px; + line-height: 60px; + padding: 0 30px; +} + +.tastesdk-box .typedemo .tit span, .tastesdk-box .typedemo .title span { + cursor: pointer; +} +.demo-pc { + padding: 30px 40px 0; +} + +.two-step p { + color: #666; +} +.two-step p strong { + color: #333; + display: block; + font-size: 16px; + margin-bottom: 10px; +} +.two-step p span { + color: #fb226b; +} +.two-step .pay-infor { + border: 1px solid #e5e5e5; + margin: 25px 0 20px; + width: 100%; + float:left; +} +.two-step .pay-infor li { + box-sizing: border-box; + float: left; + font-size: 14px; + height: 58px; + line-height: 58px; + text-align: center; + width: 33.3333%; + padding-left: 50px; + text-align: left; +} +.two-step .pay-infor li strong { + color: #fb226b; + font-size: 20px; +} + +.two-step .pay-infor li strong span { + font-size: 14px; +} +.two-step h5 { + font-size: 14px; + font-weight: 400; + margin-bottom: 16px; +} +.two-step .pay-label { + border: 1px solid #e5e5e5; + padding: 0 20px 20px; + float:left; + width:100%; +} + +.two-step .pay-label li { + display: inline; + float: left; + height: 42px; + margin: 20px 40px 0 0; + position: relative; + width: 150px; +} + +.two-step .pay-label li input { + height: 40px; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; +} +.two-step .pay-label li input:checked + label { + border-color: #27c8e8; +} +.two-step .pay-label li label { + border: 1px solid #e5e5e5; + left: 0; + text-align: center; + top: 0; + vertical-align: middle; + width: 148px; +} +.two-step .btns, .two-step .pay-label li label { + height: 40px; + line-height: 40px; + position: absolute; +} + +.pay-label span { + margin-left: 5px; +} + +.two-step .pay-label li label img { + vertical-align: middle; + width: auto; + height:25px; +} +.two-step .btns { + bottom: 10px; + right: 10px; + height: 40px; + line-height: 40px; + position: absolute; +} +.two-step .btns span { + color: #0098b6; +} + +.two-step .btns button { + margin-left: 30px; + vertical-align: top; +} +.pcdemo-btn { + background-color: #27c8e8; + border: medium none; + border-radius: 4px; + color: #fff; + height: 40px; + line-height: 40px; + overflow: hidden; + position: relative; + width: 160px; + z-index: 2; +} + +.ylzf_list{ + display:none; +} +.ylzf_list h5{ + margin-top: 20px; +} +.ylzf_list ul li img{ + width: 96%; + height: 46px; + line-height: 46px; +} \ No newline at end of file diff --git a/static/css/hy_basic.css b/static/css/hy_basic.css new file mode 100644 index 0000000..4caf97f --- /dev/null +++ b/static/css/hy_basic.css @@ -0,0 +1 @@ +@charset "utf-8";.btn_common,.btn_common .btn_left{background:url(http://www.qiyipic.com/common/fix/movie_images/commonBtns.png) no-repeat;_background:url(http://www.qiyipic.com/common/fix/movie_images/commonBtns_ie.png) no-repeat;display:inline-block;text-align:center;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,0.3)}.btn_common{padding:0 20px 0 18px;cursor:pointer;margin-left:2px}a:hover.btn_common,a:active.btn_common{text-decoration:none;color:#fff}.btn_common span{display:block;display:inline-block\0;white-space:nowrap;word-break:keep-all}.btn_common .btn_left{float:left;width:5px;margin-left:-20px;_margin-left:-18px}a:link.btnGreen_l,a:visited.btnGreen_l{background-position:right -37px;height:37px;font:16px/37px "\5FAE\8F6F\96C5\9ED1"}a:link.btnGreen_l .btn_left,a:visited.btnGreen_l .btn_left{background-position:0 0;height:37px}a:hover.btnGreen_l{background-position:right -111px}a:hover.btnGreen_l .btn_left{background-position:0 -74px}a:active.btnGreen_l{background-position:right -185px}a:active.btnGreen_l .btn_left{background-position:0 -148px}.btnGreen_m{background-position:right -476px;height:32px;font:14px/32px "\5FAE\8F6F\96C5\9ED1"}.btnGreen_m .btn_left{background-position:0 -444px;height:32px}a:hover.btnGreen_m{background-position:right -540px}a:hover.btnGreen_m .btn_left{background-position:0 -508px}a:active.btnGreen_m{background-position:right -604px}a:active.btnGreen_m .btn_left{background-position:0 -572px}.btnGreen_s{background-position:right -1042px;height:22px;padding:0 10px 0 8px;font:12px/22px "\65B0\5B8B\4F53"}.btnGreen_s .btn_left{background-position:0 -1020px;height:22px;margin-left:-10px;_margin-left:-8px}a:hover.btnGreen_s{background-position:right -1086px}a:hover.btnGreen_s .btn_left{background-position:0 -1064px}a:active.btnGreen_s{background-position:right -1130px}a:active.btnGreen_s .btn_left{background-position:0 -1108px}.btnOrange_l{background-position:right -259px;height:37px;font:16px/37px "\5FAE\8F6F\96C5\9ED1"}.btnOrange_l .btn_left{background-position:0 -222px;height:37px}a:hover.btnOrange_l{background-position:right -333px}a:hover.btnOrange_l .btn_left{background-position:0 -296px}a:active.btnOrange_l{background-position:right -407px}a:active.btnOrange_l .btn_left{background-position:0 -370px}.btnOrange_m{background-position:right -668px;height:32px;font:14px/32px "\5FAE\8F6F\96C5\9ED1"}.btnOrange_m .btn_left{background-position:0 -636px;height:32px}a:hover.btnOrange_m{background-position:right -732px}a:hover.btnOrange_m .btn_left{background-position:0 -700px}a:active.btnOrange_m{background-position:right -796px}a:active.btnOrange_m .btn_left{background-position:0 -764px}.btnGray_m{background-position:right -860px;height:32px;text-shadow:none;font:14px/32px "\5FAE\8F6F\96C5\9ED1";color:#000;text-shadow:0 1px 1px rgba(255,255,255,1)}.btnGray_m .btn_left{background-position:0 -828px;height:32px}a:hover.btnGray_m{background-position:right -924px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.2);-moz-box-shadow:0 0 3px rgba(0,0,0,0.2);box-shadow:0 0 3px rgba(0,0,0,0.2);color:#518900}a:hover.btnGray_m .btn_left{background-position:0 -892px}a:active.btnGray_m{background-position:right -988px;color:#518900}a:active.btnGray_m .btn_left{background-position:0 -956px}.btnGray_s{background-position:right -1174px;height:22px;text-shadow:none;padding:0 10px 0 8px;font:12px/22px "\65B0\5B8B\4F53";color:#000;text-shadow:0 1px 1px rgba(255,255,255,1)}.btnGray_s .btn_left{background-position:0 -1152px;height:22px;margin-left:-10px;_margin-left:-8px}a:hover.btnGray_s{background-position:right -1218px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.2);-moz-box-shadow:0 0 3px rgba(0,0,0,0.2);box-shadow:0 0 3px rgba(0,0,0,0.2);color:#518900}a:hover.btnGray_s .btn_left{background-position:0 -1196px}a:active.btnGray_s{background-position:right -1262px;color:#518900}a:active.btnGray_s .btn_left{background-position:0 -1240px}.btnOrange_s{background-position:right -1306px;height:22px;padding:0 10px 0 8px;font:12px/22px "\65B0\5B8B\4F53";color:#fff}.btnOrange_s .btn_left{background-position:0 -1284px;height:22px;margin-left:-10px;_margin-left:-8px}.pop20130401{border:5px solid #d9d9d9;background:#fff;font-family:"\5FAE\8F6F\96C5\9ED1","\9ED1\4F53";width:400px}.pop20130401 .greenBorder{border:1px solid #63a800}.pop20130401 .grayBorder{border:1px solid #ccc}.pop20130401 .topBar{width:100%;height:37px;background:url(http://www.qiyipic.com/common/fix/hy_images/vippops.png) 0 0 repeat-x}.pop20130401 .topBar_gray{background:url(http://www.qiyipic.com/common/fix/hy_images/vippops_gray.png) 0 0 repeat-x}.pop20130401 .topBar h2{font-size:14px;line-height:35px;color:#fff;padding:0;margin:0;padding-left:15px;float:left;font-weight:normal}.pop20130401 .topBar_gray h2{color:#000;text-shadow:0 1px 0 #fff}.pop20130401 .topBar a.close{background:url(http://www.qiyipic.com/common/fix/hy_images/vippops.png) 0 -57px no-repeat;display:block;float:right;width:34px;height:37px}.pop20130401 .topBar_gray a.close{background:url(http://www.qiyipic.com/common/fix/hy_images/vippops_gray.png) 0 -57px no-repeat}.pop20130401 .popContent{padding:20px}.pop20130401 p{padding:0;margin:0;line-height:20px}.pop20130401 .f12{font-size:12px}.pop20130401 .f15{font-size:15px}.pop20130401 .pt10{padding-top:10px}.pop20130401 .pb10{padding-bottom:10px}.pop20130401 .ceb61{color:#eb6100}.pop20130401 .c666{color:#666}.pop20130401 .c80{color:#808080}.pop20130401 .c5189{color:#518900}.pop20130401 a.c000{color:#000}.pop20130401 .mr25{margin-right:25px}.pop20130401 .tc{text-align:center}.pop20130401 .pl30{padding-left:30px}.pop20130401 .pl40{padding-left:40px}.pop20130401 .pl50{padding-left:50px}.pop20130401 .pt50{padding-top:50px}.pop20130401 .pl97{padding-left:97px}.w340 .popContent{padding:40px;text-align:center}.w340 .popContent img{display:inline-block;margin-right:5px}.pop0815Bg{background-color:#000;filter:alpha(opacity=30);-moz-opacity:.3;-khtml-opacity:.3;opacity:.3}.mod-hy-pop{width:360px;background-color:#dbdbdb;padding:1px 1px 0 1px;border-bottom:2px solid #e6e6e6}.mod-hy-pop .close{color:#666;font-size:24px;position:absolute;top:10px;right:10px}.mod-hy-pop .close:hover{text-decoration:none;color:#7ab700}.mod-hy-pop .tc{text-align:center}.mod-hy-pop .pop_hd{padding:7px 25px;line-height:24px;border-bottom:1px solid #e6e6e6;background-color:#fcfcfc}.mod-hy-pop .pop_hd .title{font-size:16px;color:#333}.mod-hy-pop .pop_bd{padding:20px 25px;width:310px;background-color:#fff;border-bottom:1px solid #e6e6e6}.mod-hy-pop .pop-btn-sm{display:inline-block;height:26px;color:#fff;border:0;background-color:#699f00;line-height:24px;font-size:14px;padding:0 15px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mod-hy-pop .pop-btn-sm:hover,.mod-hy-pop .pop-btn-large:hover{background-color:#7db718;text-decoration:none}.mod-hy-pop .pop-btn-sm:active,.mod-hy-pop .pop-btn-large:active{background-color:#5b8d00}.mod-hy-pop .title-success{line-height:40px;font-size:14px;color:#666;text-align:center;padding-bottom:3px}.mod-hy-pop .icon-success{width:39px;height:39px;display:inline-block;vertical-align:middle;background:url(http://www.qiyipic.com/common/fix/v3-vip/icon-success3434.png) no-repeat;overflow:hidden;margin-right:14px}.mod-hy-pop .hy-tip-txt{line-height:24px;color:#666}.mod-hy-pop .wx-tip-icon{width:18px;height:18px;overflow:hidden;margin-right:10px;display:inline-block;vertical-align:-4px;*+vertical-align:0;_vertical-align:0;background:url(http://www.qiyipic.com/common/fix/v3-vip/wx-tip-icon.png)}.mod-hy-pop .vip-pay-wx .tip{line-height:18px;color:#666}.mod-hy-pop .vip-pay-wx .money{font-size:20px;color:#ff7800}.coupon-ml{margin-left:-3px}.couponBox-box{margin-top:8px}.coupon-box{border:1px solid #ddd;background-color:#f7f7f7}.coupon-box .hy-promotion{line-height:28px;padding:12px 20px 12px 11px;border-bottom:1px dashed #ddd}.coupon-box .hy-promotion.no-dash{border-bottom:0}.coupon-title{float:left}.coupon-title label{margin-left:4px}.coupon_icons_radio{display:inline-block;background:url(http://pic5.qiyipic.com/common/20150511/hy_images/coupon-icon_radio.png) 0 0 no-repeat;vertical-align:middle;width:20px;height:20px;background-position:3px 1px}.couponBox-box .coupon-box .icons-couponBox_hover .coupon_icons_radio{background-position:-17px 1px}.couponBox-box .coupon-box .selected{background-color:#f6fbee}.couponBox-box .coupon-box .selected .coupon_icons_radio{background-position:-37px 1px}.couponBox-box .coupon-box .icons-couponBox_slhover .coupon_icons_radio{background-position:-57px 1px}.coupon-con{margin-left:150px}.coupon-input{height:26px;line-height:26px;border:1px solid #ddd;border-radius:3px;padding-left:9px}.code-text{width:189px}.ver-code{width:71px;margin-left:50px}.ver-img{margin-left:10px}.ver-img img{width:66px;height:26px}.ver-img .sw-img{display:inline-block;margin-left:9px}.coupon-icons-green{margin-left:20px}.coupon-msg{height:22px;position:relative}.ver-msg{position:absolute;top:0;left:254px}.coupon-msg-faild{color:#f00}.coupon-select{position:relative;display:inline-block;*display:inline;background-color:#fff;border:1px solid #ddd;border-radius:3px;margin-left:15px;vertical-align:middle;*zoom:1}.coupon-select-open{z-index:1}.coupon-select .coupon-select-handler:after,.coupon-select .coupon-select-handler:before{content:"";display:table;font:0/0 a}.coupon-select .coupon-select-handler:after{clear:both}.coupon-select .coupon-select-handler{display:block}.coupon-select .coupon-handler-box{display:inline;float:left;overflow:hidden;width:192px;*width:168px;height:26px;padding:0 15px 0 9px;line-height:26px;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.coupon-select .coupon-handler-btn{display:inline;position:relative;float:left;width:26px;height:26px}.coupon-select-triangle{display:inline-block;position:absolute;width:8px;height:6px;left:50%;top:50%;margin-left:-4px;margin-top:-3px;background:url(http://pic5.qiyipic.com/common/20150511/hy_images/coupon-icon_radio.png) -80px -5px no-repeat;z-index:2}.coupon-select .coupon-select-option{overflow-y:auto;position:absolute;width:218px;border:1px solid #ddd;border-radius:0 0 3px 3px;top:26px;left:-1px;background-color:#fff;z-index:100}.coupon-select-option li{height:26px;line-height:26px;padding-left:9px}.coupon-select .coupon-select-option .coupon-link-option{overflow:hidden;display:block;width:167px;text-decoration:none}.coupon-select-open .coupon-select-option .selected,.coupon-select-open .coupon-select-option .coupon-select-hover{background-color:#f5f5f5}.coupon-select-open .coupon-select-option .selected .coupon-link-option,.coupon-select-open .coupon-select-option .coupon-select-hover .coupon-link-option{color:#699f00}.coupon-select-disabled,.coupon-select-disabled:hover,.coupon-select-open .coupon-handler-box i.fr,.coupon-select-open .coupon-select-option i.fr{color:#999}.coupon-select-disabled{cursor:not-allowed}.coupon-con1{position:relative}.coupon-select-all{position:absolute;right:0}.pr{position:relative}.c-333{color:#333}.footer{line-height:20px;text-align:center;padding:0 0 20px;clear:both;background:0;color:#999}.footer a.link0{color:#999}.footer a.link0:hover{color:#518900}.footer .footmenu{padding-top:9px;padding-bottom:3px}.footer .footmenu a{background:url(http://www.qiyipic.com/common/fix/index_images/rankbtn.png) no-repeat 0 -57px;padding-left:10px;padding-right:8px}.footer .footmenu a.s1{background:0}.big_bg{background:url(http://www.qiyipic.com/common/fix/index_images/indexLine.png) no-repeat center 0 transparent;height:17px;padding-top:17px;width:100%}.footer .lastLine{margin-top:10px;text-align:center}.footer .lastLine a{color:#999}body{background:url(http://www.qiyipic.com/common/fix/index_images/sybg.png) repeat left top;color:#333;font:normal 12px/18px "\5FAE\8F6F\96C5\9ED1",Arial,Helvetica,sans-serif;margin:0;padding:0}div,h1,h2,h3,h4,h5,h6,p,dl,dt,dd,ul,ol,li,form,th,td,table,label,article,aside,dialog,footer,header,section,footer,nav,figure,hgroup{margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline}article,aside,dialog,footer,header,section,footer,nav,figure,hgroup{display:block}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul,li{list-style:none}img,iframe{border:0}em,strong{font-style:normal;font-weight:normal}sup,sub{vertical-align:baseline}button,input,select,textarea{margin:0;padding:0;font-size:100%;vertical-align:middle}select,input,img{vertical-align:middle}input:focus{outline:0;border-color:#699f00}button{cursor:pointer}textarea{resize:none;overflow-y:auto}table{border-collapse:collapse;border-spacing:0}.clearfix:after{content:'\0020';display:block;height:0;clear:both;font-size:0;visibility:hidden}.clearfix{*zoom:1}a{color:#000;text-decoration:none}a:hover{color:#518900;text-decoration:underline}ul,li{list-style:none}img,iframe{border:0}.container{width:988px;margin:0 auto}.c-box1{position:relative;margin-top:20px}.c-box1-new{margin-top:0}.c-box1 .s-line{position:absolute;width:14px;height:202px;background:url(http://www.qiyipic.com/common/fix/hy_images/line-bg.png) no-repeat;left:410px;top:4px;z-index:2;zoom:1}.hy-hd{background:url(http://www.qiyipic.com/common/fix/hy_images/singshadow.png) no-repeat -1996px 0 transparent;height:6px;overflow:hidden}.hybd0{background:url(http://www.qiyipic.com/common/fix/hy_images/l-bg.png) no-repeat 0 0;height:45px}.hy-bd{background:url(http://www.qiyipic.com/common/fix/hy_images/singshadow.png) repeat-y;position:relative}.hy-bd.cbd0{padding-bottom:1px}.hy-ft{background:url(http://www.qiyipic.com/common/fix/hy_images/singshadow.png) no-repeat -998px 0;height:6px;overflow:hidden}.c-pic{width:420px;text-align:center;float:left}.c-pic img{margin-top:14px}.c-cont{float:left;padding-left:60px}.c-cont .c-title{color:#518900;font-size:14px;line-height:30px;padding-top:10px}.c-cont ul li{background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat 1px -140px;padding-left:14px;line-height:24px;vertical-align:middle;color:#6c6c6c}.c-tab{margin-top:2px;margin-left:4px}.c-tab li{float:left;font-size:14px;color:#3a3a3a;line-height:43px;padding:0 20px;border-right:#e0e0e0 1px solid;background:url(http://www.qiyipic.com/common/fix/hy_images/tab0.png) repeat-x;cursor:pointer}.c-tab li.selected{background-position:0 -53px;color:#518900}.c30{padding:30px}.c20{padding:20px}.tc{text-align:center}.tl{text-align:left}.tr{text-align:right}.g-box{border:#c5da99 1px solid;background:#f6fbee;padding:20px}.g-box-n{border:0;background:0}.c-js{font-family:"宋体";line-height:21px;color:#9a9a9a}.c-js span{color:#518900}.c-text{position:relative;height:38px;border-bottom:#eaeaea 1px dotted;margin-bottom:15px}.dot-line{height:14px;border-bottom:#eaeaea 1px dotted;margin-bottom:15px}.c-text label{color:#6c6c6c;font-size:14px}.sj-input{width:252px;height:26px;line-height:26px;background:url(http://www.qiyipic.com/common/fix/hy_images/input.png) no-repeat;border:0;padding:2px 10px}.btn{background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat;display:inline-block}.btnnext{width:122px;height:36px;background-position:0 -175px;color:#fff;font-size:16px;text-align:center;line-height:36px}.btnljcz{width:109px;height:37px;background-position:0 -405px;color:#fff;font-size:16px;text-align:center;line-height:36px;position:relative;top:10px}.btnljgm{width:109px;height:37px;background-position:0 -452px;color:#fff;font-size:16px;text-align:center;line-height:36px;position:relative;top:10px}a.btnnext:hover{background-position:0 -221px;color:#fff;font-size:16px;text-align:center;line-height:36px}a.btnnext:hover{color:#fff;text-decoration:none}.hy-bd .c-ty{margin-top:16px;text-align:right}.hy-bd .c-ty{line-height:36px;vertical-align:middle}.c-ty input{vertical-align:-3px;*vertical-align:-1px}.hy-bd .xiugai{color:#6c6c6c;font-size:14px;padding-bottom:14px}.pro_g1{background:#fff;float:left;height:105px;padding:15px;text-align:justify;width:150px;border:#e6e6e6 1px solid}.pro_g{background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat right -44px;float:left;height:30px;margin:50px 60px 0;width:29px}.p_1{color:#fff;font:bold 12px/24px "宋体";margin-left:27px;padding:0 6px;text-align:center;width:73px;height:26px;background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat 0 -355px;line-height:26px}.p_2{margin-top:15px}.price2{color:#ec6022;font:bold 20px/21px Times New Roman}.gbox0{padding-left:35px;padding-right:35px}.g-tips{width:844px;height:67px;background:url(http://www.qiyipic.com/common/fix/hy_images/l-bg.png) no-repeat 0 -159px;text-align:center;color:#518900;font-size:16px;line-height:67px}.g-box .zhushi{line-height:46px;text-align:right;color:#6c6c6c;margin-bottom:-20px}.g-box .zhushi b{color:#eb6100}.chs{color:#eb6100}.c6c{color:#6c6c6c}.cgre{color:#518900}.sel{width:172px;height:24px;line-height:24px;padding-top:4px}.bank-logo{margin-left:-20px}.bank-logo input{margin-right:0;*margin-right:-4px;margin-left:0;*margin-left:-4px}.bank-logo li{float:left;margin-left:42px;display:inline}.bank-logo li.more{width:145px;height:44px;line-height:44px;vertical-align:middle}.bank-logo li.more .close{width:145px;height:44px;line-height:44px;vertical-align:middle;background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat right -263px;padding-right:10px;margin-left:15px;display:inline}.bank-logo li.more .open{width:145px;height:44px;line-height:44px;vertical-align:middle;background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat right -281px;padding-right:10px;margin-left:15px;display:inline}.bank-logo .bankicon{cursor:pointer}.bankicon{background:url(http://www.qiyipic.com/common/fix/hy_images/bankicon_20140730.png) no-repeat;border:1px solid #e0e0e0;display:inline-block;height:32px;margin:5px 5px 5px 0;text-indent:-9999px;vertical-align:middle;width:120px;position:relative}.current .bankicon{border:#518900 1px solid}.ic-zsyh{background-position:0 0}.ic-gsyh{background-position:0 -42px}.ic-jsyh{background-position:0 -84px}.ic-nyyh{background-position:0 -126px}.ic-zgyh{background-position:0 -168px}.ic-jtyh{background-position:0 -210px}.ic-pfyh{background-position:0 -252px}.ic-xyyh{background-position:0 -294px}.ic-gdfz{background-position:0 -336px}.ic-gdyh{background-position:0 -378px}.ic-msyh{background-position:0 -420px}.ic-zxyh{background-position:0 -462px}.ic-shyh{background-position:0 -504px}.ic-nbyh{background-position:0 -546px}.ic-payh{background-position:0 -588px}.ic-ncsy{background-position:0 -630px}.ic-hzyh{background-position:0 -672px}.ic-bjyh{background-position:0 -714px}.ic-zfb{background-position:0 -756px}.ic-cft{background-position:0 -798px}.ic-bfb{background-position:0 -840px}.ic-wyzx{background-position:0 -882px}.ic-zgyz{background-position:0 -1092px}.ic-bdqb{background-position:0 -1185px}.box2{width:988px;background:url(http://www.qiyipic.com/common/fix/hy_images/l-bg.png) no-repeat 0 -55px;height:94px;font-size:14px}.box2 .title-line{color:#010101}.box2 .con-line{color:#6c6c6c}.box2 td{line-height:45px;vertical-align:middle}.hy-bd .gonext .span0{text-align:left;padding-top:200px;padding-bottom:220px;padding-left:280px;font-size:14px;line-height:200%}.hy-bd .gonext .span1{text-align:center;line-height:200%;padding:110px 0}.form_list{padding:22px 0 0 20px}.q-register2 .form_list{position:relative;height:445px;overflow:hidden}.logLeft .form_list{padding-top:10px}.form_list h3.signdesc{height:19px;margin-bottom:10px;background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat 5px -1px;text-indent:-9999px;overflow:hidden}.regTabs{width:100%;line-height:31px}.regTabs th,.regTabs td{padding:0;vertical-align:top}.regTabs th{width:80px;font-weight:normal;text-align:right;color:#2e2e2e;font-size:14px}.codetxt{display:block;float:left;width:130px}.code{display:block;float:left}.hadqy{margin-left:10px;font-size:14px;display:inline-block;line-height:35px}.text0,.text1{width:250px;height:15px;padding:8px 6px;margin-right:5px;border:0;color:#999;background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat 0 -25px;color:#999;font-family:"\5FAE\8F6F\96C5\9ED1"}.text1{width:108px;background-position:0 -94px}.text_on{background-position:0 -58px}.text1_on{background-position:0 -127px}.regTabs td input.btn2{margin-top:-2px}.wrong,.error{display:inline-block;height:28px;padding-left:25px;color:#eb6100;line-height:28px;background:url(http://www.qiyipic.com/common/fix/action_images/acion.png) no-repeat 0 5px}.right{display:inline-block;width:15px;height:17px;background:url(http://www.qiyipic.com/common/fix/action_images/acion2.png) no-repeat 0 3px}.btnlog,.btnlog_on{display:inline-block;width:123px;height:34px;border:0;background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat -137px -94px;cursor:pointer;vertical-align:top}.btnlog{width:90px;background-position:0 -361px}.btnlog_on{width:90px;background-position:-92px -361px}.btn1{background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat 0 -267px;width:123px;height:35px;border:0;cursor:pointer}.btn1_on{background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat 0 -311px;width:123px;height:35px;border:0;cursor:pointer}a.onlink{color:#369;text-decoration:none}a.onlink:hover{color:#4c7d08;text-decoration:underline}.digitList li{height:28px;line-height:28px;float:left;background:url(http://www.qiyipic.com/common/fix/hy_images/right-line.png) no-repeat right 8px;padding-right:8px;_padding-right:6px}.digitList a{display:block;padding-left:8px;_padding-left:6px;color:#666;text-decoration:none;font-family:"\5FAE\8F6F\96C5\9ED1"}.digitList a em{display:inline-block;float:left;width:16px;height:16px;margin:6px 5px 0 0;vertical-align:middle;background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat -237px -177px}.digitList a.renren em{background-position:-237px -177px}.digitList a.baidu em{background-position:-263px -177px}.digitList a.pay em{background-position:-285px -177px}.digitList a.happy em{background-position:-213px -177px}.digitList li.last{background:0}.digitList a:hover{color:#000;text-decoration:none}.elseMore .digitBox{display:block}.regRt{bottom:0;left:14px;position:absolute;padding-left:160px;height:90px;width:100%}.otherLog{margin-top:3px;width:160px;position:absolute;left:0;top:0}.otherLog h3.union{height:20px;margin-bottom:20px;line-height:20px;font-size:14px;color:#262626}.elseList{height:90px;float:left;width:270px}.elseDef{position:relative;z-index:2;width:270px;height:33px;font-family:"\5B8B\4F53"}.elseDef a.sina,.elseDef a.qq{display:block;float:left;width:93px;height:32px;margin-right:10px;color:#666;text-decoration:none;text-indent:-9999px;background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat 0 -290px}.elseDef a.qq{background-position:-96px -290px}.elseDef a.sina:hover{background-position:0 -325px}.elseDef a.qq:hover{background-position:-96px -325px}.elseDef a em{display:inline-block;float:left;width:16px;height:16px;margin:6px 3px 0 0;background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat -279px -33px;overflow:hidden;vertical-align:middle}.elseDef a.qq em{background-position:-279px -65px}.elseDef a.arrow{font-family:"\5FAE\8F6F\96C5\9ED1";display:block;position:absolute;z-index:6;top:0;left:202px;width:30px;height:34px;padding:0 18px 1px 0;margin-right:0;line-height:34px;text-align:right;background:url("http://www.qiyipic.com/common/fix/register_images/zctxt.png") no-repeat scroll -199px -290px transparent}.elseMore a.arrow{background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat right top}.digitBox{display:none;position:absolute;z-index:4;top:34px;width:250px;left:0}.digit-hd,.digit-ft{height:2px;background:url(http://www.qiyipic.com/common/fix/hy_images/button.png) no-repeat 0 -391px;overflow:hidden}.digit-ft{background-position:0 -393px}.digit-bd{border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;background-color:#fff}.h30{height:30px;overflow:hidden}.h_g{height:23px;_height:40px;overflow:hidden;line-height:23px}.q-register{position:absolute;left:520px;width:460px;height:100%}.q-register2{position:absolute;left:25px;width:460px;height:100%}.mid-line{position:absolute;left:494px;width:1px;height:412px;border-right:#cbcbcb 1px dotted}.top0{top:-10px;*top:0;position:relative}.h450{height:450px}.dan_line2{padding:20px 20px 0 42px}.hd_header{height:60px}.hd_header .hd{width:980px;margin:0 auto;padding-top:10px}.hd_header .hd .logo{background:url(http://www.qiyipic.com/common/fix/hy_images/hd_logo.png) no-repeat;width:124px;height:42px;display:block}.regTabs .pt20{padding-top:20px}.tips_yz{color:#898989;line-height:38px;vertical-align:middle}.mailType{background:#fff;border:1px solid #c3c3c3;font:12px/25px Tahoma;width:230px}.mailType a,.mailType span{color:#7d7d7d;display:block;padding:0 10px}.mailType .selected{-moz-border-bottom-colors:none;-moz-border-image:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:none repeat scroll 0 0 #f1f1f1;border-color:#e8e8e8;border-style:solid;border-width:1px 0;color:#000;line-height:23px}.mailType a:hover{-moz-border-bottom-colors:none;-moz-border-image:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:none repeat scroll 0 0 #f1f1f1!important;border-color:#e8e8e8;border-style:solid;border-width:1px 0;color:#000!important;line-height:23px;text-decoration:none}.hytq h3{color:#518900;font-size:14px;line-height:200%;height:40px}.hytq-list p{padding-left:70px;position:relative;height:57px;font-size:14px;color:#6c6c6c;line-height:24px;padding-top:6px}.hytq-list em{width:60px;height:63px;display:block;position:absolute;left:0;top:0;background:url(http://www.qiyipic.com/common/fix/hy_images/slog.png) no-repeat}.hytq-list .sbg01{background-position:0 0}.hytq-list .sbg02{background-position:0 -73px}.hytq-list .sbg03{background-position:0 -146px}.hytq-list .sbg04{background-position:0 -219px}.hytq-list .sbg05{background-position:0 -290px}.crumb_new{padding-top:20px;padding-left:4px}.select-box{width:243px;height:175px;background:url(http://www.qiyipic.com/common/fix/hy_images/qianse-k.png) no-repeat}.select-box-n{background:url(http://www.qiyipic.com/common/fix/hy_images/tjqs-k.png) no-repeat;width:243px;height:175px}.sebg0{width:243px;height:175px;background:url(http://www.qiyipic.com/common/fix/hy_images/green-k.png) no-repeat}.sebg0-n{width:243px;height:175px;background:url(http://www.qiyipic.com/common/fix/hy_images/tjgr.png) no-repeat}.hd-title{color:#000;text-shadow:#fff 1px 1px}.sebg0 .hd-title{color:#fff;text-shadow:#191919 1px 1px}.sebg0-n .hd-title{color:#fff;text-shadow:#191919 1px 1px}.select-box h2{height:50px;text-align:center;line-height:50px;color:#fff;font-size:15px;color:#000}.select-box .cont{height:75px;color:#b6ae7f;font-size:20px;text-align:center;padding-top:10px}.select-box .cont em{font-style:normal;font-size:36px}.select-box .cont input{vertical-align:6px;line-height:50px}.select-box .cont label{height:50px;display:block;line-height:50px}.select-box .mony{text-align:center;line-height:34px;color:#747474;font-size:14px}.select-box .mony span{padding-right:50px}.select-box .mony b{color:#518900;font-style:italic}.mt20{margin-top:20px}.hytq{margin-top:10px;margin-bottom:20px}.pb15{padding-bottom:15px}.f16{font-size:16px}.default_tip{clear:both}.default_tip span{display:block;color:#999;line-height:28px;clear:both}.default_tip span.right{height:0;background-image:none;overflow:hidden}.default_tip span.tex_info{display:none;height:0;overflow:hidden}.line_n1120{line-height:54px;vertical-align:middle;border-bottom:#dbdbdb 1px dotted;font-size:14px}.line_n1120_none{line-height:54px;vertical-align:middle;font-size:14px}.green{color:#518900}.n_qdtips1120{background:#fdf5ee;border:#f7bf8d 1px solid;height:30px;line-height:30px;padding-left:10px}.sebg0 h2{color:#fff}.kjzfLogo{display:inline-block;vertical-align:text-bottom;background:url(http://www.qiyipic.com/common/fix/hy_images/kjzf.png) no-repeat;width:90px;height:23px;margin-right:10px}.g-box-kjzf{border:#ffe1a7 1px solid;background:#fff9ec;padding:20px;margin-top:10px}.ic-yinhangka{background:url(http://www.qiyipic.com/common/fix/hy_images/bankicon.png) no-repeat 0 -924px}.ic-zhifubao{background:url(http://www.qiyipic.com/common/fix/hy_images/bankicon.png) no-repeat 0 -966px}.bankBox{width:228px;height:32px}.em-1{width:120px;height:32px}.em-1,.em-2{float:left}.bankicon .em-2{width:98px;height:32px;line-height:34px;padding-left:10px;text-indent:0;background:#fff}.g-box-kjzf .line2{color:#cacaca;margin:0 10px;font-style:normal}.g-box-kjzf .otherS{margin-left:20px}.g-box-kjzf .ztEnd{margin:20px 0 0 20px;*margin:0 0 0 20px}.kjzfCon{margin-top:20px}.dis-money{text-align:right;font-size:14px;line-height:54px}.dis-money span{color:#eb6100;font-size:20px;margin-right:3px}.dismon{margin-left:15px;font-size:14px}.add0128{float:left;width:700px;line-height:54px;margin-top:0;_margin-top:20px}.dikou{margin-left:5px}.c00{color:#000}.c9a{color:#9a9a9a}.pb10{padding-bottom:10px}.pt10{padding-top:10px}.pl30{padding-left:30px}.mr25{margin-right:25px}.lineH22{line-height:22px}.underline{text-decoration:underline}.ic-zfbkj{background-position:0 -756px}.ic-ybzfkj{background-position:0 -1050px}.ic-zfbkj,.ic-ybzfkj{position:relative}.pl245110{padding:110px 0 110px 245px}.vip20130401 .bank-logo li.more .close,.vip20130401 .bank-logo li.more .open{margin-left:40px}.vip20130401 .timelast{padding-left:20px}.vip20130401 .timelast li{float:left;padding-right:40px;position:relative}.vip20130401 .timelast label{cursor:pointer;vertical-align:middle}.vip20130401 .tips_gray{width:159px;padding-top:6px;height:26px;background:url(http://www.qiyipic.com/common/fix/hy_images/vipTips.png) no-repeat 0 -44px;line-height:26px;text-align:center;position:absolute;top:25px;left:-10px}.vip20130401 .ic-hot{width:52px;height:17px;background:url(http://www.qiyipic.com/common/fix/hy_images/vipTips.png) no-repeat 0 0;line-height:14px;text-align:center;position:absolute;top:-10px;left:60px;color:#fff;font-family:\5B8B\4F53}.vip20130401 .dot-line{margin-bottom:10px}.vip20130401 .dismon{font-size:12px;margin-left:0}.vip20130401 .dismon select{color:#6c6c6c;padding:4px;margin:0 5px;border:1px solid #ccc}.vipTaocan dt{height:30px}.vipTaocan dd{line-height:20px}.vip20130401 .twoBtns{padding:30px 0 0 130px}.emicon{background:url(http://www.qiyipic.com/common/fix/hy_images/icon_add.png) no-repeat;display:inline-block;height:47px;text-indent:-9999px;vertical-align:middle;width:15px;position:absolute}.icon-kuaijie{right:0;top:0;width:30px;height:16px;background-position:0 -114px}.icon-xinyong{right:-15px;top:0;background-position:0 0}.icon-jieji{right:-15px;top:0;background-position:0 -57px}.hy-hd0815{background-color:#fff;border:1px solid #d9d9d9}.hy-bd0815{background-color:#fff;border:1px solid #d9d9d9;border-top:0}.bt_border-green{border:0;border-top:2px solid #518900}.bt_border-green .hy-hd0815{border-top:0;text-align:center}.hy-hd0815 .pay_box{text-align:left;display:inline-block;*display:inline;*zoom:1}.hy-hd0815 .pay_box h3{font-size:20px;line-height:34px;font-weight:bold;color:#666}.hy-hd0815 .pay_box ul{margin:10px 0 0 45px;line-height:24px;display:inline-block;*display:inline;*zoom:1}.hy-hd0815 .pay_box .disc li{list-style-type:disc}.hy-tab{background:url(../img/pay-icon.png) 0 0;height:35px;line-height:35px}.hy-tab .c-tab{margin:0}.hy-tab .c-tab li{color:#000;line-height:35px;background:0}.hy-tab .c-tab li.selected{background:url(../img/pay-icon.png) 0 -38px;color:#518900}.hy-bd0815 .tlAd{margin:20px 0}.hy-bd0815 .c30{padding:30px 33px}.hy-bd0815 .fs30,.hy-hd0815 .fs30{font-size:30px}.hy-bd0815 .fs18{font-size:18px}.hy-bd0815 .fs14{font-size:14px}.hy-bd0815 .c333{color:#333}.hy-bd0815 .c666{color:#666}.hy-bd0815 .c999,.hy-hd0815 .c999{color:#999}.hy-bd0815 .orange{color:#eb6100}.hy-bd0815 .tr{text-align:right}.hy-bd0815 .p10{padding:10px}.hy-bd0815 .timelast li{margin-right:40px;float:left;display:inline;position:relative;zoom:1}.hy-bd0815 .timelast strike{margin-right:10px}.hy-bd0815 .sub_box,.hy-bd0815 .sub_box-other{position:relative;border:1px solid #cdcdcd;width:178px;display:inline-block;*display:inline;*zoom:1;_height:60px;vertical-align:middle;margin-left:7px}.hy-bd0815 .selected .sub_box{border:1px solid #8cca33}.hy-bd0815 .selected .sub_box-left{background-color:#d0f5bb;border-right-color:#a0d357}.hy-bd0815 .selected .icons-selected{display:block}.hy-bd0815 .sub_box-left,.hy-bd0815 .sub_box-right{float:left}.hy-bd0815 .sub_box-left{background-color:#f2f2f2;border-right:1px dotted #d6d6d6;color:#518900;text-align:center;width:67px;line-height:30px;height:30px;padding:15px 0}.hy-bd0815 .sub_box-right{padding:12px 0 12px 10px;position:relative;width:100px;height:36px}.hy-bd0815 .sub_box-other{height:20px;padding:20px 0}.hy-bd0815 .sub_box-otherTle{padding:0 20px}.hy-bd0815 .sub_box-other-list{overflow:hidden;position:absolute;top:62px;right:0;_top:63px;_right:-1px;z-index:3;background-color:#fff;border:1px solid #cdcdcd;border-top:0;width:178px}.hy-bd0815 .sub_box-other-list li{display:block;float:none;margin:-1px 0 0 0;_height:18px}.hy-bd0815 .sub_box-other-list li a{display:block;padding:5px 10px;border-top:1px dotted #d6d6d6;background-color:#fff}.hy-bd0815 .sub_box-other-list li label{display:block}.hy-bd0815 .sub_box-other-list li a:hover{color:#333;text-decoration:none;background-color:#f6fff1}.hy-bd0815 .sub_box-other-list li a span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.hy-bd0815 .ky-box{position:relative}.hy-bd0815 .checkBox-box label{display:inline-block;vertical-align:middle;margin-top:5px}.hy-bd0815 a.c00,.hy-hd0815 a.c00{text-decoration:underline;margin-right:5px}.hy-bd0815 .checkBox-arrow{position:absolute;top:-1px;right:-1px;background-color:#f2f2f2;border-radius:0 0 2px 2px;border:1px solid #c7c7c7}.hy-bd0815 .icons-checkBox input,.hy-bd0815 .icons-radioBox input{filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity:0;opacity:0}.pay_icons{background:url(../img/pay-icon.png) 0 0;display:inline-block;vertical-align:middle}.pay_icons_radio{background:url(http://www.qiyipic.com/common/fix/hy_images/pay-icon_radio.png) 0 0 no-repeat;display:inline-block;vertical-align:middle}.icons-selected{width:24px;height:24px;background-position:-134px -76px;position:absolute;bottom:0;right:0;display:none}.icons-arrow{width:20px;height:20px;background-position:-80px -100px}.icons-kjzf{width:78px;height:24px;background-position:0 -76px}.icons-green_btn-larger{width:109px;height:37px;line-height:37px;text-align:center;font-size:16px;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.2);background-position:-49px -159px}.icons-green_btn-larger:hover{color:#fff;text-decoration:none;background-position:-49px -199px}.icons-green_btn-larger:active{background-position:-49px -239px}.icons-green_btn-small{width:47px;height:23px;line-height:23px;text-align:center;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.2);background-position:0 -159px}.icons-green_btn-small:hover{color:#fff;text-decoration:none;background-position:0 -187px}.icons-green_btn-small:active{background-position:0 -215px}.icons-checkBox{width:20px;height:20px;background-position:0 -100px}.icons-radioBox{width:20px;height:20px;background-position:3px 1px}.icons-checkBox:hover{background-position:-20px -100px}.icons-checkBox:active,.hy-bd0815 .checkBox-box .selected{background-position:-40px -100px}.icons-radioBox:hover{background-position:-17px 1px}.icons-radioBox:active,.hy-bd0815 .radioBox-box .selected{background-position:-37px 1px}.icons_checkbox-arrow{width:20px;height:20px;background-position:-98px -78px}.icons-succeed{width:34px;height:34px;background-position:0 -120px;margin-right:10px}.icons-fail{width:34px;height:34px;background-position:-44px -120px;margin-right:10px}.hy-bd0815 .checkBox-arrow .icons_checkbox-arrow{background-position:-78px -78px}.hy-bd0815 .voucher_pop{border:1px solid #cdcdcd;background-color:#fff;width:190px;position:relative;padding:10px 25px;zoom:1;border-radius:2px;margin:10px 0 0 4px}.hy-bd0815 .voucher_pop .icons-miniArrow{position:absolute;top:-9px;left:38px;width:20px;height:10px;background-position:-121px -102px}.hy-bd0815 .voucher_list{line-height:30px}.hy-bd0815 .voucher_list .radio span{display:inline-block;vertical-align:middle;margin-left:5px}.hy-bd0815 .voucher_list .v-txt{width:185px;border:1px solid #cdcdcd;padding:0 0 0 3px;height:24px}.hy-bd0815 .voucher_list .v-yz_txt{width:68px}.hy-bd0815 .voucher_list .v-yz_img img{width:66px;height:26px}.hy-bd0815 .voucher_list .v-sl_txt{width:100%;height:26px}.hy-bd0815 .voucher_list .icons-green_btn-small{margin-top:5px}.hy-bd0815 .checkBox-box .selected:hover{background-position:-60px -100px}.hy-bd0815 .radioBox-box .selected:hover{background-position:-57px 1px}.hy-bd0815 .dis-money{line-height:30px;float:right;margin:20px 0}.hy-bd0815 .ic-zfbkj{background-position:0 -1137px}.hy-bd0815 .icon-kuaijie,.hy-bd0815 .icons-kjzf{display:none}.vip0815 .scrollBox{height:170px}.vip0815 .sl_videos .pdscrollBox{padding:19px 60px 19px 60px}.vip0815 .scrollList .piclist11070{margin-left:-30px}.vip0815 .scrollList .piclist11070 li{width:145px;padding:0 1px 0 30px}.vip0815 .sl_videos .arrayL{left:-40px}.vip0815 .sl_videos .arrayR{right:-40px}.vip0815 .piclist11070 .piclist_img,.vip0815 .piclist11070 .piclist_img img{width:145px;height:90px}.hy-tab .c-tab li span.orange{color:#eb6100}.hy-tab .c-tab li{position:relative}.hy-tab .c-tab li em.new,.hy-tab .c-tab li em.cut,.hy-tab .c-tab li em.rush{width:20px;height:16px;line-height:14px;background:url("http://www.qiyipic.com/common/fix/hy_images/vip_web_icon.png") no-repeat 0 0;display:inline-block;text-align:center;color:#fff;position:absolute;top:-6px;right:0}.hy-bd0815 .orange{width:204px}.dis-money span.orange{color:#eb6100}.dot-line{height:42px}.hy-bd0815 .orange li{padding:5px 0 5px 25px;_padding:5px 0 5px 32px;margin:0;color:#eb6100}.hy-bd0815 .orange-pd8 li{padding:5px 0 5px 10px}.hy-bd0815 .sub_box-other-list{left:7px}.regBuy{width:100%;float:left;border-top:1px solid #ededed}.regBuy .tit{padding:26px 0 8px 0;font-size:14px}.regBuy .tit span{font-size:12px;color:#666;padding-left:10px}.regBuy .have{font-size:14px;color:#666;padding-top:30px}.regBuy .have a,.regBuy .prompt a{text-decoration:underline}.regBuy th,.regBuy td{padding-top:10px;vertical-align:top}.regBuy th{width:76px;text-align:right;font-size:14px;font-weight:normal;line-height:31px}.regBuy td{font-family:"\5B8B\4F53"}input.txtLogin,input.txtLogin_on{float:left;width:193px;height:32px;padding:0 6px;height:30px\9;padding-top:2px\9;height:29px\9\0;padding-top:3px\9\0;*height:28px;*padding-top:4px;border:0;color:#999;font-size:12px;background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat 0 -435px;vertical-align:middle;line-height:28px}input.txtLogin_on{background-position:0 -468px}.regBuy .prompt,.regBuy .phone_yzm{line-height:30px;color:#666}.phone_yzm{float:left;margin:0 10px 0 20px}.phone_yzm span{float:left;background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat 0 -506px;padding:0 0 0 18px;line-height:30px}.phone_yzm span a{background:url(http://www.qiyipic.com/common/fix/register_images/zctxt.png) no-repeat 100% -550px;display:block;padding:0 18px 0 0}.phone_yzm span a:hover{text-decoration:none}.phone_yzm span .disabA{color:#adadad;cursor:default}.cT30{padding:0 30px 30px 30px}.loginMobile-v{font-size:14px;font-family:"微软雅黑"}.loginMobile-v input.txtLogin,.loginMobile-v input.txtLogin_on{border:1px solid #dadada;width:240px;background:0}.loginMobile-v .regBuy td{font-family:"微软雅黑";color:#999}.loginMobile-v .regBuy .prompt,.loginMobile-v .regBuy .phone_yzm{color:#999}.loginMobile-v .phone_yzm{margin:0 10px}.loginMobile-v .phone_yzm span{background:0;padding:0}.loginMobile-v .phone_yzm span a{padding:0;width:105px;height:30px;text-align:center;color:#699f00;background:#f8f8f8;border:1px solid #dadada}.loginMobile-v .phone_yzm span a:hover{color:#fff;text-decoration:none;background:#699f00}.loginMobile-v .get-hy{font-size:18px;color:#333;float:left;position:relative}.loginMobile-v .ico-hot-tag{position:absolute;top:0;right:-42px;background:url(http://www.qiyipic.com/common/fix/site/site-hot-tag.png) no-repeat;width:36px;height:18px}.loginMobile-v .tit span.subTit-orange{font-size:14px;color:#eb5300;margin-left:42px}.loginMobile-v .site-btn{font-size:14px;padding:8px 4px}.loginMobile-v .pt20{padding-top:20px}.loginMobile-v .submit-btn-v{margin-left:10px}.loginMobile-v .submit-btn-v a{color:#699f00}.loginMobile-v .servIco{margin-right:5px;background:url(http://www.qiyipic.com/common/fix/v3_play_images/shareIco_v.png) no-repeat;display:inline-block;height:20px;vertical-align:middle;width:20px}.loginMobile-v .ico_qq{background-position:-60px 0}.loginMobile-v .ico_qq2013{background-position:-30px 0}.loginMobile-v .ico_baiduspace{background-position:-60px -60px}.loginMobile-v .ico_friends{background-position:-120px -120px}.loginMobile-v .otherLogin{margin:30px 0 0 75px;color:#333}.loginMobile-v .otherLogin span{float:left}.loginMobile-v .otherLogin ul{float:left}.loginMobile-v .otherLogin ul li{float:left;margin-right:20px}.loginMobile-v .otherLogin li a:hover{text-decoration:none}.popup_inner_closeBtn{position:absolute;right:10px;top:5px;z-index:12}.btn-close-popup{color:#fff;font-family:Helvetica,Arial,sans-serif;font-size:32px;line-height:26px}.btn-close-popup:hover{color:#fff;text-decoration:none}.hy-tip{border:1px solid #ffdfc6;padding:0 20px;line-height:35px;background-color:#fffcec}.hy-tip .colff8422{color:#ff8422}.mod-vip-pop{background-color:#dbdbdb;padding:1px 1px 0 1px;border-bottom:2px solid #e6e6e6}.mod-vip-pop .close{color:#666;font-size:24px;position:absolute;top:14px;right:14px}.mod-vip-pop .close:hover{text-decoration:none;color:#7ab700}.mod-vip-pop .pop_bd{padding:8px 25px;width:460px;background-color:#fff;border-bottom:1px solid #e6e6e6}.mod-vip-pop .pop_bd-sm{width:240px}.mod-vip-pop .pop-btn-sm,.mod-vip-pop .pop-btn-large{display:inline-block;color:#fff;border:0;background-color:#699f00;line-height:26px}.mod-vip-pop .pop-btn-sm{margin-left:124px;padding:0 15px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mod-vip-pop .pop-btn-large{font-size:16px;margin-left:12px;padding:7px 30px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mod-vip-pop .pop-btn-sm:hover,.mod-vip-pop .pop-btn-large:hover{background-color:#7db718;text-decoration:none}.mod-vip-pop .pop-btn-sm:active,.mod-vip-pop .pop-btn-large:active{background-color:#5b8d00}.mod-vip-pop .title-success{line-height:40px;font-size:16px;color:#699f00;text-align:center;padding-bottom:3px}.mod-vip-pop .icon-success{width:39px;height:39px;display:inline-block;vertical-align:middle;background:url(http://www.qiyipic.com/common/fix/vip/icon-success.gif) no-repeat;overflow:hidden;margin-right:14px}.mod-vip-pop .vip-success-pop,.mod-vip-pop .vip-tel-tip{width:430px;padding:7px 15px}.mod-vip-pop .vip-success-pop .title-success,.mod-vip-pop .vip-tel-tip .title-success{padding-top:25px}.mod-vip-pop .vip-success-pop .tip{color:#666;line-height:24px;padding-top:2px}.mod-vip-pop .vip-success-pop .errorTip{height:30px;padding-left:124px;color:#dd1006;line-height:30px;font-size:12px;text-align:left}.mod-vip-pop .tel-yz-form li{padding-bottom:20px}.mod-vip-pop .tel-yz-form label{width:124px;text-align:right;line-height:30px;color:#999;font-size:14px;display:inline-block;vertical-align:middle}.mod-vip-pop .tel-yz-form .wh1,.tel-yz-form .wh2{line-height:16px;line-height:16px;padding:6px 10px;border:1px solid #e1e1e1;display:inline-block;vertical-align:middle}.mod-vip-pop .tel-yz-form .get-yz{border:1px solid #e1e1e1;color:#699f00;background-color:#f9f9f9;line-height:28px;display:inline-block;vertical-align:middle;padding:0 14px}.mod-vip-pop .tel-yz-form .get-yz:hover{border:1px solid #7db718;color:#fff;background-color:#7db718;text-decoration:none}.mod-vip-pop .tel-yz-form .get-yz:active{border:1px solid #5b8d00;color:#fff;background-color:#5b8d00}.mod-vip-pop .vip-tel-tip{width:200px;height:220px;padding:30px 0 0 230px;background:url(http://www.qiyipic.com/common/fix/vip/vip-tel-tip.jpg) no-repeat}.mod-vip-pop .vip-tel-tip .txt{color:#699f00;font-size:16px;line-height:40px;text-align:center}.mod-vip-pop .vip-tel-tip .des{line-height:30px;padding:30px 0 20px 0;color:#333}.mod-vip-pop .vip-tel-tip .tip-btn .link_txt,.vip-tel-tip .tip-btn .link_txt a{color:#999}.mod-vip-pop .vip-tel-tip .tip-btn .link_txt a:hover{color:#699f00}.alipayBox{position:relative}.alipay_title{font-size:16px;color:#333;height:18px;line-height:18px}.alipay_tip{color:red;position:absolute;top:-22px;left:0;padding-left:23px}.alipay_tipImg,.hotImg,.Img-alipay{background:url(http://www.qiyipic.com/common/fix/hy_images/alipay-icon.png) no-repeat}.alipay_tipImg{position:absolute;top:0;left:0;display:inline-block;width:17px;height:17px;background-position:0 0}.alipay_choice{margin-top:20px}.alipay_month{display:inline-block;float:left;width:220px;border:1px solid #71b800}.alipay_money{display:inline-block;height:36px;line-height:36px;margin:10px 0 0 57px;font-size:18px;color:#333;position:relative}.alipay_bigTxt{font-size:36px;color:#699f00;font-style:normal;margin-right:3px}.hotImg{display:block;position:absolute;top:6px;left:91px;width:31px;height:17px;background-position:-20px 0}.alipay_desc{display:inline-block;height:27px;line-height:27px;font-size:12px;color:#999;width:100%}.alipay_Img{height:36px;width:100%;text-align:center;background:#f5f5f5}.Img-alipay{display:inline-block;margin-top:9px;width:56px;height:19px;background-position:-60px 0}.alipay_hint{margin-top:37px;padding-bottom:25px}.alipay_hint h3,.alipay_hint .alipay_desc{height:20px;line-height:20px}.hy-bd0815 .sub_box-reset{margin-left:0}.timelast{margin-left:33px}.radio-icon,.hymt_tip,.rt-mark{display:block;background:url(http://www.qiyipic.com/common/fix/hy_images/hy-pay.png) no-repeat}.radio-icon{width:14px;height:14px;background-position:-20px 0;position:absolute;top:24px;left:-23px;z-index:50;zoom:1;cursor:pointer}.hy-bd0815 .timelast li.selected .radio-icon{background-position:0 0}.hy_method-txt{position:relative;display:inline-block;font-size:14px;color:#333}.hymt_tip{padding:0 5px 0 10px;display:block;width:100px;height:20px;line-height:20px;position:absolute;top:0;right:-120px;font-size:12px;color:#ff722c;background-position:0 -40px}.bank_logo-big .bankicon{width:128px;height:44px}.bank_logo-big li{margin-left:53px;position:relative;width:135px;height:75px;display:block;float:left;display:inline}.bank_logo-big li.selected .bankicon,.bank_logo-big li.hover .bankicon{border-color:#4f8a00}.bank_logo-red li.selected .bankicon,.bank_logo-red li.hover .bankicon{border-color:#ff722c}.bank_logo-big .radio-icon{width:18px;height:18px;top:19px;background-position:-60px 0}.hy-bd0815 .bank_logo-big .selected .radio-icon{background-position:-40px 0}.bank_logo-big .bankicon{margin-bottom:24px;position:absolute;z-index:25;top:0;right:0}.bank_logo-big .ic-zsyh{background-position:5px 7px}.bank_logo-big .ic-gsyh{background-position:5px -35px}.bank_logo-big .ic-jsyh{background-position:5px -77px}.bank_logo-big .ic-nyyh{background-position:5px -119px}.bank_logo-big .ic-zgyh{background-position:5px -161px}.bank_logo-big .ic-jtyh{background-position:5px -203px}.bank_logo-big .ic-pfyh{background-position:5px -245px}.bank_logo-big .ic-xyyh{background-position:5px -287px}.bank_logo-big .ic-gdfz{background-position:5px -329px}.bank_logo-big .ic-gdyh{background-position:5px -371px}.bank_logo-big .ic-msyh{background-position:5px -413px}.bank_logo-big .ic-zxyh{background-position:5px -455px}.bank_logo-big .ic-shyh{background-position:5px -496px}.bank_logo-big .ic-nbyh{background-position:5px -539px}.bank_logo-big .ic-payh{background-position:5px -581px}.bank_logo-big .ic-ncsy{background-position:5px -623px}.bank_logo-big .ic-hzyh{background-position:5px -665px}.bank_logo-big .ic-bjyh{background-position:5px -707px}.bank_logo-big .ic-zfb{background-position:21px -749px}.bank_logo-big .ic-cft{background-position:19px -791px}.bank_logo-big .ic-bfb{background-position:23px -833px}.bank_logo-big .ic-wyzx{background-position:5px -875px}.bank_logo-big .ic-zgyz{background-position:5px -1085px}.bank_logo-big .ic-bdqb{background-position:5px -1178px}.rt-mark{position:absolute;width:30px;height:30px;background-position:-80px 0;top:5px;right:5px;z-index:30}.hy_pop_bottom{display:none}.bank_logo-big .selected .hy_pop_bottom,.bank_logo-big .hover .hy_pop_bottom{display:block;position:absolute;bottom:7px;right:5px;width:130px;height:17px;line-height:17px;font-size:12px;background:#ff722c;text-align:center;color:#fff}.bank_logo-more em{cursor:pointer;display:block;width:128px;height:44px;line-height:44px;text-align:center;border:1px solid #c4dc9a;background:#f5fbee;margin:5px 5px 5px 0;font-size:14px;color:#699f00}.mt30{margin-top:30px}.img-monthly{background:url(http://www.qiyipic.com/common/fix/hy_images/imgMonthly.png) no-repeat}.alipay-monthly{position:relative;z-index:10}.alipay-hot,.alipay-first{position:absolute;top:-10px;right:-40px;width:61px;height:18px;background-position:0 0;z-index:10}.alipay-first{background-position:-90px 0}.alipay-remind{height:33px}.alipay-remind-con{width:690px}.alipay-remind-con li{width:345px;height:29px}.alipay-remind-con li em{float:left;width:7px;height:7px;margin-top:4px;background-position:0 -20px}.alipay_choice ul{padding-left:26px}.alipay_month{margin-right:72px;border-color:#e6e6e6}.alipay-options{margin-left:-0px;position:relative;top:46px;left:-28px;width:16px;display:block;height:16px;background:url(http://www.qiyipic.com/common/fix/hy_images/hy-pay.png) no-repeat;background-position:-60px 0}.alipay-price{height:31px;line-height:31px}.alipay-img{margin:-16px 0 0 2px;width:216px;height:75px}.img-monthly-baidu{background-position:0 -140px}.img-monthly-weixin{background-position:0 -60px}.img-monthly-zhifubao{background-position:0 -219px}.hotImg{top:3px;left:185px}.alipay_Img{position:relative}.alipay-month-selected{border:2px solid #699f00}.alipay-price-selected{display:none;position:absolute;bottom:0;_bottom:-1px;right:0;width:31px;height:31px;background-position:-20px -20px}.alipay-month-selected .alipay-price-selected{display:block}.alipay-month-selected .alipay-options{background-position:-40px 0}.alipay-btn{width:153px;height:37px;background-position:0 -300px}.alipay-btn:hover{background-position:0 -340px}.alipay_hint .alipay_hint-title{height:33px}.alipay_hint .alipay-desc-height22{height:22px}.alipay-faq h3{height:58px;border-top:1px dashed #ddd;line-height:72px}.alipay-faq p{line-height:22px}.vipGiftCard{padding-bottom:20px}.vgcTxt{font-size:14px;color:#333;line-height:16px;height:16px;padding-bottom:15px;text-align:center}.vgcBtn a,.vgcBtn a:hover,.vgcBtn a:active{display:block;width:210px;height:36px;text-align:center;line-height:36px;color:#fff;font-size:16px;background:#c79f6e;text-decoration:none;border-radius:3px;margin:5px auto 0}.vgcBtn a:hover{background:#dbb180}.vgcBtn a:active{background:#b58b57}.bank_cardType li{width:48px;height:65px;cursor:pointer}.cardTypeTxt{height:54px;line-height:54px;padding-left:5px;font-size:14px}.c-box1 .vip20130401{min-height:130px;height:auto;_height:130px}.starPicBox{position:absolute;top:0;right:10px}.vp_selectBox{color:#999;position:absolute;top:12px;left:192px}.vp_select{width:209px;height:26px;line-height:26px;padding-left:9px;border:1px solid #ddd;border-radius:2px;background:#fff;cursor:pointer}.vp_selectBox .c-333{padding-right:20px}.vp_select-con li.selected,.vp_select-con li.hover{background:#f5f5f5}.vp_select-con li.selected .c-333,.vp_select-con li.hover .c-333{color:#5aa700}.vp_select-con{display:none;z-index:50;position:absolute;top:28px;left:0;width:218px;border:1px solid #ddd;border-top:0}.vp_select-open .vp_select-con{display:block}.vp_select-con li{cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;float:left;width:200px;padding:0 9px;height:26px;line-height:26px}.vp_select .tip_t{display:block;width:9px;height:16px;position:absolute;left:198px;top:11px}.vp_select .tip_t .tip_inner{z-index:1;position:absolute;overflow:hidden;width:0;height:0;font-size:0;border:4px dashed transparent;border-top:6px solid #ddd}.vip_zone{float:right;display:inline;margin-top:5px;width:104px;position:relative;right:4px}.vip_zone .vp_selectBox{position:relative;top:0;left:0}.vip_zone .vp_select{width:102px;height:23px;line-height:23px;background:url(../img/pay-icon.png) 0 296px;padding:1px;border:0;border-radius:1px;text-align:center}.vip_zone .vp_select span{display:inline-block;height:23px;line-height:23px}.vip_zone .vp_select-open .vp_select{background:#f5f5f5;padding:0;border:1px solid #dedede}.vip_zone .vp_select .tip_t{right:5px;left:auto;top:10px}.vip_zone .vp_select .tip_t .tip_inner{border-top:5px solid #aaa}.vip_zone .vp_selectBox .c-333{padding:0 16px 0 10px}.vip_zone .vp_select-con{width:102px;top:25px}.vip_zone .vp_select-con li{background:#fff;border-right:0;text-align:center;width:84px;font-size:12px;height:32px;line-height:32px}.vp_select-con li.selected,.vp_select-con li.hover{background:#f5f5f5}.vip_zone .vp_select-con .c-333{padding:0}.vp_popBox{width:360px;border-bottom:2px solid #e6e6e6}.vp_popBox-w280{width:280px}.vp_popBox-w360{width:360px}.vp_popBox-w400{width:400px}.vp_pop{border:1px solid #dbdbdb}.vp_popBox-w280 .vp_pop{width:278px}.vp_popBox-w360 .vp_pop{width:358px}.vp_popBox-w400 .vp_pop{width:398px}.vp_pop-con{background:#fff}.bandSucceed{position:relative;padding-left:105px;height:118px;line-height:118px;font-size:16px;color:#333}.bandSucceed i{position:absolute;width:46px;height:46px;background:url(../img/site-icons-v10-20150512.png) no-repeat;background-position:-62px -1342px;top:35px;left:40px}.vp_pop-title{height:40px;line-height:40px;font-size:16px;color:#333;background:#f2f2f2;padding-left:14px;border-bottom:1px solid #e6e6e6}.vp_pop-title .close{float:right;margin-right:15px;font-size:24px;color:#8e8e8e}.vp_pop-title .close:hover{color:#57a900}.ewmBox{position:relative;width:110px;padding-top:30px;margin:0 auto;text-align:center}.vp_pop .ewmBox .code_hover{top:30px}.vp_pop .ewmBox .code_hoverBg{margin:0}.ewmTxt{width:181px;display:inline-block;padding-left:19px;margin-left:10px;text-align:center;padding-top:19px;position:relative;height:14px;line-height:14px}.ewmTxt i{display:block;width:14px;height:13px;position:absolute;left:0;top:19px;background-position:-80px 0}.vp_pop-con .tc strong{display:block;width:100%;height:52px;line-height:52px;font-size:16px;color:#ff6e1e}.txtBox{padding:25px}.txtBox p{line-height:20px;color:#999}.txtBox .dotTxt{padding-left:13px;background-position:0 -42px;line-height:30px;height:30px;color:#333}.btnBox{text-align:center;padding-top:5px;padding-bottom:40px}.btnBox a{margin:0 10px;padding:0 15px;font-size:14px}.btnBox .vp_siteBtn{height:28px;line-height:28px}.btnBox .vp_siteBtn-border{height:26px;line-height:26px}.vp_popBox-w420{width:420px}.vp_popBox-w420 .vp_pop{width:418px}.phoneBox{padding:40px 50px 0 0}.pb_title{padding-left:45px}.pbt-l,.pbt-r{float:left}.pbt-l span{display:block;width:46px;height:46px;background:url(../img/site-icons-v10-20150512.png) no-repeat;background-position:-1px -1402px}.pbt-r{width:260px;padding-left:14px}.pbt_title{font-size:16px;height:28px;line-height:28px;color:#333}.pbt_desc{font-size:12px;height:18px;line-height:18px;color:#5aa700}.pb_body{padding:40px 0 5px;position:relative}.pb-item{position:relative;height:30px;padding-bottom:15px;line-height:30px}.pb-item span.fl{color:#333;font-size:14px;float:left;width:105px;height:30px;text-align:right}.pb-item input{color:#666;width:250px;border:1px solid #ccc;text-indent:4px;height:20px;padding:4px 0;line-height:20px;background-color:transparent;font-family:"\5FAE\8F6F\96C5\9ED1","\5B8B\4F53",Arial,Helvetica,sans-serif;outline:0;-webkit-appearance:none}.pb-item input{vertical-align:top}.pb-item input.pb-W140{width:140px;padding-right:110px}.pb-item input.pb-W110{width:110px;padding-right:110px}.pb-item input:focus{border:1px solid #699f00}.refreshBtn{float:left;width:30px;height:30px;background:url(http://www.qiyipic.com/common/fix/vip_pay/vp_refreshBtn.png) no-repeat}.pb_img,.pb_btn{position:absolute;top:1px;*top:2px;left:253px;*left:257px;height:28px;cursor:pointer}.pb_img{left:223px;*left:227px;width:103px;vertical-align:top;cursor:pointer}.pb_btn,.pb_btn:hover{text-align:right;z-index:100;color:#5aac00;line-height:28px;width:98px;padding-right:5px;background:#fff;border:0}.pb_btn-disable,.pb_btn-disable:hover{cursor:default;color:#666}.pb_btn-gray,.pb_btn-gray:hover{color:#666;background:#f2f2f2;border:1px solid #f2f2f2;cursor:default}.pb_body .errorTip{position:absolute;top:20px;left:105px;padding-left:18px;height:13px;line-height:13px;color:red}.pb_body .errorTip i{display:block;width:13px;height:13px;position:absolute;top:0;left:0;background-position:-160px 0}.vp_popBox-w420 .btnBox{display:inline-block;width:310px;padding-left:105px;*padding-left:109px}.vp_popBox-w420 .btnBox .vp_siteBtn{float:left;display:inline;margin:0}.btnDesc{text-align:left;float:left;display:inline;width:180px;margin-left:10px;line-height:28px;font-size:12px;color:#666}.tmallBox{position:absolute;top:0;right:0}body{background:#fff}a:hover{text-decoration:none}.c-box1 .hy-bd-seo{height:90px;padding:14px 0 14px 14px;min-height:inherit;background:0;border:1px solid #e9e9e9}.hy-bd-seo dl{padding-left:20px}.hy-bd-seo dt{line-height:30px}.hy-bd-seo dt span{color:#333;font-size:16px}.hy-bd-seo dd{font-size:12px;color:#666;line-height:20px}.primecase{text-decoration:line-through}.hy-tip-seo{border:1px solid #f8bf89;padding:0 15px;line-height:40px;background-color:#fdf5ee;margin-top:20px;font-size:14px;color:#666}.hy-tip-seo a{font-size:12px;color:#5aa700}.hy-bd0815-seo{background-color:#fafafa;border:1px solid #e9e9e9}.hy-bd0815-seo .hy-tab{background:#fff;height:45px;line-height:45px;border-bottom:1px solid #e9e9e9}.hy-bd0815-seo .hy-tab li{font-size:16px;color:#333;line-height:45px}.hy-bd0815-seo .hy-tab li:hover{color:#5aa700}.hy-bd0815-seo .hy-tab li.selected{color:#5aa700;background:#fafafa;border-bottom:1px solid #fafafa}.hy-bd0815-seo .vip_zone{margin-top:9px;right:10px}.hy-bd0815-seo .bank-logo,.bank-logo-seo{margin-left:-28px}.bank-logo-seo div{overflow:hidden}.bank-logo-seo li{width:130px;height:46px;margin:0 0 20px 28px;background-color:#fff}.bank-logo-seo .bankicon{margin:0}.bank-logo-seo li:hover .bankicon{border:1px solid #5aa700}.bank-logo-seo li .icon-selected{position:absolute;right:0;bottom:0;z-index:26;width:17px;height:17px}.bank-logo-seo li.selected .icon-selected{background:url(https://www.qiyipic.com/common/fix/pay/selected.png) no-repeat}.bank-logo-seo li.selected .bankicon{border:1px solid #5aa700}.dis-money-seo{margin-top:30px}.dis-money-seo p{font-size:14px;color:#333;text-align:right;margin-top:5px}.dis-money-seo p strong{font-size:22px;color:#ff6e1e}.dis-money-seo a.icons-green_btn-larger{display:inline-block;width:124px;height:36px;background-color:#5aa700;border-radius:2px;line-height:36px;text-align:center;font-size:16px;line-height:36px}.coupon-con .icon-btn-little-seo{display:inline-block;width:58px;height:28px;background-color:#5aa700;border-radius:2px;line-height:28px;text-align:center;font-size:12px;line-height:28px;color:#fff;margin-left:20px;vertical-align:middle}.dis-money-seo a.icons-green_btn-larger:hover,.coupon-con .icon-btn-little-seo:hover{background-color:#7db718}.bank-logo-list{*margin-bottom:20px;_margin-bottom:0} \ No newline at end of file diff --git a/static/css/pay.css b/static/css/pay.css new file mode 100644 index 0000000..6bbbeda --- /dev/null +++ b/static/css/pay.css @@ -0,0 +1,461 @@ +@charset "UTF-8"; +html { + font-size: 62.5%; + font-family: 'helvetica neue', tahoma, arial, 'hiragino sans gb', 'microsoft yahei', 'Simsun', sans-serif +} + +body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td, hr { + margin: 0; + padding: 0px 2px; +} + +body { + line-height: 1.333; + font-size: 12px +} + +h1, h2, h3, h4, h5, h6 { + font-size: 100%; + font-family: arial, 'hiragino sans gb', 'microsoft yahei', 'Simsun', sans-serif +} + +input, textarea, select, button { + font-size: 12px; + font-weight: normal +} + +input[type="button"], input[type="submit"], select, button { + cursor: pointer +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +address, caption, cite, code, dfn, em, th, var { + font-style: normal; + font-weight: normal +} + +li { + list-style: none +} + +caption, th { + text-align: left +} + +q:before, q:after { + content: '' +} + +abbr, acronym { + border: 0; + font-variant: normal +} + +sup { + vertical-align: text-top +} + +sub { + vertical-align: text-bottom +} + +fieldset, img, a img, iframe { + border-width: 0; + border-style: none +} + +img { + -ms-interpolation-mode: bicubic +} + +textarea { + overflow-y: auto +} + +legend { + color: #000 +} + +a:link, a:visited { + text-decoration: none +} + +hr { + height: 0 +} + +label { + cursor: pointer +} + +a { + color: #328CE5 +} + +a:hover { + color: #2b8ae8; + text-decoration: none +} + +a:focus { + outline: none +} + +body, .body { + background: #f7f7f7; + height: 100%; + max-width: 640px; + min-width: 300px; + min-height: 100%; + + margin: 0 auto; +} + +.mod-title { + height: 60px; + line-height: 60px; + text-align: center; + border-bottom: 1px solid #ddd; + background: #fff +} + +.ico_log { + display: inline-block; + width: 140px; + height: 38px; + vertical-align: middle; + margin-right: 7px +} + +.ico-0 { + background: url("../../static/img/timg.jpg") no-repeat; + background-size:cover; +} + +.ico-1 { + background: url("../../static/img/logo_alipay.jpg") no-repeat; + background-size:cover; +} + +.ico-2 { + background: url("../images/qq.jpg") no-repeat; + background-size:cover; +} + +.ico-3 { + background: url("../images/weixin.jpg") no-repeat; + background-size:cover; +} + +.mod-title .text { + font-size: 20px; + color: #333; + font-weight: normal; + vertical-align: middle +} + +.mod-ct { + min-width: 300px; + max-width: 640px; + margin: 0 auto; + margin-top: 15px; + margin-bottom: 15px; + padding-bottom: 10px; + background: #fff url("../images/wave.png") top center repeat-x; + text-align: center; + color: #333; + border: 1px solid #e5e5e5; + border-top: none +} + +.mod-ct .order { + font-size: 20px; + padding-top: 10px +} + +.mod-ct .amount { + font-size: 44px; + margin-top: 10px; + font-weight: 700; +} + +.mod-ct .qr-image { + margin-top: 30px +} + +.mod-ct .qr-image img { + width: 230px; + height: 230px +} + +.mod-ct .detail { + margin-top: 10px; + padding-top: 0px; + padding-bottom: 10px; + +} + +.mod-ct .detail .arrow .ico-arrow { + display: inline-block; + width: 20px; + height: 11px; + background: url("../images/wechat-pay.png") -25px -100px no-repeat +} + +.mod-ct .detail .detail-ct { + display: none; + font-size: 12px; + text-align: right; + line-height: 28px +} + +.mod-ct .detail .detail-ct dt { + float: left +} + +.mod-ct .detail-open { + border-top: 1px solid #e5e5e5 +} + +.mod-ct .detail .arrow { + padding: 6px 34px; + border: 1px solid #e5e5e5 +} + +.mod-ct .detail .arrow .ico-arrow { + display: inline-block; + width: 20px; + height: 11px; + background: url("../images/wechat-pay.png") -25px -100px no-repeat +} + +.mod-ct .detail-open .arrow .ico-arrow { + display: inline-block; + width: 20px; + height: 11px; + background: url("../images/wechat-pay.png") 0 -100px no-repeat +} + +.mod-ct .detail-open .detail-ct { + display: block +} + +.mod-ct .tip { + margin-top: 20px; + border-top: 1px dashed #e5e5e5; + padding: 10px 0; + position: relative +} + +.mod-ct .tip .ico-scan { + display: inline-block; + width: 56px; + height: 55px; + background: url("../images/wechat-pay.png") 0 0 no-repeat; + vertical-align: middle; + *display: inline; + *zoom: 1 +} + +.mod-ct .tip .ico-scan-0 { + display: inline-block; + width: 56px; + height: 55px; + background: url("../images/epay.jpg") 0 0 no-repeat; + vertical-align: middle; + *display: inline; + *zoom: 1 +} + +.mod-ct .tip .tip-text { + display: inline-block; + vertical-align: middle; + text-align: left; + margin-left: 23px; + font-size: 16px; + line-height: 28px; + *display: inline; + *zoom: 1 +} + +.mod-ct .tip .dec { + display: inline-block; + width: 22px; + height: 45px; + background: url("../images/wechat-pay.png") 0 -55px no-repeat; + position: absolute; + top: -23px +} + +.mod-ct .tip .dec-left { + background-position: 0 -55px; + left: -136px +} + +.mod-ct .tip .dec-right { + background-position: -25px -55px; + right: -136px +} + +.foot { + text-align: center; + margin: 30px auto; + color: #888888; + font-size: 12px; + line-height: 20px; + font-family: "simsun" +} + +.copyRight { + text-align: center; + color: #888888; + margin-bottom: 1px; +} + +.copyRight a { + color: #888888; +} + +h1 { + font-family: "微软雅黑"; + font-size: 15px; + margin: 5px 0; + padding-bottom: 2px; + letter-spacing: 2px; +} + +.time-item strong { + background: #3ec742; + color: #fff; + line-height: 25px; + font-size: 15px; + font-family: Arial; + padding: 0 10px; + margin-right: 10px; + border-radius: 5px; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2); +} + +.item-title { + background: none; + line-height: 25px; + font-size: 24px; + padding: 0 10px; + float: left; +} + +.paybtn{ + display: inline-block; + width: 100%; + height: 80px; + vertical-align: middle; + padding-top: 10%; + margin-right: 7px +} + + +.submit_alipay { + font-size:16px; + font-family:Arial; + font-weight:normal; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + border:1px solid #84bbf3; + padding:9px 76px; + text-decoration:none; + background:-moz-linear-gradient( center top, #79bbff 105%, #378de5 0% ); + background:-ms-linear-gradient( top, #79bbff 105%, #378de5 0% ); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#79bbff', endColorstr='#378de5'); + background:-webkit-gradient( linear, left top, left bottom, color-stop(105%, #79bbff), color-stop(0%, #378de5) ); + background-color:#79bbff; + color:#ffffff; + display:inline-block; + text-shadow:1px 1px 0px #528ecc; + -webkit-box-shadow: 0px 0px 0px 0px #bbdaf7; + -moz-box-shadow: 0px 0px 0px 0px #bbdaf7; + box-shadow: 0px 0px 0px 0px #bbdaf7; +}.submit_alipay:active { + position:relative; + top:1px; + } + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + width:80%; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} + +.btn-primary { + color: #fff; + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #3071a9; + border-color: #285e8e; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary .badge { + color: #428bca; + background-color: #fff; +} +/* This css button was generated by css-button-generator.com */ \ No newline at end of file diff --git a/static/img/6666cdhui68nhc7qiqdbhtd0.png b/static/img/6666cdhui68nhc7qiqdbhtd0.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2674123629981fcc7573352ae6179ce3ba387b GIT binary patch literal 428 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 literal 0 HcmV?d00001 diff --git a/static/img/bnte65ajhrt4kk1g0eug.png b/static/img/bnte65ajhrt4kk1g0eug.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe9b377d8b067a32d717919467f19b97f8afed6 GIT binary patch literal 728 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo`C;1lBd|Nnm=GxX5qItB)& zUQZXtkcwMxZaenfHsE2s@a*68ciS8ckEu)UTKDzesu^s3Up5J7T-xt~0-gvzKY#xJ z-TPB*iY6mKDe*0EZb-t&URPO%1jb(o!B{xb=x zX@!}_r|XYbx%$^_-Bu&P1XOgOkim1|=!74VCdz#%W`MTl^w;GuLA#yj*>%ETxaa3F<8Yp20%`NFGA++byIQtb>(Ei3Zx>w&m?WF81Fzizg&?~&RT?otJi zkPNRuX4sjPs}^rPo!|jqYV!N7MqQid@?79XuhpjxT z`W)|G5@HAGV3;4L8SGoMLX9VT@g@+zK;uBo&yxzd_i`d{Xn+J51O$;mWqut{~rmj^qK2#Zb^grC+rn&Ub$sx@xSQpJ+Qz5Q-u$l^y1M7rd{r-0Q{LWgC zzyn2wlMdGTF=zXCoK6G_TxHmOjPECd&GM}146v35N5bQ8|48AOEI$dt56|6DHhc2x zaPtHZzk!{}=a~4JQ{y+>sxBHOjP3O^KvBTJ zQ1j{0;@mJ_y@!5%0bqd*-HP`gM4i@Rw-y8Ofrb`!Y@I%1lA!zTG>Fanz3$CA#l7H< zQI7Qih&697UYBb=xp7**(Jk)H(bY{LjUR#<-bY7E&)(u5(^vK83P@qYbfzuJA3cq8 zt}|9Vm}US{wMQi3p2X}P$6G-!58dYhi98Tx$UfYD@>JQAOVc1ON(kcFdi2zj*q=Lo zfAC-dsbR?Z!Cc|_abP0l+XkKfE@+o literal 0 HcmV?d00001 diff --git a/static/img/bntelh2jhrt4f66sugu0.png b/static/img/bntelh2jhrt4f66sugu0.png new file mode 100644 index 0000000000000000000000000000000000000000..637e49a0ea5a4053b70ccb4eac9c2b47fe9bb974 GIT binary patch literal 742 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo`C;1lBd|Nnm=GxX5qItB)& z*`6+rAr-gY+;z;mW5C0D;oM*SySa@@$J8}B&%O8?I?+n*XX(M9DTehfDBy|k^ZT#= z??3Ec{`=*u=l<{4@&b)yVEDrDDf`n?`{d`}=dYIsi#*|-7qOG|7g{~4csfr3BvPa3kZ)7>?7Y4m#K8S> z3AvxA=xb#zjFSY(|Ili<*YUWrdv(?MKNGI7L97Un$W}jnrd{Q#`<(y-P%u2mYIxp% z%6{9gh@TzFw-aPQIvGUbYJZDNo_ETwM7t>^+}*n+iy%fYsss zgRHMdJN^_-o_P8a69-5zocW8`yzP#k&u-8HD`J>o93sCf%I5Q;?YYc6AQcQEa$Bw^ zsD57~c2zkSX12(D&Z|#;gs$Jp1Xhx5et4C^$+obs`R4y`gCgm`RfeBCtbhJoHT{*E zJv&&~G@R;AjMD;npW(nh{pi^}o2u9Pf87dkV8OrL$FB7`PI~t2M0GP*lk9<8 zn}Ty|Cz)k$3WV6McJ{(&r)RmRRxJXhDh7sU3_ll#v_IUNG^0NWEO0=w!86#%-f#C# zNr<23-_tI++P18H%g+=8kct@I3GtKVXRIv>yJH>FVdQ&MBb@00R6GrT_o{ literal 0 HcmV?d00001 diff --git a/static/img/bnten2qjhrt4f66sugvg.png b/static/img/bnten2qjhrt4f66sugvg.png new file mode 100644 index 0000000000000000000000000000000000000000..7e297122da2024cc09c956f2f0d1aa50e7553b7b GIT binary patch literal 729 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 F_y9YQ5Arg3z##9gcI?1 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 literal 0 HcmV?d00001 diff --git a/static/img/gongshang_0.jpg b/static/img/gongshang_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb58e8fdcfe7dfea54d473f526c7fc0ba1a7f07b GIT binary patch literal 7068 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 AbN~PV literal 0 HcmV?d00001 diff --git a/static/img/guangda_0.jpg b/static/img/guangda_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..91c5c26edd5800c3752cd3e83e7756e191500bbf GIT binary patch literal 5016 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 Z1r8_EatAIM`p35RWIF&q?@+3te**tS@G1ZR literal 0 HcmV?d00001 diff --git a/static/img/icon.ico b/static/img/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..271e1bd8f59a74db0f539a4da44fc42b11e10835 GIT binary patch literal 3272 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 ALI3~& literal 0 HcmV?d00001 diff --git a/static/img/jingdong.jpg b/static/img/jingdong.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e95343b34aae965e93c0ae5ba0dd0422bca508d1 GIT binary patch literal 7555 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 B_}>5k literal 0 HcmV?d00001 diff --git a/static/img/minsheng_0.jpg b/static/img/minsheng_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e4e5cf01f549e839bc4ed73b11270480cc5f5b3 GIT binary patch literal 3572 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 J{}_Zb@gEcfz0Uvu literal 0 HcmV?d00001 diff --git a/static/img/nongye_0.jpg b/static/img/nongye_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3d020321967a69b1f7a889d9c3e6f199b0db42da GIT binary patch literal 5896 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 bQvD7cSq5J&&9uF8pfqzYDADCFVbtI34(yq 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 literal 0 HcmV?d00001 diff --git a/static/img/pay_ok1.png b/static/img/pay_ok1.png new file mode 100644 index 0000000000000000000000000000000000000000..dad332f0a2771566663e43fe25e020c78b8feb3f GIT binary patch literal 2291 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 literal 0 HcmV?d00001 diff --git a/static/img/qqq.jpg b/static/img/qqq.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c78a74e77b4f2951f66c57d094147929c94598fc GIT binary patch literal 5642 zcmbtXdo)yg-`^sW(B#r!T;>toC{8C*!kluDR8uMA5|bPWX^x~B43or!m`6t`Vh(aA z$*mYO7?*T&C&XM-im-PvcINg@@AIzbUF-epUGMwb>$lh1Ykz;=wLjn6=d)$+WISNw z5ocFtKtVwPI4r*a*#zMD^XdP!emePoIrw>4)(U8>1I&PXiVB;7H5v+v8Va%w00RID zYyagN_^+j~Mp0?4GGd*|dR4hW{YGGof}-LYCB?OCm6YVxvGVtTlEzw1|mQ#+@lv#a|>&&z?qq2ZCycVpvx!SsiZpJqOPnT5W6Us@Kfz&}=h;!*$< z{~fY_0s9}gG~~F}C@Co_A%5agSVNL;MGd93#=Dg@51vH$hih&AHGZA;p^W^RHWiaS zr@&3;uk^1+nOgC;KtG}VC$j$?up9p;Wd8>C-?+vBHAMw^@)R`yEFcwcFI*k{gcEBw zOV{^^Ol3fud7NIb)Im~YcdWcufJN0y8rx++f^=Pd?MU2K@locW=KI+z7o(32e`5F- zeMY-Yc{^3Y)g9=(2L+yP5t|-GOwMMZqGNj`RE}`N)a6%05}P)A1*^MaeQ~hdQ4>21 zyBdxwNahu6;ihm5;hM zW$+x@eEhPp$Y8YQ>8ov%+@~@?Y#0cZuLz{6B717v5$qq_R0epQor2~Bs}QT<`N$SL zf4&?}APS8Nr&S5sWcM~BJJ2GbyfULFRIr0-FTfz3bnncZ9NBrvKYPI{JLF4obJdB* zEtd65tcF2W(}7D%*s5}~dyLXAtMzw_i;B43A>NnsL&IWAW>Gr7_<3^QO&v5GE}FkP zS$Ah*(reP^*rv{^*P5>C9hxpy$NQUVo@dP3K56}Mr{zy&S7Ga_;C^QT>nb!ePZOC^ z%twMiZpY#{O?V9^2@ZI9sOBQNF=(kijQ44H@V((cnu!mz>t4QMo`YA|KOZK{(NBUp zotPx*rmFS+(3a|oJ^OPysHzSoWTXI3yGJmt=hCE> z;L7c#!27pv`J4u)3d`PAKDwe&q8|ScAJGzV`$lvCcTgOApii;%F@`S#I(p@vHi<3$ zr-?~%yTMU9)3E&g?7eJ4s-0ogmnl>5Q&~ho$msZnT2yZ37aJW99eUARwqHphciq+q zV%a<2G1p|?RZpf4gyUCt#Q4X6GN4^wVi`b>?^G90 zzE2vmGZE+p_KDp>p6C2NTo{Hu=@XOx@dP5qNhuMyXYep`=HWD*f>*7e9D`%?$%E}w z^<@T{>~jRBO;2DoLL3mFMSgW~L!Jc`m&0GT^D+fr3P*4T&u%TNcn4qMo*Mi#vhcO4 zIN_MvoFmDUa542yM5Gg-xu>4y_jfwYuyxwoKSGup}Vi(x^eKK z(n~?%?boABZ~WE+s7>pcszG@VWPk-5-go}Jlq&;3_g+29377yW4+;pa)WmH3O>EFa zHym6Ele*;5;*e1SSnS9I=}C*$G64BGTV#_O85VuGvJf)7IevHeQQ{10F3em8JR;6h zL9T$cjM6v4tv z^Iaa_#)FAf=dwTbXipy0zSCaHZ7=ycBLkE!!hgx{k0E5L6e%5MqgVz$VjD@Lg9>GT zU%d<%C$(j(ci(325Lr@4a4cjt(e2oZ(XyKBsblMYVW?4J9w`=#Q%ERVOk&~aZ4W;a z^p^W6q1AV$cODOm?+FonyVR?2{q^=n1M8hH^Yr+&w#&h1id-zyE*&>Vs99LFc(s#{ zNJqlcH{abil<$!_>m;S~kCK(yDBib4&2O&<^*DM@^RooCXS06k;Dw9L&7LuLR)kv{ z?8R*F#nzVvz6&8I-g;RPxEzquE--J3;GExaqFOCVY7*DWHe?!#_RQuTkQ7R{UX%eF zsTVllp-?IcbKL`@ZWl1ECj)|fk?vr3yFM{F4ha>PRFlv9VAbImui?7XIeOA6iS`f3 z3Qvrxn#;~zF3yb%{E;dH)?TOKB+aZ}$!=XTK-rq10pIxEZlv=B_UCig1!EMdSnI`W z;aFa1EV09H#}L;UVx-ueU!7`Wb`UjX3IXFq_7ok+X5JAB;*Z{Dp~V|uEqS-K`RPHJ zPOd)rRoCi z>dI1!RQ5|3JEK4}|KYj90IB*{c$r^~k$?YQ>3T6LOAthJFs7W9WG*?u=Fo-F zBanS@bNOdniC>7$)Y{M&o7i>v1I1wARMw-<5tF~Ms6zGmI|p$7;RbOTqQJR42T3vY zGVwYFJSNfU&a;GlKo@UV1wsgGB^C0@rx|S?qF^8$0fDoq2KOF>gLs(hQ-)A+#xBM! z3WiTb!_{Yomg&i>qc@3Fc5YOD+6IiOXGoKk?d0%#_H8V95DEW-F`q1NuRciy1uJqU z4^A^UNKNr(m?7Hk_Zf>~B6w*;_h-X9Sr(z$j}yv+r7GmA`9(WRfdtW7JMJ5T!f0Hb zzpP?WopbU@?ZCN)CL0?@A8tNNw3XrmQ9HTu)CS_$A^{dbjuBQ$9@b&?$*9qGu4eIY zSlp(#K7u04#H}dA$Obl?mIOK04b}H5zjv)7$2dWF&f=};3t3e%pdBNav~w%Jh<=+| zN@&9@UGtt<-f31rFUdZAb;sMNG~JU$F6a-{%PCf+$BWFamN2!=j&Imom(xsr`C!V# zqI1UUvHA9wbQ@0{txBwo&EXK#?Mwo##{=*8l+R+vaAkA&EVX&- zVPS0yl}g&f9K~xLU6_aH^FIgI511IvBN|X*B^g$^s=^bJ+Bh^BM}WH9d()`OR$+Tu z|Acco{ImuyTZ^!A;xb@b{_Rpsb{EKTv(dOetdQC;wR_y-snA2`P5DKgCg+-fAaZUO zLlh(at#2M%8~2O6;2dPYWh#wj5r4|?PA5kl``kXHdR}V0Z z-h`C|pClRiziSiukQb%va|CpFo6gr>K2?ic!E@mt6zf535D|dCb@^a5$vBSRZn#R|djekUh{H4uQt;U8Osw)>k3#plJ)Szto+q|b z-+dS2VMG3BiY3SpM#APiLzFHhfyiekA&h&WYW>H(QH_M`?ntS%8U(6)#EPKdW ze=d1T-nZE(--qHIP>@hzgt@CQu8WG60q2Ur6}do7$2^&7Ux8h~idHPDtGWb6%G2_7 zOhDZLpXbPFuC}qu-reo#5Yv_Kdq_%DC6hYx^q~3T2USyKeZkiB)kG<+B6#&)MTmU> zPSPSZxwz3H7b=meEQ_vCuuxc2=O#%OhfDL*loT?x?E3+fT&_sf$P<3(;`<9KjV+^M zYrg*Q&92q-yTz{ud^!|fNJr(Ajl(2H)8obA(2US)@G4^VaL) zd||FANKBHC9o}EmT54x?e0Fsk{kja$!d_-4u@ncHUehulm0(CQ1l>3c#X5{0`P3(o zV4?FMYh%2OQaPC5;%NKqFBP}D%yb5f|h(hx#dIE-JN+W!i=BcQH1 zRuwX3m@xgwVLfyqUJ#SX?6bz9D^byFq@O89l3W&oj1-dL-Jp+LxvJJZkJF);z+t?_ z_2PXXsl!tBOZ3|+eif1<)vX&?%87O6_%<}7SlfKGJ*~$Mr$j|=W4d}d{(2qx$w#On zDH3DA8DWHcG;!nEb=5am3Y4v2F^$B>B@z^6KnNAyPP^f-gM6VE*B9ABZIjDIZLu=! zB-&4Q5%@~0OwkuArg0mN1y1kTT4vpnURH7TMfUBdNV)vF5O$G50TJ^GV8vp6n=Evz9^eKh=Vp{*;hV|E27E?2uW>o#a=*;Rq(Jk&q?BCK;SWD8PG}qpD_2w z22U@hM%&OF?8zxJT`YTOC1r_z3%!!YG~{u$KVwwID*QJ#czJ{t*L|rG`@_ise_L;t z64>_bcrdRG=7`j#qf$LdfnBKRC?(dx6rL7Y#SJ}$|A-r7*RaJ}gQuY^&X0K}9u#pr zSnFXTq~)H~k!La>HH#Zysk6X8u8@7ENeN<=O0n?>(`Q2t-_TWR2y>70SKHbDhACm! z(z>hD_R4^ou4ZWcT&oPI!_OasY}%5;gLw1$o!oU|6_GW?5gss2b*Tdvh0cEokhg40 zk}B(pVxCMHL!-CEPQ}c^3WO2elEq+`+MDOq>ex-@_9^=tf z#Mog6g!EIa-Iy_t)vAVu5zQ~Fj1;SiSVy1X`UAOp z+M?|f?-uqU=H?>pX2de!c;<JYW#Okt(W>$uXNuIyn7R?>O|pg z`jeyrb$Jgh$^ckPauMb5dG_-Ukh z9;)|rK4QIJ=I(H9 zKXubo@ZN;@Pv#zxs`Qo7#-vq46W${2+U!Z3;mo-DhYFiKT{q(-^ZQ`|&tpGGo|*@? z7|cI&e-jYQeuDhkSl~D13&-#i8!rZC%H`@Gphfne?YXCg~Xzk)Q-A4t(882YV zHX|K4>TfS{Ks)+(+r6}ssHBnh$&w6{m}GQlGTQ4yUT|PGJ}NL{^1);}?jLyHkreZV zZ(o}gGkH(OE_>bNocmS02~EC)LLg{`iS7QsEEVJ*Nx~p$CCBfYofc&JuRG|x!!(08 zTJ5vR`|&m{@5d%ux5~`wp-m;W^%ZAwuH<^xo9#bccIryl+lYrnTNmDuB*r#DN!LH zT>%s6SGkB3K|n}BfdGMX1i~?di`n|Q@UvItNoH>7-b!PUgZ}0i`w`cfY_%zrq z2U~kvn2?YV?7ZNC@uy&Ce|`O1?U#{%%fPS6{C6<@LSdnUupRP3!tz4=ZWtT} z6B7L|+pzy`LOX;-M8(8+N=Qlx1~l!0?GO?c-XS6^Dk>r(7#%P84-=6W-K}xbT5ONY zW$}YidkyaVRk~C2x4I4m*CF80sVjfpm5@|a+NZ3dby)j|&QU`nW0TXSW@pdY*xH@9 zcW}Gp?&0a>jk*?w;Phzu$it9vS^SHvVN|lFpd@_I+-Cfw>6&SXK`e{G|^JQ@Gw`z;^ybM1it(iAx9Y&x1&&q8(bl}SdrqXk`@b*kaa7jTYXtbPpx&DI3S`!Z zJ-2i{gL4gQy&j3RXv;YHx<-Ss9Dd|L#Ick6aO&=bEEf8Z-SoEjYx?Rp%v#B10)KlF)}$W$BUy zQAWNjmHIO0XkaM9ov7Rzy@;m_p|x$tk~f6Ys_Ek5ZIMGw^jUb^lb<&=>IF zK$tj3{7ln$_=sC-Gs8CRw(WS!yauo25lxRYd|NjKSOZU8pH+*=$R)Qa4Yo#b;Wxr&zoT zQ_FQP_hH7Y)>;k}JW78Sg3=8c@y@Y7JT>LaS&j7MJat%^9{e<^`*Rc8&xeT~gC;;Y zo4NhekPlPFj?gJx`V&(fDlwf2JGdvd3vqGux7V$=pK+~ck#NYm-K89d9B*1eODxuw z1|xQhwxnxALA1blboUc&U_MoITr8Wu6lvgxUgg6keAs`3K`c*Dj!{`l^V6oKyx20t z8IEtPCUeHK)+5vSuss@34_z)BFPz^G&L?tXfbm|c2u`8Yi`o3AuMeq${dm^2hNM@P zd9k&nE!RzvbL~a1M~lZW#V4efF&@4<@&kKh96eaa*<*v3$HDoqySMQ}MQ~*+W9&R5 zkOH8VXffTCoJqM(!k18*Sncd!B2|K{3ng}(3>ouRAVZ~$?3f;_Q%L3bmcAcM^+O<` z3!WNF=vp7eS(i~4GH)=%t~(CI^%PQ-@`m3x={kv-Q+Abj%{Gm!I(45skYnNMesCm& zqvIIyR|~<134Jm3V-b->1{8Y38lpl)_j|4k7Yh=&1}&Y0?Bdie#4fH2R3OL?$!Iwo ziXuanW=hJo%<3y+5f{e453R>hl$M$&^^@99w&9IOQqRWX|gGfg}u4_Q*d?7CJ zp7S^6S(l?|gh?bl;SOFGKZy?SA^-GnxnG=^fo(e5QEa({a@@PP`2_Ha_O zSU97@MF(e?W?n$k<{izq?d`9#Fl4PaqxyQ$h1>F##W5{*mr>LQE;f7L=_Z38iL*YI zrmS{}r{19|tl_pLU7CU3&lAU%~XG_k>TruFmeSQ#DeXmpqFe2Yg-& zt5q(fuZ8t%R%Ml$Ng2JLku}a_b?3zcT7%mDV|Kbx$sw-3yF2?qBs#8~dIg6`{XI^xe+KpTur@5xV_N zp=5d$$#t2#f@oSzu0E4jSonvOxvG!j`BuBgFhz}iwZH$FpVQBrfo~U+VgCIUxQOjW zGK_m-jFufx(lv7oJe*#M%{g73<+xYCsNCI^&6$ z^p_gBpJYC)!z&>KIibyN-7Z_<>EZjS!WKb5iOc7Ju?mR7pr}lrC58|b+I=?_J=n1u zeYZ(B^dd$&I5|a;0k<$OoQofsOnz%|F|I0~@MjJh&9CK(3T!;vOnbQ$NDYccaNO?#9Gwfxyq@hM|?_QmD1!pfe4+phRSy!fO#&vml8>>^=Jc+ia zjTs2qQ^ZdF?`e5T7l6o~{g;*RgY~mrtmDzt)nyF|yyJ{IBg7r3IiKX3NcONUU2o?Ah?f5)Z@Wpx_qIOnKeDtq|pexast zMt`V7p|QF;q9?+5R$8?~P&WDwij)+ne5rnxtmdpzR?mJdZ7b$ww*HcdF>?7-?4ZCL zyBl4xDO**IX;m+}MG94l!f^Zv5u2Xl`Gr5i!)KNAyuF3*rI`l8ZksaEgY#T9yXr|? zq#*rx;6k8VK!gmMLCn2@R>R4(jaVoFTV0&ZOs?DWNhU(6UE{@Kks?Yqxsn>*(e zgEX+cUgu+Yv-zG=l=&f-2DxDZq$A$Phouo3^q1?ZaUPKOjdE{nFFX^`P;`g1(nLZy zk1o@Oc)IvcXldR)=!sW&Q?}#zp?o)_4AkNtufFCr8Xlb~bIE&VF=Fh5uO>e9tAGrb zxtD=9T2SxcZfqA4iU*Y#^Bn{g{CI4mKdikiGL=)CMwY@4pjMNrpT2$zR{n)Z<4K2* zPq%0GqMQjY7ZEb;-i-L8@g97b(+JLzZt3G)58f=HuMQCpJ)`S#kN#*bX2$t*$iZ+^&^*IrSpz7ednR+QgPL^e9j-&`{@f(P&vii1^88C28hl&x z;(1L;_?#CO@lGHE?u^yry^BWV&$Z#vwVDnsb$LHHUZSnVP$p0ECuqkoZh4W=VGvy_ z8jQ-#MqHy#!r5JrQ7JCw4S?*7RK;d8x~(Mg-A630(zmXS{@z#^DZ(`c-B%u7y$T-x zuz6;PYk#Y3VxZIs$MNH}l{u~m${bNWkWHNR))>L>#Y*F}Teq9T60XP~dJ56IH!K}{ zhoSs#KCEFZAMEc+*u#q63!DZX@zk2)ugD0*;V=fPel-FIx1du}R=Ckw5* z7BcixW;B2&Wh7>76=rgvu+qY)hB^L3d1NZ;F|+4&%V#~qkfn;%mkE}(wW{`{Ha;xQ zhUjRL;Q0-I3OmpChZ?plr+LGOW^LA6TIRNS=Zv;se?Eo~?AzcpyO!aYn}rIeEZ1%! zAZxC|mhlo#iVQ{J$-0dYi@yEmT%S8|Sin?qYv66c^mK1JLv=SNYnS#XD)3wGT|rRi znm{;f4~V9vvUGs?E-D;vz#C0yOud71W2{a}Zk`dyT&k4`_bg@|Eys1P;e36BJA z8|c%j_Mjf6J5nBU*mQq#{mK|(qV-}ug)ETpY$_nwU72=lFA&j9NukPFz-g;0I2%D? z3#H_srMg?WWFye?ouwNaGa5}gAW-~9le@>c=Ao6$*pDsS^}jbaVyG8Bk+m>LV9ldx zoK;@rhi>P?f^*a0O(q?+6Z5o>M4DehhyQ6PF>2Q7sD9>kY+?^p8mA+uJ`}i?`Da1r zHzaGoV2Pnc=t3l^5WD+LN$XOX@w&ZiGJL2Kz!MlnYqkwCg%vIe;)jRt=h;v8-!h-s z^lxs7xw&FI<$*aKs$0p!&mLMUm_}U&PeYP>UnPDX_$TO6%X%lw&xCIi3IXiAdQOEy- zZk+E4k6`hRam68*S;y%;J%S3=0u3A-K?0ju(SAO?D5aEk{YsQCHq+6%W`dXzZb+R* zizIZol27_mxxYhw^Z^qGsCLT;I@<{coZ=mk!}tSUghaGrbrJgw=uZMhdWy#$KV2Xz zf`^Nus^Pn)nO52ahjHA+8PzTIT&>i^4bS0?=SF>tR)-QgFxBlERa{qfNhpqn$WT}M zM3%);8RMO-*g=NnYT|b=i6X~`VW=sDhMRBbmeIE!~;R@5Qa{WeIEx}ji8}Z;CL@ZcDeD}$arVME;jZoeLlW;s^+vw;s2TY$uEfyiZ15NX#6>>6$)39~1+ zYcB(Hsn_WbU4z?ADzGau`nHK@>nM#%CdQ7H7~|H6;xS%`ugz7NcGtfz3*m2r3EaJW zm|$_Uyl*g~VWp{!lKGJUY@NZ*!PX?#~^e=R!x(EKE6*AkQ;^#_67k-vMM7 z;>!}-6ru|lkT`ST^=G^)HqjXr@1bV%VQ`)jcB&gLL(K2QYmFa|Ca5jUhyj#r3#m$+ z&1kh~YU;tEr)^DjpDoUk{4kvB)(*z8<&0%Qz}t=C$;dcPJ_a?d>gpN7^KWV8J-p77 z$i-AZ^E}BRL9#7}YAd+L;LQTTX}^22Z#k1r6~~tJ@?qlKs{nh%WsIzjGX+hOxwp!K zyZZbUfQ_$3vEu3Lbj25uK@xTWBOB*VO-y6P^ApY)L0Vh30*$*8!IjhQvxL(lGHHli zOr8oPvvmb$BM7z_Lf&4K%GE~K%Vk?=(h?LPb3Z^l{aBdM)a>&`vc{N;5#klb%+-l* z>C%osWUYI|$Bu8NIu|=Ww(4cLO1CK99Qpf_sOyi;JkyJ(g|Dm0c4ZYuKXRuLPPOG@ zypIRPMQn_(>@5j5kH|w&>Gt^K4@aIg9r|@wqWeRR-7KL0A$&KwNf6pxX>Jr)lwvd} zjD0B+WrRo{BS^23+Vv`Mq4hb+#uM1NoqC7j{9Hrp!Z@j!?WZ|*=^N&vt#y=9VzH0; zw)w`7jMe_@7y7lk+x}4Q}L=?eIOx~D@sF1U_LRe)Bs}g zdVjd4&2ZT7`@BfiEX^E*ft{Y^=YO6Ad}fX2`^`96jt>8`-L%(p@4Q)lfkWQ?c~gh$ zkG_33{pj?;^?v!3p#Pa4-aHkt+?Z#7=vS||56*Kump7q2S@T!|7Bs)GVN{ zFv5`K@nOoP?orRde);0zA3CJ(Kfa$Uv;>>q%lrNDVP|*AJAcvFjl*HbEtKe{%h3vL zPLdxYWrKfA2ETZ23s7tF!`R`nk6K>!AMy+hyqEdl8+J~%=H15qOIh!l1xS`zw8jQt z<_-oE9w$~29vWW8{NyvWXgr1?PN6%bJ>IK%HnZjXu8NL^H1q_fhpS~uzLZ$zT0X_B zp}u|zjEcYc3bhrm599{NLZyGCq(?}@%sOXPjPct)65 z0V7f_7=Lhh?0lu4iQjOTQJiS8+E0T_%im@gU+oo<1qX7YZ<(JTh;XsVoA8qM1gNRk zeD3F44_$NY8F6L79qVqiIw^D)oB39qIk!~aTE(n7a{2c~mCaV zLkshEbKURmw1}r6flS%v@fc}&z9=?X1F&!DqfaId|O$%f0ScZS#+#(9#<%_ zziN+kaHbm_{Z39$D~OQQF>pyMC7cP+mqb=y@G!s>N2Y{_Wp9^z>|Qb}O7kCM%zEZu zq>LUko2z>n^3q7P?O9RFrdz3JK{{Jf$J?Lnxf+l_`Q!9YygDQnSJgk!E=T)WYouD$ z#`2>!%>0F5gHk^lez literal 0 HcmV?d00001 diff --git a/static/img/site-icons-v10-20150512.png b/static/img/site-icons-v10-20150512.png new file mode 100644 index 0000000000000000000000000000000000000000..39e0d61859b6c2d088fb7f863f0db993edd76be9 GIT binary patch literal 36136 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 literal 0 HcmV?d00001 diff --git a/static/img/timg.jpg b/static/img/timg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29015619c103a0bafa4c8f94ebdd354c36f8c2bc GIT binary patch literal 15987 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 literal 0 HcmV?d00001 diff --git a/static/img/weixin.png b/static/img/weixin.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7393aabf44d3a83bb7748abf220526d43ca26a GIT binary patch literal 3982 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 Bi0%LY literal 0 HcmV?d00001 diff --git a/static/img/yinlian.jpg b/static/img/yinlian.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f614a6ce4bfb46e68431515e7d844f7c6198b733 GIT binary patch literal 6236 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 Og48}B@q~(O`ab|Q?7i;* literal 0 HcmV?d00001 diff --git a/static/img/yunshanfu.jpg b/static/img/yunshanfu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3adf043560e5dc81849484c4bd3c947d1b707b40 GIT binary patch literal 22283 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Ɗ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 F{{uY*2m$~A literal 0 HcmV?d00001 diff --git a/static/img/zhifubao.png b/static/img/zhifubao.png new file mode 100644 index 0000000000000000000000000000000000000000..7bf6e975d68300f49ed89483ed59d0714a3bf16b GIT binary patch literal 6591 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 QK>qJ1xxe1$f=|Z(2jxP|C;$Ke literal 0 HcmV?d00001 diff --git a/static/js/jquery.min.js b/static/js/jquery.min.js new file mode 100644 index 0000000..f22110e --- /dev/null +++ b/static/js/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; +}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,la=/\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i("#"+l.MOVE)[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),e.shadeo=i("#"+l.SHADE+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),e.shadeo.css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():function(){e.offset(),parseInt(o.getStyle(document.getElementById(l.MOVE),"z-index"))||function(){e.layero.css("visibility","hidden"),r.ready(function(){e.offset(),e.layero.css("visibility","visible")})}()}(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&t.shadeo.on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n,t.index);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n,t.index)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n,t.index)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){t=t||{};var a=i("#"+l[0]+e),s=i("#"+l.SHADE+e),f=a.find(l[1]).outerHeight()||0,c=a.attr("minLeft")||181*o.minIndex+"px",u=a.css("position"),d={width:180,height:f,position:"fixed",overflow:"hidden"};o.record(a),o.minLeft[0]&&(c=o.minLeft[0],o.minLeft.shift()),t.minStack&&(d.left=c,d.top=n.height()-f,a.attr("minLeft")||o.minIndex++,a.attr("minLeft",c)),a.attr("position",u),r.style(e,d,!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),s.hide()},r.restore=function(e){var t=i("#"+l[0]+e),n=i("#"+l.SHADE+e),a=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(a[0]),height:parseFloat(a[1]),top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e),n.show()},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e,t){var n=i("#"+l[0]+e),a=n.attr("type"),s="layer-anim-close";if(n[0]){var f="layui-layer-wrap",c=function(){if(a===o.type[1]&&"object"===n.attr("conType")){n.children(":not(."+l[5]+")").remove();for(var r=n.find("."+f),s=0;s<2;s++)r.unwrap();r.css("display",r.data("display")).removeClass(f)}else{if(a===o.type[2])try{var c=i("#"+l[4]+e)[0];c.contentWindow.document.write(""),c.contentWindow.close(),n.find("."+l[5])[0].removeChild(c)}catch(u){}n[0].innerHTML="",n.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e],"function"==typeof t&&t()};n.data("isOutAnim")&&n.addClass("layer-anim "+s),i("#layui-layer-moves, #"+l.SHADE+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),n.attr("minLeft")&&(o.minIndex--,o.minLeft.push(n.attr("minLeft"))),r.ie&&r.ie<10||!n.data("isOutAnim")?c():setTimeout(function(){c()},200)}},r.closeAll=function(e,t){"function"==typeof e&&(t=e,e=null);var n=i("."+l[0]);i.each(n,function(a){var o=i(this),s=e?o.attr("type")===e:1;s&&r.close(o.attr("times"),a===n.length-1?t:null),s=null}),0===n.length&&"function"==typeof t&&t()};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
    '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
  • '+(t[0].content||"no content")+"
  • ";i'+(t[i].content||"no content")+"";return a}()+"
",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=!("string"==typeof t.photos||t.photos instanceof i),f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){h();var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0)}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),a&&(t.anim=-1),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||'+function(){return u.length>1?'
'+(u[d].alt||"")+""+s.imgIndex+" / "+u.length+"
":""}()+"",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){r.ready(),o.run(e.jQuery)}()}(window); \ No newline at end of file diff --git a/static/layer/mobile/layer.js b/static/layer/mobile/layer.js new file mode 100644 index 0000000..46d2255 --- /dev/null +++ b/static/layer/mobile/layer.js @@ -0,0 +1,2 @@ +/*! layer mobile-v2.0.0 Web 通用弹出层组件 MIT License */ + ;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'

'+(e?n.title[0]:n.title)+"

":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e=''+n.btn[0]+"",2===t&&(e=''+n.btn[1]+""+e),'
'+e+"
"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='

'+(n.content||"")+"

"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"
':"")+'
"+l+'
'+n.content+"
"+c+"
",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;odiv{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px} \ No newline at end of file diff --git a/static/layer/theme/default/icon-ext.png b/static/layer/theme/default/icon-ext.png new file mode 100644 index 0000000000000000000000000000000000000000..bbbb669bb311514baa5db3a6a00b4644d0e280f1 GIT binary patch literal 5911 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 bWW^%>x7XlHV^#Q1uOX^B?ki3(VEg|7!QHuF literal 0 HcmV?d00001 diff --git a/static/layer/theme/default/loading-1.gif b/static/layer/theme/default/loading-1.gif new file mode 100644 index 0000000000000000000000000000000000000000..db3a483e4b74971fbfb1cc0fb6499852cedfe650 GIT binary patch literal 701 zcmZ?wbhEHbRAo?Qn8?Ji_w)@mZNLBj|1&T!DE{a6a}5c0b_{Se(lcOY1PT3QVdY|A zV$cDyff`g97?`@J^shYqmS1s(LX_+4yGox$4el*+Jm?ved2^25GBru=T^dGm#<906 za&AQCZ08H8P;Bd&{NT;vl&}c_^L4%p?g_hjBu{YB29{c>Ob}p@z~Ks3xCw+@!HClp xtZ<(QPf3`00FNu+VbOvoEE+h73k#4LIKl$IE8t;)<_eUs!0QU6uz&iJhvXcHF*h)T1OnEW1i^?zgDfop1p?usL*#PMGT;HQkSO{q6FlJyb$PWkPf|h*eTST}7h8z$}MF(XD(aQ)ZLZ zM?v0rT<1C4XHn<6PbNA{XL@>1^)apdD_@tcYDrW#m`k#MmslI7p^P;Az74wGs`!SI zLs$GEZHsafXsu1i-WleMzAL(yw$-LK{0hv;6hrx8kx!!4$``dAyBnY9Jz&DqJo2$A z!(L$H=KqBeY~CF_viHPz^tTglc?D97CqEBjzUwH}7GI zapg8YZM~>2Wk%E$d&r@9ly9b4Q zJpM7T@}r63I(OExUlG%Xcjz3MU+9U^r!SkpjNThDtaP)7>j6L5z%o5|^hlVOyI*uY zt^UU6NTuY?(Lb4ZIU2Zb5Vz}Pb7KF%ivf&j^CL>$cDz?rMNTQQ|NqDVD7mhghUp%h zhIA{gi{S8y9YhIIbSv$`B!JiPi!0#4#Jge0)p&YVPHchWcyAn zQhvb8ggXGXs9;k`u9Uq*YB>O+Q3Rq=2hlLFcG{Q3ORH_}JnY8C+r%@}6|%ySP%bWG zV~mA;?P`Q2L_Ss})nrJ{$TmeA9Tt*4=}X5x%RioM@_?ZsKSEST-f+GBv~Ya)xX3O{ z8!d=YthI-13OI;RN~`>|6u5L{z20oBp%9MIj)n$!Aw{Wpq&Rtr4~*_74Gjo@3el>B zz(Rk;;>2lp73<2;d=r*8z%WkdsG=vRuG_fvxO#uN^El|+5Qoz^X!2MfxJ3m}vyi?> zMLLDi8+${Z6YbUg?8GNR>-+SwHKdFyr%HqWcs|X_l*-DAC^bG&KCqWg7-_`UlwQ`EdOp_LJkr`L$mHHs75uP?fSgVfsDjuE#ft2b8HDt0yFt!+;C zEgL=)G9ZFt4wa+N3Xg7FGc0~`&EEt6_%7tyzmnb9B_h1~7~GD4V-Bhx7~QKRkF>&aT>(-!Us@aJxAY@8E?HW$G8g zSz@7Jcp>iCp;lU1ieF6n7!oAa-1E!rS0 zF1lBFVS%G#ZO}b@*+bIk+7@Q|iG60vIDVpV%4tW8rKyzwRo_<25;8*Ky@n z-sX>W*b;M){5lB_Edc@m1`VHy0@dg$PTR9uE$O2&a?KAe?xRlCj&Z$iZYw li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #2e6da4; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); + background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +@media (max-width: 767px) { + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; + } +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); + background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #286090; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); + background-repeat: repeat-x; + border-color: #2b669a; +} +.list-group-item.active .badge, +.list-group-item.active:hover .badge, +.list-group-item.active:focus .badge { + text-shadow: none; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/static/lib/bootstrap/css/bootstrap-theme.css.map b/static/lib/bootstrap/css/bootstrap-theme.css.map new file mode 100644 index 0000000..5823371 --- /dev/null +++ b/static/lib/bootstrap/css/bootstrap-theme.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/static/lib/bootstrap/css/bootstrap-theme.min.css b/static/lib/bootstrap/css/bootstrap-theme.min.css new file mode 100644 index 0000000..5e39401 --- /dev/null +++ b/static/lib/bootstrap/css/bootstrap-theme.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} +/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/static/lib/bootstrap/css/bootstrap-theme.min.css.map b/static/lib/bootstrap/css/bootstrap-theme.min.css.map new file mode 100644 index 0000000..94813e9 --- /dev/null +++ b/static/lib/bootstrap/css/bootstrap-theme.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/static/lib/bootstrap/css/bootstrap.css b/static/lib/bootstrap/css/bootstrap.css new file mode 100644 index 0000000..6167622 --- /dev/null +++ b/static/lib/bootstrap/css/bootstrap.css @@ -0,0 +1,6757 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover, +a.text-primary:focus { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover, +a.text-info:focus { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, +.btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:focus, +.btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #fff; + background-color: #398439; + border-color: #255625; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:focus, +.btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + + line-break: auto; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + + line-break: auto; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/static/lib/bootstrap/css/bootstrap.css.map b/static/lib/bootstrap/css/bootstrap.css.map new file mode 100644 index 0000000..f010c82 --- /dev/null +++ b/static/lib/bootstrap/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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AW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;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ukDH;AexkDC;EACE,oBAAA;Cf0kDH;Ae3kDC;EACE,WAAA;Cf6kDH;Ae9kDC;EACE,oBAAA;CfglDH;AejlDC;EACE,mBAAA;CfmlDH;Ae/kDC;EACE,YAAA;CfilDH;AejmDC;EACE,WAAA;CfmmDH;AepmDC;EACE,mBAAA;CfsmDH;AevmDC;EACE,mBAAA;CfymDH;Ae1mDC;EACE,UAAA;Cf4mDH;Ae7mDC;EACE,mBAAA;Cf+mDH;AehnDC;EACE,mBAAA;CfknDH;AennDC;EACE,UAAA;CfqnDH;AetnDC;EACE,mBAAA;CfwnDH;AeznDC;EACE,mBAAA;Cf2nDH;Ae5nDC;EACE,UAAA;Cf8nDH;Ae/nDC;EACE,mBAAA;CfioDH;AeloDC;EACE,kBAAA;CfooDH;AehoDC;EACE,WAAA;CfkoDH;AepnDC;EACE,kBAAA;CfsnDH;AevnDC;EACE,0BAAA;CfynDH;Ae1nDC;EACE,0BAAA;Cf4nDH;Ae7nDC;EACE,iBAAA;Cf+nDH;AehoDC;EACE,0BAAA;CfkoDH;AenoDC;EACE,0BAAA;CfqoDH;AetoDC;EACE,iBAAA;CfwoDH;AezoDC;EACE,0BAAA;Cf2oDH;Ae5oDC;EACE,0BAAA;Cf8oDH;Ae/oDC;EACE,iBAAA;CfipDH;AelpDC;EACE,0BAAA;CfopDH;AerpDC;EACE,yBAAA;CfupDH;AexpDC;EACE,gBAAA;Cf0pDH;Aa1pDD;EElCI;IACE,YAAA;Gf+rDH;EexrDD;IACE,YAAA;Gf0rDD;Ee3rDD;IACE,oBAAA;Gf6rDD;Ee9rDD;IACE,oBAAA;GfgsDD;EejsDD;IACE,WAAA;GfmsDD;EepsDD;IACE,oBAAA;GfssDD;EevsDD;IACE,oBAAA;GfysDD;Ee1sDD;IACE,WAAA;Gf4sDD;Ee7sDD;IACE,oBAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,WAAA;GfqtDD;EettDD;IACE,oBAAA;GfwtDD;EeztDD;IACE,mBAAA;Gf2tDD;Ee7sDD;IACE,YAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,oBAAA;GfqtDD;EettDD;IACE,WAAA;GfwtDD;EeztDD;IACE,oBAAA;Gf2tDD;Ee5tDD;IACE,oBAAA;Gf8tDD;Ee/tDD;IACE,WAAA;GfiuDD;EeluDD;IACE,oBAAA;GfouDD;EeruDD;IACE,oBAAA;GfuuDD;EexuDD;IACE,WAAA;Gf0uDD;Ee3uDD;IACE,oBAAA;Gf6uDD;Ee9uDD;IACE,mBAAA;GfgvDD;Ee5uDD;IACE,YAAA;Gf8uDD;Ee9vDD;IACE,WAAA;GfgwDD;EejwDD;IACE,mBAAA;GfmwDD;EepwDD;IACE,mBAAA;GfswDD;EevwDD;IACE,UAAA;GfywDD;Ee1wDD;IACE,mBAAA;Gf4wDD;Ee7wDD;IACE,mBAAA;Gf+wDD;EehxDD;IACE,UAAA;GfkxDD;EenxDD;IACE,mBAAA;GfqxDD;EetxDD;IACE,mBAAA;GfwxDD;EezxDD;IACE,UAAA;Gf2xDD;Ee5xDD;IACE,mBAAA;Gf8xDD;Ee/xDD;IACE,kBAAA;GfiyDD;Ee7xDD;IACE,WAAA;Gf+xDD;EejxDD;IACE,kBAAA;GfmxDD;EepxDD;IACE,0BAAA;GfsxDD;EevxDD;IACE,0BAAA;GfyxDD;Ee1xDD;IACE,iBAAA;Gf4xDD;Ee7xDD;IACE,0BAAA;Gf+xDD;EehyDD;IACE,0BAAA;GfkyDD;EenyDD;IACE,iBAAA;GfqyDD;EetyDD;IACE,0BAAA;GfwyDD;EezyDD;IACE,0BAAA;Gf2yDD;Ee5yDD;IACE,iBAAA;Gf8yDD;Ee/yDD;IACE,0BAAA;GfizDD;EelzDD;IACE,yBAAA;GfozDD;EerzDD;IACE,gBAAA;GfuzDD;CACF;Aa/yDD;EE3CI;IACE,YAAA;Gf61DH;Eet1DD;IACE,YAAA;Gfw1DD;Eez1DD;IACE,oBAAA;Gf21DD;Ee51DD;IACE,oBAAA;Gf81DD;Ee/1DD;IACE,WAAA;Gfi2DD;Eel2DD;IACE,oBAAA;Gfo2DD;Eer2DD;IACE,oBAAA;Gfu2DD;Eex2DD;IACE,WAAA;Gf02DD;Ee32DD;IACE,oBAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,WAAA;Gfm3DD;Eep3DD;IACE,oBAAA;Gfs3DD;Eev3DD;IACE,mBAAA;Gfy3DD;Ee32DD;IACE,YAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,oBAAA;Gfm3DD;Eep3DD;IACE,WAAA;Gfs3DD;Eev3DD;IACE,oBAAA;Gfy3DD;Ee13DD;IACE,oBAAA;Gf43DD;Ee73DD;IACE,WAAA;Gf+3DD;Eeh4DD;IACE,oBAAA;Gfk4DD;Een4DD;IACE,oBAAA;Gfq4DD;Eet4DD;IACE,WAAA;Gfw4DD;Eez4DD;IACE,oBAAA;Gf24DD;Ee54DD;IACE,mBAAA;Gf84DD;Ee14DD;IACE,YAAA;Gf44DD;Ee55DD;IACE,WAAA;Gf85DD;Ee/5DD;IACE,mBAAA;Gfi6DD;Eel6DD;IACE,mBAAA;Gfo6DD;Eer6DD;IACE,UAAA;Gfu6DD;Eex6DD;IACE,mBAAA;Gf06DD;Ee36DD;IACE,mBAAA;Gf66DD;Ee96DD;IACE,UAAA;Gfg7DD;Eej7DD;IACE,mBAAA;Gfm7DD;Eep7DD;IACE,mBAAA;Gfs7DD;Eev7DD;IACE,UAAA;Gfy7DD;Ee17DD;IACE,mBAAA;Gf47DD;Ee77DD;IACE,kBAAA;Gf+7DD;Ee37DD;IACE,WAAA;Gf67DD;Ee/6DD;IACE,kBAAA;Gfi7DD;Eel7DD;IACE,0BAAA;Gfo7DD;Eer7DD;IACE,0BAAA;Gfu7DD;Eex7DD;IACE,iBAAA;Gf07DD;Ee37DD;IACE,0BAAA;Gf67DD;Ee97DD;IACE,0BAAA;Gfg8DD;Eej8DD;IACE,iBAAA;Gfm8DD;Eep8DD;IACE,0BAAA;Gfs8DD;Eev8DD;IACE,0BAAA;Gfy8DD;Ee18DD;IACE,iBAAA;Gf48DD;Ee78DD;IACE,0BAAA;Gf+8DD;Eeh9DD;IACE,yBAAA;Gfk9DD;Een9DD;IACE,gBAAA;Gfq9DD;CACF;Aa18DD;EE9CI;IACE,YAAA;Gf2/DH;Eep/DD;IACE,YAAA;Gfs/DD;Eev/DD;IACE,oBAAA;Gfy/DD;Ee1/DD;IACE,oBAAA;Gf4/DD;Ee7/DD;IACE,WAAA;Gf+/DD;EehgED;IACE,oBAAA;GfkgED;EengED;IACE,oBAAA;GfqgED;EetgED;IACE,WAAA;GfwgED;EezgED;IACE,oBAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,WAAA;GfihED;EelhED;IACE,oBAAA;GfohED;EerhED;IACE,mBAAA;GfuhED;EezgED;IACE,YAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,oBAAA;GfihED;EelhED;IACE,WAAA;GfohED;EerhED;IACE,oBAAA;GfuhED;EexhED;IACE,oBAAA;Gf0hED;Ee3hED;IACE,WAAA;Gf6hED;Ee9hED;IACE,oBAAA;GfgiED;EejiED;IACE,oBAAA;GfmiED;EepiED;IACE,WAAA;GfsiED;EeviED;IACE,oBAAA;GfyiED;Ee1iED;IACE,mBAAA;Gf4iED;EexiED;IACE,YAAA;Gf0iED;Ee1jED;IACE,WAAA;Gf4jED;Ee7jED;IACE,mBAAA;Gf+jED;EehkED;IACE,mBAAA;GfkkED;EenkED;IACE,UAAA;GfqkED;EetkED;IACE,mBAAA;GfwkED;EezkED;IACE,mBAAA;Gf2kED;Ee5kED;IACE,UAAA;Gf8kED;Ee/kED;IACE,mBAAA;GfilED;EellED;IACE,mBAAA;GfolED;EerlED;IACE,UAAA;GfulED;EexlED;IACE,mBAAA;Gf0lED;Ee3lED;IACE,kBAAA;Gf6lED;EezlED;IACE,WAAA;Gf2lED;Ee7kED;IACE,kBAAA;Gf+kED;EehlED;IACE,0BAAA;GfklED;EenlED;IACE,0BAAA;GfqlED;EetlED;IACE,iBAAA;GfwlED;EezlED;IACE,0BAAA;Gf2lED;Ee5lED;IACE,0BAAA;Gf8lED;Ee/lED;IACE,iBAAA;GfimED;EelmED;IACE,0BAAA;GfomED;EermED;IACE,0BAAA;GfumED;EexmED;IACE,iBAAA;Gf0mED;Ee3mED;IACE,0BAAA;Gf6mED;Ee9mED;IACE,yBAAA;GfgnED;EejnED;IACE,gBAAA;GfmnED;CACF;AgBvrED;EACE,8BAAA;ChByrED;AgBvrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChByrED;AgBvrED;EACE,iBAAA;ChByrED;AgBnrED;EACE,YAAA;EACA,gBA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on