From 5fb6679a985f152629b335ed814bdf5dbc3c8529 Mon Sep 17 00:00:00 2001 From: Dragon <13925835632@139.com> Date: Thu, 29 Feb 2024 18:55:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=93=E5=BA=93=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 172 + view/molistar/common/css/animate.min.css | 6 + .../css/bootstrap-datetimepicker.min.css | 9 + .../common/css/bootstrap-table.min.css | 1 + view/molistar/common/css/bootstrap.min.css | 6 + view/molistar/common/css/datetime.min.css | 1 + view/molistar/common/css/flex.css | 1 + view/molistar/common/css/flex.scss | 107 + view/molistar/common/css/mescroll.min.css | 16 + view/molistar/common/css/normalize.css | 447 + view/molistar/common/css/reset.css | 144 + view/molistar/common/css/swiper.min.css | 15 + view/molistar/common/fonts/DINCond-Medium.ttf | Bin 0 -> 1480 bytes view/molistar/common/fonts/PingFang Bold.ttf | Bin 0 -> 2196 bytes .../common/fonts/PingFang ExtraLight.ttf | Bin 0 -> 2288 bytes view/molistar/common/fonts/PingFang Heavy.ttf | Bin 0 -> 2216 bytes view/molistar/common/fonts/PingFang Light.ttf | Bin 0 -> 2208 bytes .../molistar/common/fonts/PingFang Medium.ttf | Bin 0 -> 2228 bytes .../common/fonts/PingFang Regular.ttf | Bin 0 -> 2240 bytes view/molistar/common/fonts/PingFang-Bold.ttf | Bin 0 -> 2196 bytes .../common/fonts/PingFang-ExtraLight.ttf | Bin 0 -> 2288 bytes view/molistar/common/fonts/PingFang-Heavy.ttf | Bin 0 -> 2216 bytes view/molistar/common/fonts/PingFang-Light.ttf | Bin 0 -> 2208 bytes .../molistar/common/fonts/PingFang-Medium.ttf | Bin 0 -> 2228 bytes .../common/fonts/PingFang-Regular.ttf | Bin 0 -> 2240 bytes .../common/fonts/SF-UI-Display-Black.ttf | Bin 0 -> 5992 bytes .../common/fonts/SF-UI-Display-Bold.ttf | Bin 0 -> 5980 bytes .../common/fonts/SF-UI-Display-Heavy.ttf | Bin 0 -> 5992 bytes .../common/fonts/SF-UI-Display-Light.ttf | Bin 0 -> 5992 bytes .../common/fonts/SF-UI-Display-Medium.ttf | Bin 0 -> 6008 bytes .../common/fonts/SF-UI-Display-Regular.ttf | Bin 0 -> 6024 bytes .../common/fonts/SF-UI-Display-Semibold.ttf | Bin 0 -> 6040 bytes .../common/fonts/SF-UI-Display-Ultralight.ttf | Bin 0 -> 6068 bytes .../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 view/molistar/common/images/logo.png | Bin 0 -> 32933 bytes view/molistar/common/js/JQuery.datetime.js | 2862 ++++ .../molistar/common/js/JQuery.datetime.min.js | 1 + view/molistar/common/js/baiduStatis.js | 31 + .../common/js/bootstrap-datetimepicker.min.js | 1 + .../molistar/common/js/bootstrap-table.min.js | 9 + view/molistar/common/js/bootstrap.min.js | 7 + view/molistar/common/js/clipboard.min.js | 7 + view/molistar/common/js/common.js | 460 + view/molistar/common/js/common2.js | 805 + view/molistar/common/js/crypto-js.js | 6191 ++++++++ view/molistar/common/js/datetime.js | 2825 ++++ view/molistar/common/js/datetime.min.js | 1 + view/molistar/common/js/flexible.js | 109 + view/molistar/common/js/iscroll-probe.js | 2197 +++ view/molistar/common/js/iscroll.js | 2170 +++ view/molistar/common/js/jQueryExtend.js | 22 + view/molistar/common/js/jQueryRotate.js | 339 + view/molistar/common/js/jquery-1.8.3.min.js | 2 + view/molistar/common/js/jquery-3.2.1.min.js | 4 + view/molistar/common/js/jquery.copy.min.js | 7 + view/molistar/common/js/layer.js | 2 + view/molistar/common/js/mescroll.min.js | 14 + view/molistar/common/js/need/layer.css | 1 + view/molistar/common/js/pingpp.js | 2 + view/molistar/common/js/route-constant.js | 28 + view/molistar/common/js/svga.min.js | 1 + .../common/js/swiper.animate1.0.3.min.js | 3 + view/molistar/common/js/swiper.min.js | 19 + view/molistar/common/js/template-web.js | 3 + view/molistar/common/js/vconsole.min.js | 12 + view/molistar/modules/inform/css/help.css | 24 + view/molistar/modules/inform/css/help.scss | 25 + view/molistar/modules/inform/css/index.css | 224 + view/molistar/modules/inform/css/index.scss | 199 + .../modules/inform/css/inform-list.css | 77 + .../modules/inform/css/inform-list.scss | 72 + view/molistar/modules/inform/help.html | 80 + view/molistar/modules/inform/images/blank.png | Bin 0 -> 74886 bytes view/molistar/modules/inform/images/pitch.png | Bin 0 -> 2418 bytes .../inform/images/report_uploading_img.png | Bin 0 -> 2081 bytes .../modules/inform/images/success-icon.png | Bin 0 -> 3376 bytes view/molistar/modules/inform/index.html | 79 + view/molistar/modules/inform/inform-list.html | 48 + view/molistar/modules/inform/js/index.js | 235 + .../molistar/modules/inform/js/inform-list.js | 97 + view/molistar/modules/level/css/index.css | 245 + view/molistar/modules/level/css/index.scss | 223 + view/molistar/modules/level/images/charm.png | Bin 0 -> 69461 bytes .../molistar/modules/level/images/effects.png | Bin 0 -> 152663 bytes .../modules/level/images/effects1.png | Bin 0 -> 87500 bytes .../molistar/modules/level/images/explain.png | Bin 0 -> 52163 bytes view/molistar/modules/level/images/people.png | Bin 0 -> 65652 bytes view/molistar/modules/level/images/user.png | Bin 0 -> 20881 bytes view/molistar/modules/level/images/wealth.png | Bin 0 -> 152457 bytes view/molistar/modules/level/index.html | 96 + view/molistar/modules/level/js/index.js | 114 + view/molistar/modules/logout/confirm.html | 49 + view/molistar/modules/logout/css/confirm.css | 135 + view/molistar/modules/logout/css/confirm.scss | 126 + view/molistar/modules/logout/css/fail.css | 64 + view/molistar/modules/logout/css/fail.scss | 64 + view/molistar/modules/logout/css/hint.css | 55 + view/molistar/modules/logout/css/hint.scss | 55 + view/molistar/modules/logout/css/index.css | 98 + view/molistar/modules/logout/css/index.scss | 92 + view/molistar/modules/logout/fail.html | 30 + view/molistar/modules/logout/hint.html | 39 + .../modules/logout/images/confirm-icon.png | Bin 0 -> 1022 bytes .../modules/logout/images/fail-icon.png | Bin 0 -> 1015 bytes view/molistar/modules/logout/index.html | 62 + view/molistar/modules/logout/js/confirm.js | 72 + view/molistar/modules/logout/js/fail.js | 48 + view/molistar/modules/logout/js/hint.js | 14 + view/molistar/modules/logout/js/index.js | 61 + view/molistar/modules/myincome/index.html | 1 + .../app.b1a360bed56d1a74512e907fff171218.css | 2 + .../myincome/static/fonts/bg_gold.5be0d30.png | Bin 0 -> 59915 bytes .../static/fonts/bg_super_gold.d027534.png | Bin 0 -> 41412 bytes .../static/fonts/bonus-bg.41b3371.png | Bin 0 -> 19598 bytes .../fonts/idcard-end-default.c62a85c.png | Bin 0 -> 12950 bytes .../myincome/static/fonts/login.e6f4fdc.png | Bin 0 -> 60899 bytes .../static/fonts/running-water.fc9a968.png | Bin 0 -> 63284 bytes .../fonts/rw-single-boardcast.1b456dc.png | Bin 0 -> 15087 bytes .../myincome/static/fonts/serial.035adea.png | Bin 0 -> 212981 bytes .../static/js/0.ec4de892f04f94b4c2f6.js | 34 + .../static/js/1.c2ef46c6dcac24931ba4.js | 2 + .../static/js/10.68b3b250aa24f55d8a82.js | 2 + .../static/js/11.5d316356ba01de644f13.js | 2 + .../static/js/12.34fff916cd789ce22038.js | 2 + .../static/js/2.17debe0f6011a97521e8.js | 2 + .../static/js/3.fe32c1237c8826c80886.js | 2 + .../static/js/4.95d3c8221db60b228eb2.js | 2 + .../static/js/5.ec7ee6a6de347cab8213.js | 2 + .../static/js/6.0e7ac399b5d59483b7f2.js | 2 + .../static/js/7.c60dff0fd854d6fc291f.js | 2 + .../static/js/8.43a07f21010bbe7fcd6c.js | 2 + .../static/js/9.d02156509389fc441584.js | 2 + .../static/js/app.f56d535f53d3c277e0fd.js | 2 + .../js/manifest.8fb7b94bab71b553af99.js | 2 + .../static/js/vendor.549947ec2550614f506c.js | 21 + .../modules/rule/community-norms.html | 274 + view/molistar/modules/rule/environment.html | 43 + view/molistar/modules/rule/faq.html | 62 + view/molistar/modules/rule/guide.html | 33 + view/molistar/modules/rule/identity-rule.html | 64 + view/molistar/modules/rule/images/2.png | Bin 0 -> 2659 bytes view/molistar/modules/rule/images/close.png | Bin 0 -> 461 bytes .../modules/rule/images/code-community.png | Bin 0 -> 267007 bytes view/molistar/modules/rule/images/code.png | Bin 0 -> 88512 bytes view/molistar/modules/rule/images/dating.png | Bin 0 -> 653886 bytes view/molistar/modules/rule/images/diamond.png | Bin 0 -> 1441 bytes view/molistar/modules/rule/images/icon.png | Bin 0 -> 1413 bytes .../modules/rule/images/patrician-yy.png | Bin 0 -> 179831 bytes .../modules/rule/images/patrician.png | Bin 0 -> 336840 bytes view/molistar/modules/rule/images/right.png | Bin 0 -> 191 bytes view/molistar/modules/rule/images/sdk.png | Bin 0 -> 509379 bytes view/molistar/modules/rule/intro.html | 21 + .../modules/rule/introduction-patrician.html | 42 + view/molistar/modules/rule/js/dating.js | 82 + .../molistar/modules/rule/js/luckyGiftRule.js | 106 + .../modules/rule/js/newWishingWellRule.js | 85 + .../modules/rule/js/wishingWellRule.js | 85 + view/molistar/modules/rule/live-protocol.html | 398 + view/molistar/modules/rule/loginout.html | 38 + .../modules/rule/logout-agreement.html | 160 + view/molistar/modules/rule/luckyGiftRule.html | 76 + .../modules/rule/newWishingWellRule.html | 52 + view/molistar/modules/rule/output.html | 58 + view/molistar/modules/rule/permissions.html | 105 + view/molistar/modules/rule/personal-info.html | 102 + view/molistar/modules/rule/privacy-wap.html | 391 + view/molistar/modules/rule/protocol.html | 553 + .../modules/rule/rechargeAgreement.html | 132 + .../modules/rule/red-packet-rule.html | 81 + view/molistar/modules/rule/sdk.html | 115 + view/molistar/modules/rule/style/_common.css | 73 + view/molistar/modules/rule/style/contact.css | 56 + view/molistar/modules/rule/style/dating.css | 85 + view/molistar/modules/rule/style/dating.scss | 77 + view/molistar/modules/rule/style/guide.css | 61 + .../modules/rule/style/luckyGiftRule.css | 120 + .../modules/rule/style/luckyGiftRule.scss | 143 + .../modules/rule/style/wishingWellRule.css | 100 + .../modules/rule/style/wishingWellRule.scss | 93 + .../modules/rule/wishingWellRule.html | 52 + view/molistar/vue-project/myincome/.babelrc | 12 + .../vue-project/myincome/.editorconfig | 9 + view/molistar/vue-project/myincome/.gitignore | 14 + .../vue-project/myincome/.postcssrc.js | 17 + view/molistar/vue-project/myincome/README.md | 21 + .../vue-project/myincome/build/build.js | 41 + .../myincome/build/check-versions.js | 54 + .../vue-project/myincome/build/logo.png | Bin 0 -> 6849 bytes .../vue-project/myincome/build/utils.js | 102 + .../myincome/build/vue-loader.conf.js | 22 + .../myincome/build/webpack.base.conf.js | 107 + .../myincome/build/webpack.dev.conf.js | 95 + .../myincome/build/webpack.prod.conf.js | 145 + .../vue-project/myincome/config/dev.env.js | 8 + .../vue-project/myincome/config/index.js | 80 + .../vue-project/myincome/config/prod.env.js | 4 + view/molistar/vue-project/myincome/index.html | 17 + .../vue-project/myincome/package-lock.json | 13103 ++++++++++++++++ .../vue-project/myincome/package.json | 82 + .../molistar/vue-project/myincome/src/App.vue | 30 + .../vue-project/myincome/src/api/diamond.js | 9 + .../vue-project/myincome/src/api/myincome.js | 251 + .../myincome/src/assets/css/vant.css | 11 + .../src/assets/images/diamond/diamond.png | Bin 0 -> 2452 bytes .../myincome/src/assets/img/alipay.png | Bin 0 -> 2581 bytes .../myincome/src/assets/img/arrows.png | Bin 0 -> 525 bytes .../myincome/src/assets/img/back.png | Bin 0 -> 477 bytes .../myincome/src/assets/img/back1.png | Bin 0 -> 626 bytes .../myincome/src/assets/img/bg_gold.png | Bin 0 -> 59915 bytes .../myincome/src/assets/img/bg_super_gold.png | Bin 0 -> 41412 bytes .../myincome/src/assets/img/bonus-bg.png | Bin 0 -> 19598 bytes .../myincome/src/assets/img/crystal.png | Bin 0 -> 2923 bytes .../myincome/src/assets/img/diamond.png | Bin 0 -> 2452 bytes .../myincome/src/assets/img/gold.png | Bin 0 -> 3058 bytes .../myincome/src/assets/img/idcard-bg.png | Bin 0 -> 2980 bytes .../src/assets/img/idcard-end-default.png | Bin 0 -> 12950 bytes .../src/assets/img/idcard-front-default.png | Bin 0 -> 8004 bytes .../myincome/src/assets/img/login.png | Bin 0 -> 60899 bytes .../myincome/src/assets/img/logo.png | Bin 0 -> 4180 bytes .../myincome/src/assets/img/rank/bg.png | Bin 0 -> 375567 bytes .../myincome/src/assets/img/rank/bg1.png | Bin 0 -> 348271 bytes .../myincome/src/assets/img/rank/bg2.png | Bin 0 -> 370623 bytes .../myincome/src/assets/img/rank/one.png | Bin 0 -> 19644 bytes .../myincome/src/assets/img/rank/three.png | Bin 0 -> 19858 bytes .../myincome/src/assets/img/rank/two.png | Bin 0 -> 20383 bytes .../myincome/src/assets/img/recharge_bg.png | Bin 0 -> 203085 bytes .../src/assets/img/running-water-bg.png | Bin 0 -> 2798 bytes .../myincome/src/assets/img/running-water.png | Bin 0 -> 63284 bytes .../src/assets/img/rw-single-boardcast.png | Bin 0 -> 15087 bytes .../myincome/src/assets/img/serial.png | Bin 0 -> 212981 bytes .../src/assets/img/share/Instructions.png | Bin 0 -> 57382 bytes .../src/assets/img/share/ic_launcher-web.png | Bin 0 -> 51843 bytes .../src/assets/img/share/share_bg.png | Bin 0 -> 195305 bytes .../src/assets/img/share/share_bg_whrite.png | Bin 0 -> 30264 bytes .../src/assets/img/share/share_btn_big.png | Bin 0 -> 37214 bytes .../myincome/src/assets/img/unionpay.png | Bin 0 -> 3372 bytes .../myincome/src/assets/tff/DINCond-Bold.otf | Bin 0 -> 31380 bytes .../myincome/src/components/login.vue | 336 + .../myincome/src/components/navigation.vue | 76 + .../molistar/vue-project/myincome/src/main.js | 39 + .../vue-project/myincome/src/router/index.js | 38 + .../myincome/src/static/css/reset.css | 144 + .../vue-project/myincome/src/store/index.js | 36 + .../vue-project/myincome/src/styles/btn.css | 149 + .../vue-project/myincome/src/styles/btn.scss | 99 + .../vue-project/myincome/src/styles/index.css | 566 + .../myincome/src/styles/index.scss | 191 + .../vue-project/myincome/src/styles/mixin.css | 1 + .../myincome/src/styles/mixin.scss | 66 + .../myincome/src/styles/sidebar.scss | 209 + .../myincome/src/styles/transition.css | 46 + .../myincome/src/styles/transition.scss | 48 + .../myincome/src/styles/variables.css | 10 + .../myincome/src/styles/variables.scss | 35 + .../vue-project/myincome/src/utils/browser.js | 35 + .../vue-project/myincome/src/utils/common.js | 276 + .../vue-project/myincome/src/utils/des.js | 43 + .../myincome/src/utils/formatData.js | 17 + .../vue-project/myincome/src/utils/getUid.js | 36 + .../myincome/src/utils/jsencryptKey.js | 27 + .../vue-project/myincome/src/utils/md5.js | 243 + .../vue-project/myincome/src/utils/relDate.js | 19 + .../vue-project/myincome/src/utils/request.js | 102 + .../myincome/src/view/myincome/BindAlipay.vue | 304 + .../view/myincome/CrystalExchangeDiamond.vue | 288 + .../myincome/src/view/myincome/CrystalLog.vue | 529 + .../myincome/src/view/myincome/DiamondLog.vue | 324 + .../src/view/myincome/GameWithDrawDesc.vue | 86 + .../src/view/myincome/GoldExchangeDiamond.vue | 276 + .../myincome/src/view/myincome/GoldLog.vue | 494 + .../myincome/src/view/myincome/Login.vue | 359 + .../myincome/src/view/myincome/MyIncome.vue | 897 ++ .../myincome/src/view/myincome/WithDraw.vue | 694 + .../src/view/myincome/WithDrawInfoBind.vue | 988 ++ .../src/view/running/runningWater.vue | 272 + .../vue-project/myincome/static/.gitkeep | 0 view/molistar/vue-project/wishRank/.babelrc | 12 + .../vue-project/wishRank/.editorconfig | 9 + view/molistar/vue-project/wishRank/.gitignore | 14 + .../vue-project/wishRank/.postcssrc.js | 17 + view/molistar/vue-project/wishRank/README.md | 21 + .../vue-project/wishRank/build/build.js | 41 + .../wishRank/build/check-versions.js | 54 + .../vue-project/wishRank/build/logo.png | Bin 0 -> 6849 bytes .../vue-project/wishRank/build/utils.js | 102 + .../wishRank/build/vue-loader.conf.js | 22 + .../wishRank/build/webpack.base.conf.js | 107 + .../wishRank/build/webpack.dev.conf.js | 95 + .../wishRank/build/webpack.prod.conf.js | 145 + .../vue-project/wishRank/config/dev.env.js | 8 + .../vue-project/wishRank/config/index.js | 79 + .../vue-project/wishRank/config/prod.env.js | 4 + view/molistar/vue-project/wishRank/index.html | 17 + .../vue-project/wishRank/package-lock.json | 12765 +++++++++++++++ .../vue-project/wishRank/package.json | 79 + .../molistar/vue-project/wishRank/src/App.vue | 29 + .../wishRank/src/api/axios.config.js | 9 + .../vue-project/wishRank/src/api/diamond.js | 9 + .../vue-project/wishRank/src/api/rank.js | 43 + .../wishRank/src/assets/css/vant.css | 16 + .../src/assets/images/diamond/diamond.png | Bin 0 -> 2452 bytes .../src/assets/images/rank/bg-three.png | Bin 0 -> 11161 bytes .../src/assets/images/rank/bg-top.png | Bin 0 -> 3396 bytes .../wishRank/src/assets/images/rank/bg.png | Bin 0 -> 375567 bytes .../src/assets/images/rank/bg1-three.png | Bin 0 -> 15605 bytes .../src/assets/images/rank/bg1-top.png | Bin 0 -> 3244 bytes .../wishRank/src/assets/images/rank/bg1.png | Bin 0 -> 348271 bytes .../src/assets/images/rank/bg2-three.png | Bin 0 -> 11770 bytes .../src/assets/images/rank/bg2-top.png | Bin 0 -> 2175 bytes .../wishRank/src/assets/images/rank/bg2.png | Bin 0 -> 370623 bytes .../src/assets/images/rank/bg3-three.png | Bin 0 -> 11821 bytes .../src/assets/images/rank/bg3-top.png | Bin 0 -> 2613 bytes .../wishRank/src/assets/images/rank/bg3.png | Bin 0 -> 73453 bytes .../src/assets/images/rank/diamond.png | Bin 0 -> 2452 bytes .../src/assets/images/rank/first-icon.png | Bin 0 -> 3331 bytes .../wishRank/src/assets/images/rank/one.png | Bin 0 -> 19644 bytes .../wishRank/src/assets/images/rank/three.png | Bin 0 -> 19858 bytes .../wishRank/src/assets/images/rank/two.png | Bin 0 -> 20383 bytes .../wishRank/src/components/login.vue | 336 + .../molistar/vue-project/wishRank/src/main.js | 28 + .../vue-project/wishRank/src/router/index.js | 32 + .../wishRank/src/static/css/reset.css | 144 + .../vue-project/wishRank/src/store/index.js | 29 + .../vue-project/wishRank/src/styles/btn.css | 149 + .../vue-project/wishRank/src/styles/btn.scss | 99 + .../vue-project/wishRank/src/styles/index.css | 566 + .../wishRank/src/styles/index.scss | 191 + .../vue-project/wishRank/src/styles/mixin.css | 1 + .../wishRank/src/styles/mixin.scss | 66 + .../wishRank/src/styles/sidebar.scss | 209 + .../wishRank/src/styles/transition.css | 46 + .../wishRank/src/styles/transition.scss | 48 + .../wishRank/src/styles/variables.css | 10 + .../wishRank/src/styles/variables.scss | 35 + .../vue-project/wishRank/src/utils/browser.js | 35 + .../wishRank/src/utils/cloneDeep.js | 63 + .../wishRank/src/utils/formatData.js | 17 + .../vue-project/wishRank/src/utils/getUid.js | 32 + .../vue-project/wishRank/src/utils/relDate.js | 16 + .../vue-project/wishRank/src/utils/request.js | 50 + .../wishRank/src/view/rank/DiamondLog.vue | 190 + .../wishRank/src/view/rank/Rank.vue | 866 + .../src/view/rank/WishingWellRank.vue | 259 + .../src/view/rank/WishingWellRecord.vue | 128 + .../src/view/rank/newWishingWellRecord.vue | 128 + .../src/view/rank/wishingWellRule.vue | 61 + .../vue-project/wishRank/static/.gitkeep | 0 351 files changed, 66517 insertions(+) create mode 100644 .gitignore create mode 100644 view/molistar/common/css/animate.min.css create mode 100644 view/molistar/common/css/bootstrap-datetimepicker.min.css create mode 100644 view/molistar/common/css/bootstrap-table.min.css create mode 100644 view/molistar/common/css/bootstrap.min.css create mode 100644 view/molistar/common/css/datetime.min.css create mode 100644 view/molistar/common/css/flex.css create mode 100644 view/molistar/common/css/flex.scss create mode 100644 view/molistar/common/css/mescroll.min.css create mode 100644 view/molistar/common/css/normalize.css create mode 100644 view/molistar/common/css/reset.css create mode 100644 view/molistar/common/css/swiper.min.css create mode 100644 view/molistar/common/fonts/DINCond-Medium.ttf create mode 100644 view/molistar/common/fonts/PingFang Bold.ttf create mode 100644 view/molistar/common/fonts/PingFang ExtraLight.ttf create mode 100644 view/molistar/common/fonts/PingFang Heavy.ttf create mode 100644 view/molistar/common/fonts/PingFang Light.ttf create mode 100644 view/molistar/common/fonts/PingFang Medium.ttf create mode 100644 view/molistar/common/fonts/PingFang Regular.ttf create mode 100644 view/molistar/common/fonts/PingFang-Bold.ttf create mode 100644 view/molistar/common/fonts/PingFang-ExtraLight.ttf create mode 100644 view/molistar/common/fonts/PingFang-Heavy.ttf create mode 100644 view/molistar/common/fonts/PingFang-Light.ttf create mode 100644 view/molistar/common/fonts/PingFang-Medium.ttf create mode 100644 view/molistar/common/fonts/PingFang-Regular.ttf create mode 100644 view/molistar/common/fonts/SF-UI-Display-Black.ttf create mode 100644 view/molistar/common/fonts/SF-UI-Display-Bold.ttf create mode 100644 view/molistar/common/fonts/SF-UI-Display-Heavy.ttf create mode 100644 view/molistar/common/fonts/SF-UI-Display-Light.ttf create mode 100644 view/molistar/common/fonts/SF-UI-Display-Medium.ttf create mode 100644 view/molistar/common/fonts/SF-UI-Display-Regular.ttf create mode 100644 view/molistar/common/fonts/SF-UI-Display-Semibold.ttf create mode 100644 view/molistar/common/fonts/SF-UI-Display-Ultralight.ttf create mode 100644 view/molistar/common/fonts/glyphicons-halflings-regular.eot create mode 100644 view/molistar/common/fonts/glyphicons-halflings-regular.svg create mode 100644 view/molistar/common/fonts/glyphicons-halflings-regular.ttf create mode 100644 view/molistar/common/fonts/glyphicons-halflings-regular.woff create mode 100644 view/molistar/common/fonts/glyphicons-halflings-regular.woff2 create mode 100644 view/molistar/common/images/logo.png create mode 100644 view/molistar/common/js/JQuery.datetime.js create mode 100644 view/molistar/common/js/JQuery.datetime.min.js create mode 100644 view/molistar/common/js/baiduStatis.js create mode 100644 view/molistar/common/js/bootstrap-datetimepicker.min.js create mode 100644 view/molistar/common/js/bootstrap-table.min.js create mode 100644 view/molistar/common/js/bootstrap.min.js create mode 100644 view/molistar/common/js/clipboard.min.js create mode 100644 view/molistar/common/js/common.js create mode 100644 view/molistar/common/js/common2.js create mode 100644 view/molistar/common/js/crypto-js.js create mode 100644 view/molistar/common/js/datetime.js create mode 100644 view/molistar/common/js/datetime.min.js create mode 100644 view/molistar/common/js/flexible.js create mode 100644 view/molistar/common/js/iscroll-probe.js create mode 100644 view/molistar/common/js/iscroll.js create mode 100644 view/molistar/common/js/jQueryExtend.js create mode 100644 view/molistar/common/js/jQueryRotate.js create mode 100644 view/molistar/common/js/jquery-1.8.3.min.js create mode 100644 view/molistar/common/js/jquery-3.2.1.min.js create mode 100644 view/molistar/common/js/jquery.copy.min.js create mode 100644 view/molistar/common/js/layer.js create mode 100644 view/molistar/common/js/mescroll.min.js create mode 100644 view/molistar/common/js/need/layer.css create mode 100644 view/molistar/common/js/pingpp.js create mode 100644 view/molistar/common/js/route-constant.js create mode 100644 view/molistar/common/js/svga.min.js create mode 100644 view/molistar/common/js/swiper.animate1.0.3.min.js create mode 100644 view/molistar/common/js/swiper.min.js create mode 100644 view/molistar/common/js/template-web.js create mode 100644 view/molistar/common/js/vconsole.min.js create mode 100644 view/molistar/modules/inform/css/help.css create mode 100644 view/molistar/modules/inform/css/help.scss create mode 100644 view/molistar/modules/inform/css/index.css create mode 100644 view/molistar/modules/inform/css/index.scss create mode 100644 view/molistar/modules/inform/css/inform-list.css create mode 100644 view/molistar/modules/inform/css/inform-list.scss create mode 100644 view/molistar/modules/inform/help.html create mode 100644 view/molistar/modules/inform/images/blank.png create mode 100644 view/molistar/modules/inform/images/pitch.png create mode 100644 view/molistar/modules/inform/images/report_uploading_img.png create mode 100644 view/molistar/modules/inform/images/success-icon.png create mode 100644 view/molistar/modules/inform/index.html create mode 100644 view/molistar/modules/inform/inform-list.html create mode 100644 view/molistar/modules/inform/js/index.js create mode 100644 view/molistar/modules/inform/js/inform-list.js create mode 100644 view/molistar/modules/level/css/index.css create mode 100644 view/molistar/modules/level/css/index.scss create mode 100644 view/molistar/modules/level/images/charm.png create mode 100644 view/molistar/modules/level/images/effects.png create mode 100644 view/molistar/modules/level/images/effects1.png create mode 100644 view/molistar/modules/level/images/explain.png create mode 100644 view/molistar/modules/level/images/people.png create mode 100644 view/molistar/modules/level/images/user.png create mode 100644 view/molistar/modules/level/images/wealth.png create mode 100644 view/molistar/modules/level/index.html create mode 100644 view/molistar/modules/level/js/index.js create mode 100644 view/molistar/modules/logout/confirm.html create mode 100644 view/molistar/modules/logout/css/confirm.css create mode 100644 view/molistar/modules/logout/css/confirm.scss create mode 100644 view/molistar/modules/logout/css/fail.css create mode 100644 view/molistar/modules/logout/css/fail.scss create mode 100644 view/molistar/modules/logout/css/hint.css create mode 100644 view/molistar/modules/logout/css/hint.scss create mode 100644 view/molistar/modules/logout/css/index.css create mode 100644 view/molistar/modules/logout/css/index.scss create mode 100644 view/molistar/modules/logout/fail.html create mode 100644 view/molistar/modules/logout/hint.html create mode 100644 view/molistar/modules/logout/images/confirm-icon.png create mode 100644 view/molistar/modules/logout/images/fail-icon.png create mode 100644 view/molistar/modules/logout/index.html create mode 100644 view/molistar/modules/logout/js/confirm.js create mode 100644 view/molistar/modules/logout/js/fail.js create mode 100644 view/molistar/modules/logout/js/hint.js create mode 100644 view/molistar/modules/logout/js/index.js create mode 100644 view/molistar/modules/myincome/index.html create mode 100644 view/molistar/modules/myincome/static/css/app.b1a360bed56d1a74512e907fff171218.css create mode 100644 view/molistar/modules/myincome/static/fonts/bg_gold.5be0d30.png create mode 100644 view/molistar/modules/myincome/static/fonts/bg_super_gold.d027534.png create mode 100644 view/molistar/modules/myincome/static/fonts/bonus-bg.41b3371.png create mode 100644 view/molistar/modules/myincome/static/fonts/idcard-end-default.c62a85c.png create mode 100644 view/molistar/modules/myincome/static/fonts/login.e6f4fdc.png create mode 100644 view/molistar/modules/myincome/static/fonts/running-water.fc9a968.png create mode 100644 view/molistar/modules/myincome/static/fonts/rw-single-boardcast.1b456dc.png create mode 100644 view/molistar/modules/myincome/static/fonts/serial.035adea.png create mode 100644 view/molistar/modules/myincome/static/js/0.ec4de892f04f94b4c2f6.js create mode 100644 view/molistar/modules/myincome/static/js/1.c2ef46c6dcac24931ba4.js create mode 100644 view/molistar/modules/myincome/static/js/10.68b3b250aa24f55d8a82.js create mode 100644 view/molistar/modules/myincome/static/js/11.5d316356ba01de644f13.js create mode 100644 view/molistar/modules/myincome/static/js/12.34fff916cd789ce22038.js create mode 100644 view/molistar/modules/myincome/static/js/2.17debe0f6011a97521e8.js create mode 100644 view/molistar/modules/myincome/static/js/3.fe32c1237c8826c80886.js create mode 100644 view/molistar/modules/myincome/static/js/4.95d3c8221db60b228eb2.js create mode 100644 view/molistar/modules/myincome/static/js/5.ec7ee6a6de347cab8213.js create mode 100644 view/molistar/modules/myincome/static/js/6.0e7ac399b5d59483b7f2.js create mode 100644 view/molistar/modules/myincome/static/js/7.c60dff0fd854d6fc291f.js create mode 100644 view/molistar/modules/myincome/static/js/8.43a07f21010bbe7fcd6c.js create mode 100644 view/molistar/modules/myincome/static/js/9.d02156509389fc441584.js create mode 100644 view/molistar/modules/myincome/static/js/app.f56d535f53d3c277e0fd.js create mode 100644 view/molistar/modules/myincome/static/js/manifest.8fb7b94bab71b553af99.js create mode 100644 view/molistar/modules/myincome/static/js/vendor.549947ec2550614f506c.js create mode 100644 view/molistar/modules/rule/community-norms.html create mode 100644 view/molistar/modules/rule/environment.html create mode 100644 view/molistar/modules/rule/faq.html create mode 100644 view/molistar/modules/rule/guide.html create mode 100644 view/molistar/modules/rule/identity-rule.html create mode 100644 view/molistar/modules/rule/images/2.png create mode 100644 view/molistar/modules/rule/images/close.png create mode 100644 view/molistar/modules/rule/images/code-community.png create mode 100644 view/molistar/modules/rule/images/code.png create mode 100644 view/molistar/modules/rule/images/dating.png create mode 100644 view/molistar/modules/rule/images/diamond.png create mode 100644 view/molistar/modules/rule/images/icon.png create mode 100644 view/molistar/modules/rule/images/patrician-yy.png create mode 100644 view/molistar/modules/rule/images/patrician.png create mode 100644 view/molistar/modules/rule/images/right.png create mode 100644 view/molistar/modules/rule/images/sdk.png create mode 100644 view/molistar/modules/rule/intro.html create mode 100644 view/molistar/modules/rule/introduction-patrician.html create mode 100644 view/molistar/modules/rule/js/dating.js create mode 100644 view/molistar/modules/rule/js/luckyGiftRule.js create mode 100644 view/molistar/modules/rule/js/newWishingWellRule.js create mode 100644 view/molistar/modules/rule/js/wishingWellRule.js create mode 100644 view/molistar/modules/rule/live-protocol.html create mode 100644 view/molistar/modules/rule/loginout.html create mode 100644 view/molistar/modules/rule/logout-agreement.html create mode 100644 view/molistar/modules/rule/luckyGiftRule.html create mode 100644 view/molistar/modules/rule/newWishingWellRule.html create mode 100644 view/molistar/modules/rule/output.html create mode 100644 view/molistar/modules/rule/permissions.html create mode 100644 view/molistar/modules/rule/personal-info.html create mode 100644 view/molistar/modules/rule/privacy-wap.html create mode 100644 view/molistar/modules/rule/protocol.html create mode 100644 view/molistar/modules/rule/rechargeAgreement.html create mode 100644 view/molistar/modules/rule/red-packet-rule.html create mode 100644 view/molistar/modules/rule/sdk.html create mode 100644 view/molistar/modules/rule/style/_common.css create mode 100644 view/molistar/modules/rule/style/contact.css create mode 100644 view/molistar/modules/rule/style/dating.css create mode 100644 view/molistar/modules/rule/style/dating.scss create mode 100644 view/molistar/modules/rule/style/guide.css create mode 100644 view/molistar/modules/rule/style/luckyGiftRule.css create mode 100644 view/molistar/modules/rule/style/luckyGiftRule.scss create mode 100644 view/molistar/modules/rule/style/wishingWellRule.css create mode 100644 view/molistar/modules/rule/style/wishingWellRule.scss create mode 100644 view/molistar/modules/rule/wishingWellRule.html create mode 100644 view/molistar/vue-project/myincome/.babelrc create mode 100644 view/molistar/vue-project/myincome/.editorconfig create mode 100644 view/molistar/vue-project/myincome/.gitignore create mode 100644 view/molistar/vue-project/myincome/.postcssrc.js create mode 100644 view/molistar/vue-project/myincome/README.md create mode 100644 view/molistar/vue-project/myincome/build/build.js create mode 100644 view/molistar/vue-project/myincome/build/check-versions.js create mode 100644 view/molistar/vue-project/myincome/build/logo.png create mode 100644 view/molistar/vue-project/myincome/build/utils.js create mode 100644 view/molistar/vue-project/myincome/build/vue-loader.conf.js create mode 100644 view/molistar/vue-project/myincome/build/webpack.base.conf.js create mode 100644 view/molistar/vue-project/myincome/build/webpack.dev.conf.js create mode 100644 view/molistar/vue-project/myincome/build/webpack.prod.conf.js create mode 100644 view/molistar/vue-project/myincome/config/dev.env.js create mode 100644 view/molistar/vue-project/myincome/config/index.js create mode 100644 view/molistar/vue-project/myincome/config/prod.env.js create mode 100644 view/molistar/vue-project/myincome/index.html create mode 100644 view/molistar/vue-project/myincome/package-lock.json create mode 100644 view/molistar/vue-project/myincome/package.json create mode 100644 view/molistar/vue-project/myincome/src/App.vue create mode 100644 view/molistar/vue-project/myincome/src/api/diamond.js create mode 100644 view/molistar/vue-project/myincome/src/api/myincome.js create mode 100644 view/molistar/vue-project/myincome/src/assets/css/vant.css create mode 100644 view/molistar/vue-project/myincome/src/assets/images/diamond/diamond.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/alipay.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/arrows.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/back.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/back1.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/bg_gold.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/bg_super_gold.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/bonus-bg.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/crystal.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/diamond.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/gold.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/idcard-bg.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/idcard-end-default.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/idcard-front-default.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/login.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/logo.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/rank/bg.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/rank/bg1.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/rank/bg2.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/rank/one.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/rank/three.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/rank/two.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/recharge_bg.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/running-water-bg.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/running-water.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/rw-single-boardcast.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/serial.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/share/Instructions.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/share/ic_launcher-web.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/share/share_bg.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/share/share_bg_whrite.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/share/share_btn_big.png create mode 100644 view/molistar/vue-project/myincome/src/assets/img/unionpay.png create mode 100644 view/molistar/vue-project/myincome/src/assets/tff/DINCond-Bold.otf create mode 100644 view/molistar/vue-project/myincome/src/components/login.vue create mode 100644 view/molistar/vue-project/myincome/src/components/navigation.vue create mode 100644 view/molistar/vue-project/myincome/src/main.js create mode 100644 view/molistar/vue-project/myincome/src/router/index.js create mode 100644 view/molistar/vue-project/myincome/src/static/css/reset.css create mode 100644 view/molistar/vue-project/myincome/src/store/index.js create mode 100644 view/molistar/vue-project/myincome/src/styles/btn.css create mode 100644 view/molistar/vue-project/myincome/src/styles/btn.scss create mode 100644 view/molistar/vue-project/myincome/src/styles/index.css create mode 100644 view/molistar/vue-project/myincome/src/styles/index.scss create mode 100644 view/molistar/vue-project/myincome/src/styles/mixin.css create mode 100644 view/molistar/vue-project/myincome/src/styles/mixin.scss create mode 100644 view/molistar/vue-project/myincome/src/styles/sidebar.scss create mode 100644 view/molistar/vue-project/myincome/src/styles/transition.css create mode 100644 view/molistar/vue-project/myincome/src/styles/transition.scss create mode 100644 view/molistar/vue-project/myincome/src/styles/variables.css create mode 100644 view/molistar/vue-project/myincome/src/styles/variables.scss create mode 100644 view/molistar/vue-project/myincome/src/utils/browser.js create mode 100644 view/molistar/vue-project/myincome/src/utils/common.js create mode 100644 view/molistar/vue-project/myincome/src/utils/des.js create mode 100644 view/molistar/vue-project/myincome/src/utils/formatData.js create mode 100644 view/molistar/vue-project/myincome/src/utils/getUid.js create mode 100644 view/molistar/vue-project/myincome/src/utils/jsencryptKey.js create mode 100644 view/molistar/vue-project/myincome/src/utils/md5.js create mode 100644 view/molistar/vue-project/myincome/src/utils/relDate.js create mode 100644 view/molistar/vue-project/myincome/src/utils/request.js create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/BindAlipay.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/CrystalExchangeDiamond.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/CrystalLog.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/DiamondLog.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/GameWithDrawDesc.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/GoldExchangeDiamond.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/GoldLog.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/Login.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/MyIncome.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/WithDraw.vue create mode 100644 view/molistar/vue-project/myincome/src/view/myincome/WithDrawInfoBind.vue create mode 100644 view/molistar/vue-project/myincome/src/view/running/runningWater.vue create mode 100644 view/molistar/vue-project/myincome/static/.gitkeep create mode 100644 view/molistar/vue-project/wishRank/.babelrc create mode 100644 view/molistar/vue-project/wishRank/.editorconfig create mode 100644 view/molistar/vue-project/wishRank/.gitignore create mode 100644 view/molistar/vue-project/wishRank/.postcssrc.js create mode 100644 view/molistar/vue-project/wishRank/README.md create mode 100644 view/molistar/vue-project/wishRank/build/build.js create mode 100644 view/molistar/vue-project/wishRank/build/check-versions.js create mode 100644 view/molistar/vue-project/wishRank/build/logo.png create mode 100644 view/molistar/vue-project/wishRank/build/utils.js create mode 100644 view/molistar/vue-project/wishRank/build/vue-loader.conf.js create mode 100644 view/molistar/vue-project/wishRank/build/webpack.base.conf.js create mode 100644 view/molistar/vue-project/wishRank/build/webpack.dev.conf.js create mode 100644 view/molistar/vue-project/wishRank/build/webpack.prod.conf.js create mode 100644 view/molistar/vue-project/wishRank/config/dev.env.js create mode 100644 view/molistar/vue-project/wishRank/config/index.js create mode 100644 view/molistar/vue-project/wishRank/config/prod.env.js create mode 100644 view/molistar/vue-project/wishRank/index.html create mode 100644 view/molistar/vue-project/wishRank/package-lock.json create mode 100644 view/molistar/vue-project/wishRank/package.json create mode 100644 view/molistar/vue-project/wishRank/src/App.vue create mode 100644 view/molistar/vue-project/wishRank/src/api/axios.config.js create mode 100644 view/molistar/vue-project/wishRank/src/api/diamond.js create mode 100644 view/molistar/vue-project/wishRank/src/api/rank.js create mode 100644 view/molistar/vue-project/wishRank/src/assets/css/vant.css create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/diamond/diamond.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg-three.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg-top.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg1-three.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg1-top.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg1.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg2-three.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg2-top.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg2.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg3-three.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg3-top.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/bg3.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/diamond.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/first-icon.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/one.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/three.png create mode 100644 view/molistar/vue-project/wishRank/src/assets/images/rank/two.png create mode 100644 view/molistar/vue-project/wishRank/src/components/login.vue create mode 100644 view/molistar/vue-project/wishRank/src/main.js create mode 100644 view/molistar/vue-project/wishRank/src/router/index.js create mode 100644 view/molistar/vue-project/wishRank/src/static/css/reset.css create mode 100644 view/molistar/vue-project/wishRank/src/store/index.js create mode 100644 view/molistar/vue-project/wishRank/src/styles/btn.css create mode 100644 view/molistar/vue-project/wishRank/src/styles/btn.scss create mode 100644 view/molistar/vue-project/wishRank/src/styles/index.css create mode 100644 view/molistar/vue-project/wishRank/src/styles/index.scss create mode 100644 view/molistar/vue-project/wishRank/src/styles/mixin.css create mode 100644 view/molistar/vue-project/wishRank/src/styles/mixin.scss create mode 100644 view/molistar/vue-project/wishRank/src/styles/sidebar.scss create mode 100644 view/molistar/vue-project/wishRank/src/styles/transition.css create mode 100644 view/molistar/vue-project/wishRank/src/styles/transition.scss create mode 100644 view/molistar/vue-project/wishRank/src/styles/variables.css create mode 100644 view/molistar/vue-project/wishRank/src/styles/variables.scss create mode 100644 view/molistar/vue-project/wishRank/src/utils/browser.js create mode 100644 view/molistar/vue-project/wishRank/src/utils/cloneDeep.js create mode 100644 view/molistar/vue-project/wishRank/src/utils/formatData.js create mode 100644 view/molistar/vue-project/wishRank/src/utils/getUid.js create mode 100644 view/molistar/vue-project/wishRank/src/utils/relDate.js create mode 100644 view/molistar/vue-project/wishRank/src/utils/request.js create mode 100644 view/molistar/vue-project/wishRank/src/view/rank/DiamondLog.vue create mode 100644 view/molistar/vue-project/wishRank/src/view/rank/Rank.vue create mode 100644 view/molistar/vue-project/wishRank/src/view/rank/WishingWellRank.vue create mode 100644 view/molistar/vue-project/wishRank/src/view/rank/WishingWellRecord.vue create mode 100644 view/molistar/vue-project/wishRank/src/view/rank/newWishingWellRecord.vue create mode 100644 view/molistar/vue-project/wishRank/src/view/rank/wishingWellRule.vue create mode 100644 view/molistar/vue-project/wishRank/static/.gitkeep diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..692489e0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,172 @@ +.idea/ +*.iml +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +node_modules +dist/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint + +## Obj-C/Swift specific +*.hmap +*.ipa +*.dSYM.zip +*.dSYM + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +Pods/ + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + + + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.war +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + + +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# Intellij +*.iml +*.DS_Store +.classpath +*/target/ +log.dir_IS_UNDEFINED/ +log.dir_IS_UNDEFINED/* +**/.idea/* +run.sh +out/* +/out +*.ipr +*.iws +.metadata/ +.recommenders/ +*.springBeans +*.mvn/* +/.mvn +mvnw +mvnw.cmd + +*.map +.idea/ + +# Keystore files + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json +iOS/Podfile.lock +iOS/XChat.xcworkspace/contents.xcworkspacedata +xchat-web/src/main/resources/application-context-web-local.xml +#xchat-service/src/main/resources/generatorConfig.xml +#/xchat-service/src/main/resources/generatorConfig.xml + +#use eclipse will create this file,ignore it +.project +.settings/ +Servers/ + +.vscode/* \ No newline at end of file diff --git a/view/molistar/common/css/animate.min.css b/view/molistar/common/css/animate.min.css new file mode 100644 index 00000000..9c8b3359 --- /dev/null +++ b/view/molistar/common/css/animate.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8";/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2015 Daniel Eden +*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);visibility:visible}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);visibility:visible}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translateX(100%);transform:translateX(100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);visibility:visible}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInUp{0%{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);visibility:visible}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp} diff --git a/view/molistar/common/css/bootstrap-datetimepicker.min.css b/view/molistar/common/css/bootstrap-datetimepicker.min.css new file mode 100644 index 00000000..d0f3dff6 --- /dev/null +++ b/view/molistar/common/css/bootstrap-datetimepicker.min.css @@ -0,0 +1,9 @@ +/*! + * Datetimepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */.datetimepicker{padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datetimepicker-inline{width:220px}.datetimepicker.datetimepicker-rtl{direction:rtl}.datetimepicker.datetimepicker-rtl table tr td span{float:right}.datetimepicker-dropdown,.datetimepicker-dropdown-left{top:0;left:0}[class*=" datetimepicker-dropdown"]:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);position:absolute}[class*=" datetimepicker-dropdown"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute}[class*=" datetimepicker-dropdown-top"]:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);border-bottom:0}[class*=" datetimepicker-dropdown-top"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;border-bottom:0}.datetimepicker-dropdown-bottom-left:before{top:-7px;right:6px}.datetimepicker-dropdown-bottom-left:after{top:-6px;right:7px}.datetimepicker-dropdown-bottom-right:before{top:-7px;left:6px}.datetimepicker-dropdown-bottom-right:after{top:-6px;left:7px}.datetimepicker-dropdown-top-left:before{bottom:-7px;right:6px}.datetimepicker-dropdown-top-left:after{bottom:-6px;right:7px}.datetimepicker-dropdown-top-right:before{bottom:-7px;left:6px}.datetimepicker-dropdown-top-right:after{bottom:-6px;left:7px}.datetimepicker>div{display:none}.datetimepicker.minutes div.datetimepicker-minutes{display:block}.datetimepicker.hours div.datetimepicker-hours{display:block}.datetimepicker.days div.datetimepicker-days{display:block}.datetimepicker.months div.datetimepicker-months{display:block}.datetimepicker.years div.datetimepicker-years{display:block}.datetimepicker table{margin:0}.datetimepicker td,.datetimepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}.table-striped .datetimepicker table tr td,.table-striped .datetimepicker table tr th{background-color:transparent}.datetimepicker table tr td.minute:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.hour:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.day:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.old,.datetimepicker table tr td.new{color:#999}.datetimepicker table tr td.disabled,.datetimepicker table tr td.disabled:hover{background:0;color:#999;cursor:default}.datetimepicker table tr td.today,.datetimepicker table tr td.today:hover,.datetimepicker table tr td.today.disabled,.datetimepicker table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(top,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a',endColorstr='#fdf59a',GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.datetimepicker table tr td.today:hover,.datetimepicker table tr td.today:hover:hover,.datetimepicker table tr td.today.disabled:hover,.datetimepicker table tr td.today.disabled:hover:hover,.datetimepicker table tr td.today:active,.datetimepicker table tr td.today:hover:active,.datetimepicker table tr td.today.disabled:active,.datetimepicker table tr td.today.disabled:hover:active,.datetimepicker table tr td.today.active,.datetimepicker table tr td.today:hover.active,.datetimepicker table tr td.today.disabled.active,.datetimepicker table tr td.today.disabled:hover.active,.datetimepicker table tr td.today.disabled,.datetimepicker table tr td.today:hover.disabled,.datetimepicker table tr td.today.disabled.disabled,.datetimepicker table tr td.today.disabled:hover.disabled,.datetimepicker table tr td.today[disabled],.datetimepicker table tr td.today:hover[disabled],.datetimepicker table tr td.today.disabled[disabled],.datetimepicker table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}.datetimepicker table tr td.today:active,.datetimepicker table tr td.today:hover:active,.datetimepicker table tr td.today.disabled:active,.datetimepicker table tr td.today.disabled:hover:active,.datetimepicker table tr td.today.active,.datetimepicker table tr td.today:hover.active,.datetimepicker table tr td.today.disabled.active,.datetimepicker table tr td.today.disabled:hover.active{background-color:#fbf069}.datetimepicker table tr td.active,.datetimepicker table tr td.active:hover,.datetimepicker table tr td.active.disabled,.datetimepicker table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datetimepicker table tr td.active:hover,.datetimepicker table tr td.active:hover:hover,.datetimepicker table tr td.active.disabled:hover,.datetimepicker table tr td.active.disabled:hover:hover,.datetimepicker table tr td.active:active,.datetimepicker table tr td.active:hover:active,.datetimepicker table tr td.active.disabled:active,.datetimepicker table tr td.active.disabled:hover:active,.datetimepicker table tr td.active.active,.datetimepicker table tr td.active:hover.active,.datetimepicker table tr td.active.disabled.active,.datetimepicker table tr td.active.disabled:hover.active,.datetimepicker table tr td.active.disabled,.datetimepicker table tr td.active:hover.disabled,.datetimepicker table tr td.active.disabled.disabled,.datetimepicker table tr td.active.disabled:hover.disabled,.datetimepicker table tr td.active[disabled],.datetimepicker table tr td.active:hover[disabled],.datetimepicker table tr td.active.disabled[disabled],.datetimepicker table tr td.active.disabled:hover[disabled]{background-color:#04c}.datetimepicker table tr td.active:active,.datetimepicker table tr td.active:hover:active,.datetimepicker table tr td.active.disabled:active,.datetimepicker table tr td.active.disabled:hover:active,.datetimepicker table tr td.active.active,.datetimepicker table tr td.active:hover.active,.datetimepicker table tr td.active.disabled.active,.datetimepicker table tr td.active.disabled:hover.active{background-color:#039}.datetimepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datetimepicker .datetimepicker-hours span{height:26px;line-height:26px}.datetimepicker .datetimepicker-hours table tr td span.hour_am,.datetimepicker .datetimepicker-hours table tr td span.hour_pm{width:14.6%}.datetimepicker .datetimepicker-hours fieldset legend,.datetimepicker .datetimepicker-minutes fieldset legend{margin-bottom:inherit;line-height:30px}.datetimepicker .datetimepicker-minutes span{height:26px;line-height:26px}.datetimepicker table tr td span:hover{background:#eee}.datetimepicker table tr td span.disabled,.datetimepicker table tr td span.disabled:hover{background:0;color:#999;cursor:default}.datetimepicker table tr td span.active,.datetimepicker table tr td span.active:hover,.datetimepicker table tr td span.active.disabled,.datetimepicker table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datetimepicker table tr td span.active:hover,.datetimepicker table tr td span.active:hover:hover,.datetimepicker table tr td span.active.disabled:hover,.datetimepicker table tr td span.active.disabled:hover:hover,.datetimepicker table tr td span.active:active,.datetimepicker table tr td span.active:hover:active,.datetimepicker table tr td span.active.disabled:active,.datetimepicker table tr td span.active.disabled:hover:active,.datetimepicker table tr td span.active.active,.datetimepicker table tr td span.active:hover.active,.datetimepicker table tr td span.active.disabled.active,.datetimepicker table tr td span.active.disabled:hover.active,.datetimepicker table tr td span.active.disabled,.datetimepicker table tr td span.active:hover.disabled,.datetimepicker table tr td span.active.disabled.disabled,.datetimepicker table tr td span.active.disabled:hover.disabled,.datetimepicker table tr td span.active[disabled],.datetimepicker table tr td span.active:hover[disabled],.datetimepicker table tr td span.active.disabled[disabled],.datetimepicker table tr td span.active.disabled:hover[disabled]{background-color:#04c}.datetimepicker table tr td span.active:active,.datetimepicker table tr td span.active:hover:active,.datetimepicker table tr td span.active.disabled:active,.datetimepicker table tr td span.active.disabled:hover:active,.datetimepicker table tr td span.active.active,.datetimepicker table tr td span.active:hover.active,.datetimepicker table tr td span.active.disabled.active,.datetimepicker table tr td span.active.disabled:hover.active{background-color:#039}.datetimepicker table tr td span.old{color:#999}.datetimepicker th.switch{width:145px}.datetimepicker th span.glyphicon{pointer-events:none}.datetimepicker thead tr:first-child th,.datetimepicker tfoot th{cursor:pointer}.datetimepicker thead tr:first-child th:hover,.datetimepicker tfoot th:hover{background:#eee}.input-append.date .add-on i,.input-prepend.date .add-on i,.input-group.date .input-group-addon span{cursor:pointer;width:14px;height:14px} \ No newline at end of file diff --git a/view/molistar/common/css/bootstrap-table.min.css b/view/molistar/common/css/bootstrap-table.min.css new file mode 100644 index 00000000..770b6728 --- /dev/null +++ b/view/molistar/common/css/bootstrap-table.min.css @@ -0,0 +1 @@ +.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child:not([data-not-first-th]){border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-pagination:after,.fixed-table-toolbar:after{content:"";display:block;clear:both}.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#FFF} \ No newline at end of file diff --git a/view/molistar/common/css/bootstrap.min.css b/view/molistar/common/css/bootstrap.min.css new file mode 100644 index 00000000..ed3905e0 --- /dev/null +++ b/view/molistar/common/css/bootstrap.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) + *//*! 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:700}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 silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}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{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!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^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{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 td,.table-bordered th{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:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro: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}:after,:before{-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}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>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,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,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,.h5,.h6,h4,h5,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:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{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}dd,dt{line-height:1.42857143}dt{font-weight:700}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[data-original-title],abbr[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 ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer: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 .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer: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:700;-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-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-md-1,.col-md-10,.col-md-11,.col-md-12,.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-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{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-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{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-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{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-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{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>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{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>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{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>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{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>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{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:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{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=checkbox]:focus,input[type=radio]: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-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.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],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio 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}select[multiple].input-sm,textarea.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 select[multiple].form-control,.form-group-sm textarea.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}select[multiple].input-lg,textarea.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 select[multiple].form-control,.form-group-lg textarea.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}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-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 .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-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 .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-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 .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{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:400;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.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{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.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{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.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{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.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{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.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{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.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{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.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{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.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{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.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{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.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{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.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{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.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{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.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;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:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{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=button].btn-block,input[type=reset].btn-block,input[type=submit].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}.dropdown,.dropup{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:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{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-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{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=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{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}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.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}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn: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:400;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=checkbox],.input-group-addon input[type=radio]{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-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){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:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{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:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{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:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{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:focus,.nav-tabs>li.active>a:hover{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:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-pills>li.active>a:hover{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:focus,.nav-tabs-justified>.active>a:hover{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:focus,.nav-tabs-justified>.active>a:hover{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-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{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-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{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:focus,.navbar-brand:hover{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 .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{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 .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{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:focus,.navbar-default .navbar-brand:hover{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:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{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:focus,.navbar-default .navbar-nav>.open>a:hover{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:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{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:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{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:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{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:focus,.navbar-inverse .navbar-nav>.open>a:hover{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:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{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:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{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:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{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:focus,.pager li>a:hover{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:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{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]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;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-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{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 a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{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:700}.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-bar-striped,.progress-striped .progress-bar{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-bar.active,.progress.active .progress-bar{-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-body,.media-left,.media-right{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:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{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:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .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:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{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:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{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:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{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:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{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>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.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>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody: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:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.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 td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.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>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{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 embed,.embed-responsive iframe,.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:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;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:400;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:400;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>a>img,.carousel-inner>.item>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.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{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:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{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-next,.carousel-control .icon-prev{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}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row: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-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-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}td.visible-xs,th.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}td.visible-sm,th.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}td.visible-md,th.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}td.visible-lg,th.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}td.visible-print,th.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.min.css.map */ \ No newline at end of file diff --git a/view/molistar/common/css/datetime.min.css b/view/molistar/common/css/datetime.min.css new file mode 100644 index 00000000..48bc4511 --- /dev/null +++ b/view/molistar/common/css/datetime.min.css @@ -0,0 +1 @@ +*{padding:0;margin:0}body{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#000;font-size:14px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;overflow-y:auto}.ui-datetime{width:100%;background:#fff}.ui-datetime .ui-datetime-item ul{list-style:none;margin:0;padding:0;text-align:center;min-height:120px;width:80px;overflow:hidden}.ui-datetime .ui-datetime-item ul li{height:40px;line-height:40px;color:#898c90;font-size:15px}.ui-datetime .ui-datetime-item ul li.selected{color:#292a2b;font-size:17px}.ui-datetime .ui-datetime-line{top:40%}.ui-datetime,.ui-load{width:100%}.ui-datetime .ui-datetime-wrap{width:100%;height:120px;background:#fff;position:relative;text-align:center}.ui-datetime .ui-datetime-line,.ui-datetime-wrap .ui-datetime-line{height:40px;border-top:1px solid #D6DDE7;border-bottom:1px solid #D6DDE7;width:100%;position:absolute}.ui-datetime .ui-datetime-item{margin:0;padding:0 3%;display:inline-block;vertical-align:top;text-align:center;height:120px;overflow:hidden} \ No newline at end of file diff --git a/view/molistar/common/css/flex.css b/view/molistar/common/css/flex.css new file mode 100644 index 00000000..3b31a46a --- /dev/null +++ b/view/molistar/common/css/flex.css @@ -0,0 +1 @@ +/* No CSS */ \ No newline at end of file diff --git a/view/molistar/common/css/flex.scss b/view/molistar/common/css/flex.scss new file mode 100644 index 00000000..391f539a --- /dev/null +++ b/view/molistar/common/css/flex.scss @@ -0,0 +1,107 @@ +@mixin flex() { + display: -webkit-flex; + display: flex; + // display: -webkit-box; + display: -moz-box; + // display: -ms-flexbox; +} + +@mixin flexv() { + -webkit-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +@mixin flex-1 { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +@mixin flex-wrap { + -webkit-flex-wrap: wrap; + -moz-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-line: multiple; +} + +@mixin flex-justify-start { + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-justify-content: flex-start; + justify-content: flex-start; +} + +@mixin flex-justify-end { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-justify-content: flex-end; + justify-content: flex-end; +} + +@mixin flex-justify-between { + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-justify-content: space-between; + justify-content: space-between; +} + +@mixin flex-justify-around { + -webkit-box-pack: justify; + -webkit-justify-content: space-around; + -ms-justify-content: space-around; + justify-content: space-around; +} + +@mixin flex-justify-center { + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; +} + +@mixin flex-align-start { + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-align-items: flex-start; + align-items: flex-start; +} + +@mixin flex-align-end { + -webkit-box-align: end; + -webkit-align-items: flex-end; + -ms-align-items: flex-end; + align-items: flex-end; +} + +@mixin flex-align-baseline { + -webkit-box-align: baseline; + -webkit-align-items: baseline; + -ms-align-items: baseline; + align-items: baseline; +} + +@mixin flex-align-stretch { + -webkit-box-align: stretch; + -webkit-align-items: stretch; + -ms-align-items: stretch; + align-items: stretch; +} + +@mixin flex-align-center { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-align-items: center; + align-items: center; +} + +@mixin flex-order($num) { + box-order: $num; + -webkit-box-order: $num; + -moz-box-order: $num; + order: $num; + -webkit-order: $num; +} + diff --git a/view/molistar/common/css/mescroll.min.css b/view/molistar/common/css/mescroll.min.css new file mode 100644 index 00000000..cbd43a40 --- /dev/null +++ b/view/molistar/common/css/mescroll.min.css @@ -0,0 +1,16 @@ +/* + * mescroll -- 精致的下拉刷新和上拉加载js框架 ( a great JS framework for pull-refresh and pull-up-loading ) + * version 1.3.2 + * 2018-01-01 + * author: wenju < mescroll@qq.com > 文举 + * + * 官网: http://www.mescroll.com + * 文档: https://github.com/mescroll/mescroll.git + * 动态: https://github.com/mescroll/mescroll-versions + * 问答:http://www.mescroll.com/qa.html + * issues: https://github.com/mescroll/mescroll/issues + * QQ交流群: 633126761 + * + * 温馨提示: mescroll唯一的全局样式: html,body{height:100%},用于固定body的高度满屏; 如果影响到您原本的项目样式,可自行删除 + */ +html,body{height:100%}body{-webkit-overflow-scrolling:touch}.mescroll{width:100%;height:100%;overflow-y:scroll}.mescroll-hardware{-webkit-transform:translateZ(0);-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden;-webkit-perspective:1000}.mescroll-downwarp{position:relative;width:100%;height:0;overflow:hidden;text-align:center}.mescroll-downwarp-reset{-webkit-transition:height 300ms;transition:height 300ms}.mescroll-downwarp .downwarp-content{position:absolute;left:0;bottom:0;width:100%;min-height:30px;padding:10px 0}.mescroll-upwarp{min-height:30px;padding:15px 0;text-align:center;visibility:hidden}.mescroll-downwarp .downwarp-tip,.mescroll-upwarp .upwarp-tip,.mescroll-upwarp .upwarp-nodata{display:inline-block;font-size:12px;color:gray;vertical-align:middle}.mescroll-downwarp .downwarp-progress,.mescroll-upwarp .upwarp-progress{display:inline-block;width:16px;height:16px;border-radius:50%;border:1px solid gray;margin-right:8px;border-bottom-color:transparent;vertical-align:middle}.mescroll-rotate{-webkit-animation:mescrollRotate .6s linear infinite;animation:mescrollRotate .6s linear infinite}@-webkit-keyframes mescrollRotate{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes mescrollRotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.mescroll-empty{width:100%;padding-top:20px;text-align:center}.mescroll-empty .empty-icon{width:45%}.mescroll-empty .empty-tip{margin-top:6px;font-size:14px;color:gray}.mescroll-empty .empty-btn{max-width:50%;margin:20px auto;padding:10px;border:1px solid #65aadd;border-radius:6px;background-color:white;color:#65aadd}.mescroll-empty .empty-btn:active{opacity:.75}.mescroll-totop{z-index:9990;position:fixed;right:10px;bottom:30px;width:36px;height:36px;border-radius:50%;opacity:0}.mescroll-fade-in{-webkit-animation:mescrollFadeIn .5s linear forwards;animation:mescrollFadeIn .5s linear forwards}@-webkit-keyframes mescrollFadeIn{0%{opacity:0}100%{opacity:1}}@keyframes mescrollFadeIn{0%{opacity:0}100%{opacity:1}}.mescroll-fade-out{pointer-events:none;-webkit-animation:mescrollFadeOut .5s linear forwards;animation:mescrollFadeOut .5s linear forwards}@-webkit-keyframes mescrollFadeOut{0%{opacity:1}100%{opacity:0}}@keyframes mescrollFadeOut{0%{opacity:1}100%{opacity:0}}.mescroll-bar::-webkit-scrollbar-track{background-color:transparent}.mescroll-bar::-webkit-scrollbar{width:6px}.mescroll-bar::-webkit-scrollbar-thumb{border-radius:6px;background-color:#ccc}.mescroll-bar::-webkit-scrollbar-thumb:hover{background-color:#aaa} diff --git a/view/molistar/common/css/normalize.css b/view/molistar/common/css/normalize.css new file mode 100644 index 00000000..57f93c84 --- /dev/null +++ b/view/molistar/common/css/normalize.css @@ -0,0 +1,447 @@ +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, /* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} \ No newline at end of file diff --git a/view/molistar/common/css/reset.css b/view/molistar/common/css/reset.css new file mode 100644 index 00000000..affa98ad --- /dev/null +++ b/view/molistar/common/css/reset.css @@ -0,0 +1,144 @@ +/** + * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) + * http://cssreset.com + */ + html, body, div, span, applet, object, iframe, + h1, h2, h3, h4, h5, h6, p, blockquote, pre, + a, abbr, acronym, address, big, cite, code, + del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, + b, u, i, center, + dl, dt, dd, ol, ul, li, + fieldset, form, label, legend, + table, caption, tbody, tfoot, thead, tr, th, td, + article, aside, canvas, details, embed, + figure, figcaption, footer, header, + menu, nav, output, ruby, section, summary, + time, mark, audio, video, input { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font-weight: normal; + vertical-align: baseline; + } + + /* HTML5 display-role reset for older browsers */ + article, aside, details, figcaption, figure, + footer, header, menu, nav, section { + display: block; + } + + body { + line-height: 1; + } + + blockquote, q { + quotes: none; + } + + blockquote:before, blockquote:after, + q:before, q:after { + content: none; + } + + table { + border-collapse: collapse; + border-spacing: 0; + } + + /* custom */ + a { + color: #7e8c8d; + text-decoration: none; + -webkit-backface-visibility: hidden; + } + + li { + list-style: none; + } + + ::-webkit-scrollbar { + width: 5px; + height: 5px; + } + + ::-webkit-scrollbar-track-piece { + background-color: rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + } + + ::-webkit-scrollbar-thumb:vertical { + height: 5px; + background-color: rgba(125, 125, 125, 0.7); + -webkit-border-radius: 6px; + } + + ::-webkit-scrollbar-thumb:horizontal { + width: 5px; + background-color: rgba(125, 125, 125, 0.7); + -webkit-border-radius: 6px; + } + + html, body { + width: 100%; + } + + body { + -webkit-text-size-adjust: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } + + img{ + width: 100%; + vertical-align: top; + } + .mask,.share-mask { + position: fixed; + width: 100%; + left: 0; + bottom: 0; + display: flex; + height: 60px; + align-items: center; + background: rgba(0, 0, 0, 0.5); + justify-content: space-between; + padding: 0 8px; + box-sizing: border-box; + color:#fff; + display: none; } + + .mask .logo { + width: 40px; + } + + .mask .slogan { + color: #fff; + margin: 0 8px; + } + + #download { + border: 1px solid #fff; + color: #fff; + width: 80px; + text-align: center; + border-radius: 15px; + line-height: 30px; } + + #download a{ + color: #fff; } + + .share-mask{ + padding: 0 16px; + } + .share-mask .shareBtn{ + border-radius: 6px; + /*background: linear-gradient(to right,#fe95c0,#ff83b5);*/ + height: 30px; + line-height: 30px; + width: 80px; + text-align: center; + } + .singleTemplate{ + display: none; + } \ No newline at end of file diff --git a/view/molistar/common/css/swiper.min.css b/view/molistar/common/css/swiper.min.css new file mode 100644 index 00000000..b222bea4 --- /dev/null +++ b/view/molistar/common/css/swiper.min.css @@ -0,0 +1,15 @@ +/** + * Swiper 3.4.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * + * http://www.idangero.us/swiper/ + * + * Copyright 2017, Vladimir Kharlampidi + * The iDangero.us + * http://www.idangero.us/ + * + * Licensed under MIT + * + * Released on: March 10, 2017 + */ +.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate(0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-box-lines:multiple;-moz-box-lines:multiple;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex:0 0 auto;flex-shrink:0;width:100%;height:100%;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-transition-property:-webkit-transform,height;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform,height}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;-moz-background-size:27px 44px;-webkit-background-size:27px 44px;background-size:27px 44px;background-position:center;background-repeat:no-repeat}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-o-transform:translate(0,-50%);-ms-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;-moz-transform-origin:right top;-ms-transform-origin:right top;-o-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:rgba(255,255,255,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;-moz-perspective:1200px;-o-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-moz-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;-moz-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:50%;-webkit-background-size:100%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/view/molistar/common/fonts/DINCond-Medium.ttf b/view/molistar/common/fonts/DINCond-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..99cd7b4e80d610581105c19d8e075bea29dd6640 GIT binary patch literal 1480 zcmeHHJx>%-6g@MuyFiF2*hsR)OCVM(>@Kn_#25)52_zsNn%L>g?(9c0JG0rHP1wQ& zqp_edG!)tr5-mt92#pO^*jZRuDxn~1sfC3Z&wD$pAtw9+-^+XN+;h*p^Y+f&fd-%( z8!(W(vo@0Mvw{Sfw_Fc%6|;&<+7_V2xh9Kdy&42mLcdRcXVGaE3h%d$X+NYrShCIh zuao|dw4c(>lt@I}*cxq_Z?IJH*Nsym=%2Yo94}|`?4x}m?TWcx#Vl_FU8;m@R_uG< zXO{t^liZ7{SNDTw7zLs`^baCpoN7N1rEgQ;B(vQ*$))jyc6)39BUjqi83;J^qu>_O z#y*Y&wB9MY^q79cLqO-w->Oy|8WC`VmPBzxaE+&~RA5!)QW`BLh5rXMRz%k4E^BeX zni}W;#s_*wuMUij?yanJ<#LC5$M0-T)s3}#d3^oVgUdI6qPx{4hi|?<3xy>=z@2gVr06G2zf!nb>3U-DvGt`EE7E-42yN5B3xz3HEG=HS%jA z*7*y}5F6-6DZ~+K9)~ze&GQh)$ZyMziF7gFE_On!A+9ZiSVxam2(f{*=7%^!&2EUJ z)VvFEjQodmGMN-pj%C;U#DeLHWzTblM73c#<$B4^3#%#SJlC(6ysDUYeY@tGe%W(P zM-;r8@JqIGONnsGR?Vz6hiB%Orad>GShVxyMrGA5HXO5do}5gjGMVh?*m!p0yd#-R z4f96lN&W|uY6?ujfdv~i_())ZHFP1c43E>n5OEa^DjbwiXH{+F$ysP}pQFZQoa8;~ z1m=}3v$@RVGe#;*Mhg^(Ydn3G~9e)zizoPX(*Q vMIuM3FH%k-#hKyE^7}M~ah?+w=9aZd@%gP9U6fmXWz-0su%`bG)yIDTj1<)s literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/PingFang Bold.ttf b/view/molistar/common/fonts/PingFang Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7479ce12386ed4be464f9f0eb3d0a6ee75687152 GIT binary patch literal 2196 zcmd^A?Qc_67=O;aec4#|(zW+?;OuVc)}rgWwwK$kd#R(_7_hl+-7?m0bL+O!PTFmZ zVNik)L!yQ(At6zDi(rUiLR3aVh##gzgMw3H0)`l)eo#XEA`Xn7+WMT^PR$_U5AZan z_xJqHbIyHU&huO#0I&uQ0t-T*x7Ky(i-Y;doX0sjo{Y@gH@3PH@MOP%kqJDBnZ5GM=2AlF?M<*LP6v#CL3%nch8@c^g6id2@6f6zpAc1eBm456A;#Ap1nz z2Vdq9ra(nW9H)WFlw=`KADgjk7GCImvVbioer{MR95`I{xdL) zuHR#>V?=cTI*~Q=2A7UTO3fh~HDGZ>8=&+99g>uG4v>x2ppNu!{n zmk6_8kvYa*X6rE*C788paN=nywbku0sMK0B;SFkwwQ7YhaWW!SUUW%XQL8tzGI8AO ztvIzc^i<;rb7t$tUT<6azO5;^%N{DxkhAMdgMvPNgxgY6IW)R$V_&Gdk({e;ihg+K z>3tKaI8%7>bIa}be@Kjo?|q_cH2WgG>%1+g`mox{u&H0i$S*fe2=lk_YJolTF8dkl zf)41RH$lzmt7TJ~5TnJCSrVlcQ#sKhiF$*HGhtv1vO5Sw7y3m*WR>+S2+W+@qm$hv z8UJK-hLdV7(Z0g?b62m{jp=WmHZ`~3&L7Pu_VoAprOJGNZLoESE2=5e>-sEPn%j-s z;d!|m6JwX=zZLR)JtPyACIJ>~|m}50ob`566q%~DZ zCQdR*CLK;L`=f5DsZ%+(Fm=@FPnl%uC{vsckPGR+LORCoOYbLT>AP)%vAyfMX8s!9 zT3_Gqd(9Cp(lu^Vnpr;mW{=PJx-UJ@-#^^9Q>6$oq)Hfww|4EkQ0x+i*D|!3;hhmO zAFxZTSGKDV4A6|(FmnxzWR?S2i|LTV>-H$AC2DFGTFzlQ+#Wd&KEaWVMuEA7c^hnm~`FFOW6*Sqb&Ym)xMOu(-4NnHF9WAEx?@eBYEiLRYc9=wV zCrN0!%35t=jbyXeQ=e$>BBB^`oIf#A-1sN3>|IKKdoW3RG2G7kZLM4>OIRs@nPDi4 z1NSK^)7al-{c?6yx1t*IN(I=lvILYX;U!omK5|ZerxN?M64^(O61bY{egvyCYbC7% zHA>WC+F`92|14G@>&sy!yCfuh!Q-?WaHkU-at@ui+l#xMKv@^EPLQxR9r8bwA9vcrCp~V*qt{n_pa*^L&~b;GSJwZM?^ za0&i_AweWjA_g&02#|nL$wCOh2M-AWW)w+$Br_6`#6%t&%J#=a}|*VY11 z{Qz{ZKNjuHf93L@0Mc>P_x2+p|B*U}^6w~@_Yb8;Bq8VlkQq?UA6&aSNcV#&m@!UEW~J%TWuAO2$m5Mu^HViPUqGcEVM|R@psCOKWDJ{ zj8s!clcBkT|H`wZaJ}Eil#r9tDw)b6zFQKu&tkkobzx>jJvD7$C3E$@a#K7VB@aKm zuADq_XY|Fq4<;q8Et+Up7V1f}3}vT$>CZWG>)Qj0J(F0z;K>}PPtbN~g=In&$Qi>N z(Ukd!(PGZRxw%KCGOU$z8%!+2Vo*$?I|$qY5W-^<^{fb3#_Q9IZj#J!q-9XDnDxas z(Ocq^lPe>V9}dYodx%}ds7MokI?tfdb}!Pm^cI)b+FUaW*#+F9vf_<<^A4nn)Qpn9 zmRL2B2xt~3iKn9IK^sFY`mNZ&7>a*o&KmNK)9RU-#*3o|kBl%|m)BSK?NIGr)9ee; zpQ$FoT;uxr`UM-BYr8l8Tw)xU`)p}OPR&XrCu^dbA zWwJlah)-^N>=|ZH@cTN|l0Hc}(l@A*^bMlm1M~nNAs+rxcyLpP?EKx%&PIP!^SYbS zFpV#mYiZy=Wj1eqV~k(UF#C(rYA6kRo0Lr+Un_t1yDdv8 z^Nba;V1*+}y3hfkwYc5imncjtHU2+k<2^!+cEbu@B%tpBkM&J(dlS87W6#MmmcQh@W%biC+=)8iJ!d;M~ zl*Keu!HgW1AiFe&rJ#gJ4$F`q$YCwk(bgQ+;l1A>bYzJVnM&A`!xR+2nH;8}3ohrd z1S*L=how-6JwLlwhJ0TRYr#l%=dcb87sdcCFJ^K%iC70PJ)}L5@PYu$)0reM@lmGw# literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/PingFang Heavy.ttf b/view/molistar/common/fonts/PingFang Heavy.ttf new file mode 100644 index 0000000000000000000000000000000000000000..591ca52d52e2d98e1e098f03a8f545164fd2a75c GIT binary patch literal 2216 zcmd^Adu&rx82`?_eeBU~E#18>gwEb}YZ+r}yW87#@6nC%7=vxhZ5``eUuzroaxml} z3HXOD5)DRSs6!w|4GMgn)zqi4VY-;6EmY5RFl%{9)Sq-P?<3rosO`H|Lz+ z_dDM?=X;!UE)W37gZ)5*dGi)W_57#L=#V*$bvQB>n*62Y=sW%5$?jCvl@R~*d zDgi+EBx0ec=HQJl0F)O{-;+Q>y+EBsc>(3p#Mq8q3LZ89sEjCUMkgX6GEaSia;Yef zg?3GX2D(soqHG=yjm5Us9=(HdC+^{$oY=l2a~whdIWyuoDCoQ75GX-G7Kpe5WP8Me za3zOO`8gtqZb>BZ8Jsyos#SF z>=^VQBWf*2Z6Ee|kOLG@n}@@?5yzA-lL2^$&z?N?)2m;;a7~_z>S7_PZ2v!RDF|Q$ z7O1NjQ9Xd3r>(4kWs21*tHo{;++GhKd2Z?B8(Ee$n$4`iz;M*nH0@znGsiM)vBgr% zh#^#hDRY#*K-Xg~w3xLDaN%kywcX=2sMI9Olh$(Zo1_CBWTdENJg&1OCAx-AY!wBxqmnUu$AU z_SGJYYYSP;t z2%Ny_u`=0D^h+&zCHsY`L#IEcrcy6b`RO2eGaY<8y^Y?NK0u1o-?#R~_n0~+?+>-r z*7UYM>x>lWeeE1=OuyXk@yrP6{-L3s!C{pmOp!8EZ?v^9@xIPg-EYiAn^aJeIYZx| z>m-{BzyJ;4$6Q#MI!drgadcoZr09CQO0>hEw(B^inCCoRDGMq!XAyLA_`R$Fqc2)b zE}uUiK6kF`!vh`Tm-qWyTAmgLx*D3uQ|`u>Zr63EuDi*V6$N>kh^ELGNc}Le%-wkB zcq8BI-q6wb#_8$3bHo)4Qh9xS9eu+EP37gzfT6o z(ffK76?h)A1?MSB)A+_q`pf7We}A!1iAW1LL4&I0!zANtb;rf?@W%z+d|`U^OhF#x>#uE z?(SH8dNee(h_5rdoK-GYv?k`NGgmuZLZwrvtadKa`%`Pt$X^I)Cp0|?;}C~7{PBss z8MZ(Rw(B5<%ud)1-H75a4WlSe{RjOzob3W9rqYF96l!q33q-aWSr-UUiM`m0@}u`( Yyw;=V{IkYGpD_AT$;{!ud~s3!0RXyvyZ`_I literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/PingFang Light.ttf b/view/molistar/common/fonts/PingFang Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ba7d757e458976863219322e2fd9efe1078ca64f GIT binary patch literal 2208 zcmd^9du&rx82`?_ZSVSkwd-pgrR{CIc3~T9d)IcgbnF4+HQ1}d!X~y`w|25_OIIE` zLGT~{GJqjb6Ho{uCN9K8Ai@HPkMIfvHA_SYF$5Eln5dD53u)_jZwpAK!T&us=bYd7 zJKs6?JKuM{4+sFrU`k^F%XR@UcZ8C;$x`qOCZ7Aq`pM?7nJRZWO}P;4fFs=lqf5PNBg7XGwKY=MqW-v zw~m1VI#I4b*)kGM4g^Y1T}F91{=+{uI-btG4-SB$9sD|o=-XsBh(Sc|lDo)2enxDD z^F@S`Q#^_708lypm)Lat(AeJI3JqcBq)#m`iJMs#|{;Vgeduv!5Tr;hV@Rh&v=qXpt*Xr+8| zh1pqWqr&S#=H|}qRrm7wn*vsift=7+u?zIsL1syP1sjS7df2rM6zS`*oxfka^`%T7 z$(^|{=laoKw`?pqa*b(e()UJW9cwe?EL}k@%v=bOpQjHhcHP3K1zheZeUe@PtDu8_ z35-@#DVP#Mj23%sUe5c-R4wc9avD9WWzjKu;W`L79`G)53VIF%tk&mO3)dvM=+LSp z7(&Keq6ljii!eFwI&+d8X#v7O32 zi6u2{yeaP}0nUnQS|q%*Kc-`}LafSJ%lp)Az$& zP0vO2yEwL3+uU8|r|ImJIhES8IooZq>}8KiX&dEqY~J2hw&k)Uz-_n7WFUcx+%bBJ zb_+Jm0X@E&#TXBpHb{AGf-7q} z>y6qXR;n)V$eJT0eCQClv7yJ%8=)JkYRgSlS5?D>sUcZ{2db&~}M}!q8aOfYtCfnf^xJ&BEhk~XUYxTcZGbNlYoJT;#pM{;z z0S2W!rt!?u0u~|LP{3l4Vt(XxB*?EXU?skvjRma2%-_scW04dYD@+tH1#@A40n^Y9 z9~ZC)bsiS57)r?e0+xW4)D*B1bflwzRUjkr_Mwq@OLQb|>1wvL4#gAc&Vl%*;b>|W zAGEk#3*GKmV89);cwBC8waZ)Wam~_utTk)pZ-nqCG<^t0APy}M6=n-`K{HsO75O+M zAdSu+K(q;lQ6u#q^nJVPV~iRE{NT$FA!-m46O0id3xXI7D1Tr=q8JQ8h5cc&)^lGAVx|fIdtdIo zzw^82-gnPA_nr#`0G7ZmV8PVY<8YrmyW<`*$FPoUibuBmQS$mp0HVS=Fdo~s+4bk~ z762v+z;;K+BBQG3FT4pLKZW|>dLD?FOPtC|0p$9;rLs=C|Y>JRm%;zYZ zs2q>XYylO7QC@|zX)+QY`}J1wZj?LlA1zxFPfexwg9woGDjf$Idz0(|ImpOeau*rM z^oZ->Tn=IKWR%2m0GPBU1NF3P=|9i*g(x!p|GZ`3 zN%X)CW)3}?50LL+Eqa5V*C`d2QoBv4@_9Wo!|ITqh9Z3z5?r z3pE^dp&Uxnd)ecx7h|EpsFi~YS5qkMUY|jsTd75iI~FX0N4URL-eVIydV`raqhkz`IS4!yP#4)HJsScG@Ac(N zW|H*a;7~$cvub7Ri6u{WUbxUYtiJMYL1Xw%ZYz^Rgw&-xPPw#Q2#M5&1biC+p)@VcB#f7Xob+9%Zp6yBXH8yUoe^$vhGd9b{`07C7GgYu6TAV8f z1z6H2*fV%$=$@8>0Z&aG#>2t~7{MaB(t!by9PIVU=|1obDdZR-o83oak(VKG1k{hbG{m(3siC=KPe4|i1u{Qdn6 z`xoYdOJfsf%e?TgQ+BzQfRI_K+x{H;HB?;_+O+#5QbD2k!yP-b4m2?TUXv`>Q#>{4U)T zYBh}tLs=|1Pi9RW!&FE0E$o?pW-F>8jg*2DGoA%yD{P0mBt(u#nsUt7|DDk^@Kts_ z0@}>quw~He+APmP85pxzhHPUN%OMxDEwu{MKk~y_tidys$YKshw$qF(%SFa2y;>AA zungYI@+|J}!z`A8mB_MK4qCDzixtS%WU&VHWPKKMpdwS<6O-dDk;!pWPm^iQ*yzM` zJUli&9g8Fv4+KmuXQj(E>K}6jOm3%3sBj7uZs%gf2WpFl9%3?ogKn6BNf?I~h)BH& zU(hDZbZcM?MsaK!;%MU-YD_~6b&`)XBY-QoFs7B*x^NvouHXX7x{-B(fH&1CwN!qT cJuF`BQD*(S&cn84UST{2>Am=_FD~-G028=_qW}N^ literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/PingFang Regular.ttf b/view/molistar/common/fonts/PingFang Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f0e81aef5c50de917dc640bdd7a639ca24b7e1f3 GIT binary patch literal 2240 zcmd^AeQZ-z6hHU9eynS^wQFBH3T%CA*G@)1USD6kt;}s~OvYfV`+z!_tYckA=*HLz zOk)fh_)i`FB^U=7BZv|}Vu;3%NF?$l8pIG{LINg^kC2E8`j30{ytjvn%!L2FFZbTx z`Q7u*yXTyH&jSJgxv&jraI|&!gU3%j_aicgu=lPTN{swkyz4jsF<|dbrJosyPVGJg zKn()W%LkK*e#4Hh?EvZzP(M6~g!Vf1DayA|b`1_?##PO*5D3_z`7)}f&`_5?eC@;ltbd78r%VhV00Fbj!S_c(!!>z5^Af*Pv|&MgW~s z`n;Jn=tM@+nupqzIOjqRP(Zcy_L&C!qm|h#z~A`jo0C89{_f?kly^~GYD6Re{ir2UX-&if)+p0dl zW80FRPEz!-Z>(3|y}2bhfB(1ox~QvXbwPc6dLgg!P>$(~&E)#Uz2=E4c(j1a9-=>? zz0d+rN+&_fSSsYL)F8$k3r>L-?r)W0-2!j1u?&lWvB~Zr;3Xi1$Rq2y5wJ`+VwT+` z+11I8VMCY;^o-?<4qUp_)vdpDz`VSZXmZ0k5*5$r&HB7pwSP%3GoNQ&_JC_~bz_Nr z<3#amBjy5&Ui@vK`)azy-7rQ8 zWlIGUxq9nXXlkncEu*Wwo7q?vzZweO&y5y?3~~%3IwVZ+><9 zbUnFHX*271ow=k-H1?Ba6BFcC{OR(i`qXt5{ssPGzc)NtD>S%#3tHC}`{u?%i;AMb zK$Cdxm%c_~pVMY+b#hda^vm^y@ch+iZ~xkYMfZTFZ%9|;!nUFF(tJ7RW=g&#lE+d; zD2c^}l}zOlv9`U_dtf|IY{omEh2wy7ph;+jh zOku>$3Z`KJ*cGfowo$=q(7`GNYmo0%uo2JCn1W4c=Xt3bt8~b?VTXb#$cOh7Ok=(N zNWm&_lRO2hp^)$j)*!z`!A7u>4GK0vK6xRwemK>X7*07l8XWD()aGp>s!6e+*->>IeD HhnxCOf%%8D literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/PingFang-Bold.ttf b/view/molistar/common/fonts/PingFang-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7479ce12386ed4be464f9f0eb3d0a6ee75687152 GIT binary patch literal 2196 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 literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/PingFang-Heavy.ttf b/view/molistar/common/fonts/PingFang-Heavy.ttf new file mode 100644 index 0000000000000000000000000000000000000000..591ca52d52e2d98e1e098f03a8f545164fd2a75c GIT binary patch literal 2216 zcmd^Adu&rx82`?_eeBU~E#18>gwEb}YZ+r}yW87#@6nC%7=vxhZ5``eUuzroaxml} z3HXOD5)DRSs6!w|4GMgn)zqi4VY-;6EmY5RFl%{9)Sq-P?<3rosO`H|Lz+ z_dDM?=X;!UE)W37gZ)5*dGi)W_57#L=#V*$bvQB>n*62Y=sW%5$?jCvl@R~*d zDgi+EBx0ec=HQJl0F)O{-;+Q>y+EBsc>(3p#Mq8q3LZ89sEjCUMkgX6GEaSia;Yef zg?3GX2D(soqHG=yjm5Us9=(HdC+^{$oY=l2a~whdIWyuoDCoQ75GX-G7Kpe5WP8Me za3zOO`8gtqZb>BZ8Jsyos#SF z>=^VQBWf*2Z6Ee|kOLG@n}@@?5yzA-lL2^$&z?N?)2m;;a7~_z>S7_PZ2v!RDF|Q$ z7O1NjQ9Xd3r>(4kWs21*tHo{;++GhKd2Z?B8(Ee$n$4`iz;M*nH0@znGsiM)vBgr% zh#^#hDRY#*K-Xg~w3xLDaN%kywcX=2sMI9Olh$(Zo1_CBWTdENJg&1OCAx-AY!wBxqmnUu$AU z_SGJYYYSP;t z2%Ny_u`=0D^h+&zCHsY`L#IEcrcy6b`RO2eGaY<8y^Y?NK0u1o-?#R~_n0~+?+>-r z*7UYM>x>lWeeE1=OuyXk@yrP6{-L3s!C{pmOp!8EZ?v^9@xIPg-EYiAn^aJeIYZx| z>m-{BzyJ;4$6Q#MI!drgadcoZr09CQO0>hEw(B^inCCoRDGMq!XAyLA_`R$Fqc2)b zE}uUiK6kF`!vh`Tm-qWyTAmgLx*D3uQ|`u>Zr63EuDi*V6$N>kh^ELGNc}Le%-wkB zcq8BI-q6wb#_8$3bHo)4Qh9xS9eu+EP37gzfT6o z(ffK76?h)A1?MSB)A+_q`pf7We}A!1iAW1LL4&I0!zANtb;rf?@W%z+d|`U^OhF#x>#uE z?(SH8dNee(h_5rdoK-GYv?k`NGgmuZLZwrvtadKa`%`Pt$X^I)Cp0|?;}C~7{PBss z8MZ(Rw(B5<%ud)1-H75a4WlSe{RjOzob3W9rqYF96l!q33q-aWSr-UUiM`m0@}u`( Yyw;=V{IkYGpD_AT$;{!ud~s3!0RXyvyZ`_I literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/PingFang-Light.ttf b/view/molistar/common/fonts/PingFang-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ba7d757e458976863219322e2fd9efe1078ca64f GIT binary patch literal 2208 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 literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/PingFang-Regular.ttf b/view/molistar/common/fonts/PingFang-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f0e81aef5c50de917dc640bdd7a639ca24b7e1f3 GIT binary patch literal 2240 zcmd^AeQZ-z6hHU9eynS^wQFBH3T%CA*G@)1USD6kt;}s~OvYfV`+z!_tYckA=*HLz zOk)fh_)i`FB^U=7BZv|}Vu;3%NF?$l8pIG{LINg^kC2E8`j30{ytjvn%!L2FFZbTx z`Q7u*yXTyH&jSJgxv&jraI|&!gU3%j_aicgu=lPTN{swkyz4jsF<|dbrJosyPVGJg zKn()W%LkK*e#4Hh?EvZzP(M6~g!Vf1DayA|b`1_?##PO*5D3_z`7)}f&`_5?eC@;ltbd78r%VhV00Fbj!S_c(!!>z5^Af*Pv|&MgW~s z`n;Jn=tM@+nupqzIOjqRP(Zcy_L&C!qm|h#z~A`jo0C89{_f?kly^~GYD6Re{ir2UX-&if)+p0dl zW80FRPEz!-Z>(3|y}2bhfB(1ox~QvXbwPc6dLgg!P>$(~&E)#Uz2=E4c(j1a9-=>? zz0d+rN+&_fSSsYL)F8$k3r>L-?r)W0-2!j1u?&lWvB~Zr;3Xi1$Rq2y5wJ`+VwT+` z+11I8VMCY;^o-?<4qUp_)vdpDz`VSZXmZ0k5*5$r&HB7pwSP%3GoNQ&_JC_~bz_Nr z<3#amBjy5&Ui@vK`)azy-7rQ8 zWlIGUxq9nXXlkncEu*Wwo7q?vzZweO&y5y?3~~%3IwVZ+><9 zbUnFHX*271ow=k-H1?Ba6BFcC{OR(i`qXt5{ssPGzc)NtD>S%#3tHC}`{u?%i;AMb zK$Cdxm%c_~pVMY+b#hda^vm^y@ch+iZ~xkYMfZTFZ%9|;!nUFF(tJ7RW=g&#lE+d; zD2c^}l}zOlv9`U_dtf|IY{omEh2wy7ph;+jh zOku>$3Z`KJ*cGfowo$=q(7`GNYmo0%uo2JCn1W4c=Xt3bt8~b?VTXb#$cOh7Ok=(N zNWm&_lRO2hp^)$j)*!z`!A7u>4GK0vK6xRwemK>X7*07l8XWD()aGp>s!6e+*->>IeD HhnxCOf%%8D literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/SF-UI-Display-Black.ttf b/view/molistar/common/fonts/SF-UI-Display-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b7a8822717d9164b908a94d5172a84530bad56c6 GIT binary patch literal 5992 zcmeHLO>7-k6+X{D&yEu}KTQLa6fUI-O|YN;9pXe0wqsL^)QM^vk`)=xTt83q-pnvF z&(BY=h*$&=i^8H3kwPm4Q7Is{tPqPXSam_Ws#r!9Vue_Q1(hIt-@SA5o>Rw4TNW&M zPjBYjd(S;T-}%m+v85y;`{jmo%jl(*k@4@<-`3iefM@0JGDE&=I=}oTn z1iin+O_|L!z~6BpP9l>SQ93R?@>$%w@WltH@Mm;NWzPKnBPAfx1-wx2p4WTVARUyi zikv?DrNgD8$0o+7rzTH)`T279#QD<1__1e>miwM6eX%q#H939ye95kD_dNHnYx7g5 z=jTsP&)vCOnm;o=ck=wgbZ_ac6AMe{?%aIsSJJ!o;crT3M$Vlb9Xorj>)_dMoEtxJ zdU$km;mELxbKm{(&ruE52EW#U_pW~D;JJUu{(e)UcYpBK5QX>q?{7Vf6x_CT zwR-cW;pQ`{J6^NAVya10-q-f z89gay3b{v~mavd}f#mlKxh#j}CxzT6r{s1a_sf9%v5@yc{!<|jK>l+f@0VxfgF-$4 z`JaV6*ej){3i*%>mYsZ9ddr_@2lVVi)ECR_5y~Zbwp=UZE*U7_EaYyvR{m)r_sEIz z-wU}{zR-89kjwIXpXn;t>66vIZx!?Xa7cT* zsMeO$g)mEMUTd!A`PX;MC^L0djg3`CgNX?}K0G|PusVB|wx@Okn%vMva>lzz2;&g9|FVf$=8@G$C_ip^+WJRs+6+_)?sdcRynGRGI*L1CAy!fg1 z@-V8ZdhA~xZX_lsD5WZl5afpE>x@CWtzm@S8+p@9wMx=BX!vA7BZ_Dvjw}ZEZrsXL zcxgo;4P39NIMJzfleMy3*Rvtzp<2K?^u2WeZemB)x*F4vVHYCsYmI>Zk(ixAB-v)% z+#4Lmh`cmzn{f_bVcn~0+}k;(Du&Ti1v&}+Jd7i(24OYKy_)i(U<83DDG(T9jk1Qn zxkuIonn=DQ<;uXo)wrREI?zPC;DDvxF8qk2q8dyzX{2~^BWq;tr{Oy4g@m}`c!B@{ zHMWEsss$&kg@;zGhQKz3zIAj#Z|NG5XGZubT|LVf(Iw@}y zI2%S83Q!v|kikEAwRfdmpA?v}SpRK8dr=GVMZ*@;M~O_7z)2mE#TG2nE&+HNSJc9` zualfOcA%HWTVVk37(Bq$VKij0AXf;L<;xz&386A+YLM0znd~)3F9T}V43jx1)W|^) z|e2R5i~TZAgE)pt4O<*q0h$CGyq&tWCA zlHgkt4S7i-@ugyBYnW4#;+b5PP01xQBaOSp>=v#8G*|FGt7Hv372Xd*tkRYzEtxZS zU#{<=qdK(C!onE76+{-`9e4sB#$_1aIa!cZ#7PYs_Y`JFh1YTHczg_<_V>0;8_Z&7 z4)o1zY!)8SQP4{ zsYRd>A#R6RCJkAaS7F09v$?_3SsEB43EKM;c?wqBE4eUvA zcY8j5j4!&q>bUIisGgIPrcYKsasK2-3(>73UIi4`R{^99QL`IsX4U23o9sNq6C%4R z^y<(fFNd)==|IR@V&2rW2yVa^(ISo(;YYnv*ZSUoMicr(Q^9fyKLLEOKK2Y~KsS0A z2kY5UfAu+|6@oP@n70+M@)a{qV3$48&Ll&o8OE$#CPUEjj19+SR@wtjM5TgNhq=W@ z1C97$H0|@s=I>)y!}O!g-Lkb)%i@utjxqB7G;DDg+FFr?M3i=k9P)cMyHcTaIYIGouTb<5RMR-Inuh5B7ZInysPbHoMKk z%#&EUj0j>xz)q^eGf%y`$ul+Vuq?2B)MiuDM9jX{_+J1yLX5HkQyXO+I()L&jMmL5 z)R~vXu!+6Y>vasIvgyC7e0G{#5lbFg|KJLyv@_7qA6O6+SZ_j~yo_Kcp>`6mB32P4JBE@lVn?im)9UED}4aZINyuZ{E9}dCmLd zy*C-p0x7Vl(gmuJsMJXPk&37kAr@>Z7F|^Wgp^G;2zDqS!HQM7K?3ug`{NlWj%8XF zESS-}ckaFCo}cf0=e}oCfrt*$ZR(@3mDSPO_fP)jA!a_n?}i&X2@My1OjJ05--U*g zC0kq2q~dj~4>p3%#&Z4<^outzzSESBH~juz{*3Y8FrIE=;?OVp?h^G0j88Sge6xR; zHZi`8aVdyh2Y1MQ-{f)VY$miwqZnVoSVT@Jv)}gp2;+e0v%gE?EZ=&ECWxLnkM&bj z>K`tCK>fH+l51C()a2=}e7W2=aj7s-d-|#4<$=!>zEqf)nw&m&si4<3OV9oD z#{AT|`T29xbMM|O%)c-_cjnTpc-5o{BFPh;8)*0eDPyCsJZdc58pe$wfe*0!#mrN zGI3O0^&ZU;#oW!(>$=Lk$9xK!)8Mi8F``(*++dG9_jRL5Bnq#n8J_qme!R-pVT`m~ z1hXcM+=pH`Z{!jkqlS_Dfn>+XWjaE4j66VR=?xg&`v!q2aQXk5Z}p40k|@F}qU!f{_dKY`J0NA`O;*VB|jfPWe?Mm*`aa zuSV{tFAf|ua+$=y86ywS+Q5>L2kH30TSh(r`Ikl>g8XYEAEdJbe>CzTIy=~B3ccx>jwd!jZrJ}G9CB#>e$a;suC2t?{Pnt3KtnaT8)^s1|iVtq+m z_Om2#I&*R0?U)ceGb6^wt7G28gsfF6a|>&;Gi-UPGB#DIjX$pbi1O;<`jRnUQTClk zET&H6`k5OGKNF6~Q^%8`lin2ZMo+xm$aj;Pd7fMt9c{PURfkiox^XzV>*UhaYb!6V z%`UHr<(0Li`GpH&J(KJzZ%X5Cbw^N(ag=jpS*!lCbaRo%N;Q{hnAv?-d{;&=Guud| z3?(*f#OdA^pJ#s$Zog@^KDhnXnW|XZD~8bNh`JQ5OnM@V0~vIb7dMqo?ney~#_r8Z zD^Wo~DHVQ%AU7OWW*oHL>POhUk++>xiX@G_mdgxiMG@PGBaOj>+jleJudE8Bf$Mb< zCod??jaZ51jKojwT1Dblf@FR{)H8|0vmEx(5tdY5!`gPO`3Gs^M2?7Mv*y3-94xDf; z9JFD>2ev8nwWG`OmJAqq&Imst17rxaMdJ96D_u+DM(Ttjlwn<_NF4jX28OBaBL%sc zpwlzBg~`y*b2zGZj4wpkPJJelE~O3Ci;+ka=Vp%zH;++$M5IDz$}0t)^`i_02u2iS z@DET4VG#b4?K;lVqw#jNzOR-pqIwC zd=KDp@Bml((TKu=xx!FszU*$3hRGZhYULmZ^6+A}#perJ zF@{qo&D(K$b40XdJ@cXC;;`c52R2w;w+O4)R)746r+Xx*Mq@ONN3ft-O7IOxLSCYX zT&k+s0CR#;^6@}!Qcjr~N!%r7Z{g}ea}}?$g4VH9;MKs#D%*1K;GUxxlDCJ3*w&fB z?s0sph|0sO?*y#ZsDketEzlZbWDOnj6lTYWuQlv=vj492y)Cl^j(=zL?AgZe02KkP z6nQZ|oTZCZp(KG>0epDXL);>Myaj7Rrs`3tg6^T ztnFWOiLTN$TA>#e*2}mGTE=({xXhyh7cgE|mA6^tu+EI>&14l(JPD~qpb;T%i&;i3 zs?*D`;i}nO;c2brm`{Nub55gZSFQka7pswpW)|#BF=pI(mOX4>Pl~(U^Pk7~yxl8K z&<>B{IXa{IW9<{?&-~~hx;o+&K!N+ogOnj^?!rK=+8kV!or8FMWY>UR2t614s$g%@ zgOIkwd9$WQa09*=EyhtJ{HRyf)xI~N(S|;wDPTE;9}hmbKDzf?(2cg^;ClAdUwmF^ z`C!c|=5+h)U{$3GNNpkk>k94WauDXt^|*Ft07m8cW|UE z^I4K$C*$v9g&EI#J&YRo<**oF%suC!+cn}`H(h_$)xE>L=ECkLtMg7?>ZqpYz-ujK1bAkJx_i33C~9{B#VkTXVkaL7$JjrfaCV&E4i; zW|^sg5#)4nJ9RMs;-x z_2#89Y-2C$@u;z*D<4JGL!7!I5hOmBd;JL5*F51qWUksO*m>?3j+3Ld7OXCN=L&EK z1ZuZsna)22E4T}7#e4JEALH!#Yc1^LneD9q_0yR#vK>lrZGP( zFYLKuIbkbrE7hCh{%UPm)vcy9Cv9&ha}0d;cHeL?9JNOwXC{Wf&?J(6eI*jX*OqODO0k_}#F5E25#?w}^6Q@SAN| zN%Zg`EUE7r<_8*Hr@ofH`2gb^7=N`XEobP*e;mO0&lpcPp*Z%V{yRkd0^?_ze!5c_ zq8*GcVVw6u+rk}k|79Ng)=oq#G>Y*Rj74Di^5=ga_&vrR(c^DLVUj+4l_rQj!0Vr( zd|?PX7jU1*zX8o1eeZjNs(s(Zn2zuTA3=RDp3tJYZhiLiYeWz6DZTRVlSHLga(@w& zdzB~i*9+gnO>mx%erG7hb2JGJOJ^ugAH=;6UwnWH|CCLx$eRCuC`ZyAxqR~Y*r&!Poy9MH?c1mZ*9O1e-TKYTUpPMhH#!QM;`8QLUI({{-WquDokx*^ z+q$lpz#7dF#oV3zOS;OuCi~?GV??orxxuSh_vy@%NaSuS4J$r@AJ6i22qP`` zfzOkfjGm+mnVhG`$<5>fko;067ipNjp2;OTPj@qUfClLonS2EDuQGWM@^3TwC_O=c z$mC;?|B=Z<12xL+>FJW{D(q9D&C=&G{Q#XR{UDQ%K>lea4?_NRCLg8qr9WlzF*-kR zB9n)XJQ$eG<)8NU=Kf5QYW8;%zA&NXHRs*{t7CcYHZljqdB9@7ax203r zSP@&R;*y(0p4GW5t?kY(jZmsNF+N@yb0#KawOn3Y-dvdDy{F1!Q|0RTKK6U8H&(V* zGY@6$!V1JnYz4NP*r9L}VTm-h9O+x}O%c|6V(v!2pVUm#Xm)h8-ELPbPP1Z%{^-8S z)#t9RKfk%Kwkg)uH&>UIXT??`*;U$T96BwVSNrbz; zA&>^H*F+e}Si4C&Nh$2EbM9$XYf+-bk?v5!hbKVgE=>s}M=j4BH2T z!!aT+iCZ&F;mh@{hQz&_V=O{!8Vg58uARDJfLX_FxT)m{D{w{;coYMH5w20vvYQ8F zouP^3ds40p4qgvif>8&Wh!-5t)Z2$2VUSgW6OCFip4`Y9ncJ~jL%om?&lsK{KtPQp zZe4WXgll1;6&o(FjbX1HU6R|`(^xZUtqgp5Pg$UcR%S6(pG@&{n5(&aITcg5FLsTCTsnD77%7C?Q zke~qGh=L6M!K;HSZTcj`jEnW(CbSiF5MNN%nC>MqqXbUMfLW};Qtje^r(s1b@7OX* z8OI*<;&9t_03HVqaHSiJC@h#O43*}~0mlhLrP7ojtu8XNR~@|^P`74Krl3$O1woL9 z6WT34U(kvnoLX_(4&$36qAhEQ3mY4U6(2v?gUxk|u!(8)eU5p$M}n$&@{Z#K85S1o zItSQ@9;-R*Fph5pkvVt=p1}GlmGNDqW!glXY@y?xf_9AfTE&WYj-hw|gZJh=IE&pm zlzZaaKsEs)SV8tI*(zI`Lg+Ye0j&T|JnJBKANQDULKjjU*ZpvQKRT{S3bbeO_rxf* z)wcqlrkWK*7$S;MRlUPmuF`XKmDcHbh4&h+g4QtJ1Tssg!YsyHiUB686uUEXdNVl) zsTIT&AZ~+MLM^J%3)sU}+En3bc1@v=kprWvQ8Y7GfVqv?Ad6-JER8W{+*!*W>R1!w zZq~f}7@sw3#TnY=Q9MQGRG)0V=lq!;9Yj|{yaFh2UpbHxM9tmksacbQt+KNakBjUY zu=8POgI{H=jd~E$J8|A@sS&Kh7o){EYJ~TCWn1mL4vV(pF2@zYZ-}^Bsy_M*Xu&pk z6bIL{r~cwY%8LuuY(TFopyg|793c+wk!~glGEG#ZT@MUM zbGn9_+uUsyG>6&gDk2CG0e6xQ&wT3nD$iK4L$g5lQI}0^6*1=^@xK7(2xF9FnCd8f z*zl7@XH-+CP;Xuu!#38k9giBjx^ge74&u}m2_W&g-0MeRf6Wu_L*}Zfg3)uoaGV^q z*}>Sdcdh_;fTva)mg)Rsu!6hLRJ=Ej!#$XFho$Fn@uI2tb z@W8Hi=G=SFz2}_oeCN#AWD(I}x=H;sy1F(}`^LBL{RuO_#_yUF*f9-RKOnMB<2Tc= z)A->-Xj0!*tPeE&&gM$?_5+NsVf>w@wB4a!zWXbT|AO&U6B9>%(SMt$Uts)nGsw1z zL$rnQC5#JxoiXE3EuxS z6^cXFFconhFT91B+xp)37S;N0VN3cx`HO;>_osD)oM=$)H4iBglz5T5>f6Kx<0}p<>?J2me z^Q!k~jwt4C6<*O}a=keoJz7AoeC@#?xm=>B%BrexPMOxrU&-eO=w$h4xqJxnZ*qAM@*i^fFr6#^IhT*nxq)N3 zJap*6z)UV5qbE*ObNM(8o_OxwT~Qkyn-Ftx>`Sp6I#n^}`y%lg%`6p(Ol5LIy4AHM zv9T;Jd1>t1oy)wqV@9Z{Sur+N9d*aYWvx<~UtFJ?<+CR%qmz}|*dF@3wAYq4mU9ag zZNd)4QeuaWmpYN~QelfMv0WM1$#oHJ_W0cOelMw+W%10&NW0yx+8k!piGqZg&BL6w(2iQClgtuR5O_bso8hgb7Y8P z<{F8Vfy9Q*DB1tSXV~8Tn|Jc9_iw&>wkp>5^C7T1qAo=%m99u5U-}(o#Yv={d0|5Y zk#oJ$ij`APN`x1}$xYjlDLZYpdLediW^Fr>B2FT=0^%`Dg`@#<05jY+vKwy}2l(wAaK2hgr zBKV$=tAm3tMlHdp15Nk~4ruD_!H+1+v%!JJtprbQM2*Ou#H%A;2#8kA(Vb42(F=_5j*En?eyuhNwyY9w|b0vXh0g21s4Y+#t$ z9zu{?F{(X6&w62s z1o*=WGS~;N_RqAblN>Wn*2hg~JM6%}u%a>DO=Lz1oRlH6Sc9d?#RX5Js#x4|WSlXM zJ?JIT4bKI5>^#7gUO23%*cg>!}AF2hEDx56)n9T_UVvN_~$uPj^XB4Nu-NJck9%QH-xo z67n*IO%ltnyhlb?EZ;&iB_5 zJzBFkVGQ3YJah35JPr#rs^B|Mi?j|uSws6hiP=%&YYjUNcK-fn^BEk)&KN2^{;eUZ z5FRWcdX^j&twRy!IBtPi0i1Z%h3^6G30=orM4Pzoh4V+5NID}Vyml?y3_*IbRhS~W2^Dmokfc!;h6y#RU+ z_*KE)xCbG9635M&8o^E2V&54@jqq-(tgCHrLZhv?%YMbM8^N!Z%8%{=E$D{ZesDf} z@-IHAtaxC}8s>Edw0u>KWB9=}(v2iVq^a_hGd&C~Tb*IJ%$c@<6Qjbt$zZOrkw7Eb z_NLpfbo>r>wNyRo*fm>wwKN_n@)#lRkHQv%q0SYvkP+o`xqEV49 zj(4!9EORf3v6Jh=!wNH=_qrH0@XK(bk1_Wo7uBv2=e+6sv#zckt~Ceeez-jE}pG{;nX89;}hEIOjP z>O#G7X$;%g%X&O&?5N7!sJie|XC#EgeYw|;!1F#*X9JH%hovq zTmin?ZCIw`PrwSULX+{{I1cudGX2+_u#;z|vi{e*Gh@on8pbcg6QdUg!_N2X$Q+}7 zit?KdcQwVpJW!`CfE17-Z-rIfCH3)Ul=+>FmpyBo0o$>QMPggEEz&14J9E7|&CX9} zX1!j4M8rb{szk*@1(8aNii#AWzLpon1L6t#KqVe{0x2q@5)wRM9zZJQJNM4b?z*n! zwmcxQtDQOb-gECc=R4myGd5X7be!%|H;t~YkCeW#_NzZ(=I8j`c6>XcLF;=&);auU zDs~d>?Lm{eZehKzQfqFlq;KtFd>i9$SEcO^zVSAX-@$mQiiv^OyYCTo3yd#R{dA{i zkajS>j&ZIQIyUZ*yT8n1-`C8qvr99EC}`_X>>@ePRRa z7bw>=XzfxD?&G;PF>_DfyWXTy*Yg-to-gU!a%7S(n0D_>n9+QX;!<$n(m^}cNV zRgm=xFXpcG{1`XEaX$Q=Ba7E)0y8X~qa1w__bz<#0V@1cI+iiY3;)j_3y5?9FXTJ- zV$UX|6ZCna=~IuLvQ9rTUYeSmxcJ%6vTg&YaHoe$0B*8lRk)n!aY~wVmAg zcW*CDPA@D>PtCu2-&%NLYX0)I#i<_aCl?o&ufF=+3$Ibn=D&VwJuz~1c64m^YS)R` zC$E++P8UY2i$fzC{ z%UvMtL?(CB7|mpIj!x5^Ozr`a-^}DZ4bgWqxtFfck21NB`svr1d<^pMGPxh}A2Rtk zouPL!c>waenLOA-)=(y&q`|zAPfh2Ae_axZQ4I+@%@r+a^v$;Tl7CX@Ri|1pz~)0N)8XYv4D z={ujvgU5FJp3LNvbarSqlTXpW(B?1ii_+-WgqVw>niR`{QxtQxnuxthHBCe;6B%zy zx46C}HkZY9FNtb)^QLsYy5BJ+^xUi%8!L{w^KuvEFY;AvPC zi#v{tQpT|jy*S+VT!6>U16=6^!wL)L3PYv&a!5O2s8pB|q}54g_Nw;F4z+TI$rKc- zryvO8a6_lg{RO2M!l)gmjWE75EE=+$c+hdsthoK)3|7}A!YZcJ4{G&vp9Ga?6c6AD zNOKh7TO$d1nF4aCsAg-J6BLt26{=E7i5f}VC1$sAb)mVAms&xa*eURm;9-@|vZ+Zo zm4-)k@(%vWE7360@Vk*AjNTzaO0z4nLhw z;aEB&DRlU_j_3k-u>=%Ya#Yj~g_z^`1!e{C;#C*^`?$w=y%EsZ!u24$Kgt~ECI#v< z_~T-P8tPkwO_S9kJPhH*h|1#8G?x+a8m-b(3iB0Q1+8Gb0c;kKi5ZMH6%$NUDNbhw zwMTLoQcLhDfZqnQ1UxCzGdROhv#G+gUp*burew|~+qEj}OWrXO4HUrz~?XiLjIF!@~+Qp7**KRq#u3Vhv;NNiM2gBhGo#`Da~SJ6vlH z&i!zC?&PJ;`oUQ);?J>udKy;iuw{6zd8zT${qlp?BU|mP3sc(>Y{kGS1Uj1Mj9Y?u z83$%N*OtzZ+0#+cSk(wJTE>c}I(IXRg!?(y1owHC7=6uK9`X6@5naa|KP_w6tvTPa zpr0hXrgNyd&DCaO<|rqv!GjPUa3%S$%w5k{amI=rngzO!T5M`4k2wa3e+)237^5V^ zRD0<|ho3AuqO$5j?Qv-g8`#TwJgRh5<$hFM_^C4zK;pjKZb#sJ%@eLe=Bmkpndf?8 zKiO+@g3)E`oB^(Yn%ZqxrsI#n3a&zv@%A{5_LMUH*PPJFGgDdr>)n|#BYRFafy)y^JL+C>kh-cdJ#P1Cr_j@ulaZ|_n6Py;1ky^ zSAaoY_d%(c#{4k6Fnz^v!eriLsy)V|<=U{Sl}(v-+V)CjAGr6n-gpf{Ei_tnrZxGk zkh@SFDCiEN^TAj-m^JS#ItQF1T?sMt8_?nRNSQU4SC537yc-2eap literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/SF-UI-Display-Regular.ttf b/view/molistar/common/fonts/SF-UI-Display-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..174597270184962169cd86901c6d8058fe3e918e GIT binary patch literal 6024 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 Z6aCI?LWEM-^c&} literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/SF-UI-Display-Semibold.ttf b/view/molistar/common/fonts/SF-UI-Display-Semibold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ffee101ddc90bc7826433d1f8566fe6561891063 GIT binary patch literal 6040 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 literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/SF-UI-Display-Ultralight.ttf b/view/molistar/common/fonts/SF-UI-Display-Ultralight.ttf new file mode 100644 index 0000000000000000000000000000000000000000..17453de62d7eb838e5d2b462840c44597b3c5afb GIT binary patch literal 6068 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/view/molistar/common/fonts/glyphicons-halflings-regular.ttf b/view/molistar/common/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/view/molistar/common/fonts/glyphicons-halflings-regular.woff2 b/view/molistar/common/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/view/molistar/common/images/logo.png b/view/molistar/common/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f51a3a136f205a59c3fbdfb79ad1e0d8ab84579d GIT binary patch literal 32933 zcmWhzcRUpCA3x`CM()na?(WP`Axh>shcgngM+gxqGcz2AJHnmpL`adnvW1Y9J(BS? zGqbYS{rdg!{P8^hJmd9#zdrBx=Xn$L^)# zrYVutl$_4XZ&MfblN53TrQ<(JQZuD{p5k9XiD{s;OkUJZP)IG5gl0-wDD(CM-@XC^XvPabCkNV%dXk8 zAM@u0J?FD)e-}3Px@Y%4{-6}}UG^_gf{Q5cyD4v4Deu}SRb!ON<-^VGwUzC?l*Y@! zx#NZPjn0{i>fwvr?-wcUl-}u+r9ZnP%V&f0hf^#2#5zh@|9S5MrDOVh=r^Tm=<;1V zrDfu*|G%S#@$$qj| zpndW*z4>x>^E|PUQa5^5_~UeT_0P)o0kM)Yu<&>6_eJmg<@)a4@WLLcmhyG%ys+z{ zWBQA9TWI`98)Z*ym(clx}v|F~xOa&&R`$J|Nz zAf<8iylvuaVDYkc^l0hN--)H2`r(U?$+Pdj&WGmC##SjCyW7Ka$Gx*B4WnlhYm||N z)AGK{f!Xt|-SzRslgZ!5>$``ayDtm-DC5hARf8AvoBP!x$F1WRBTGkFYEymyz$;rV zjH;2}ufDhQB_ond5q9XJ^_QQt3;igX9hE=gq*s1EjRrkWU_9USjgSA6_=57l>d^*z z@jGPl-SOo`1Mi+d{P&~p3d!G**($$kAEgv#s82ty=v>groPaF^Pb>=mu7GUR4I>y_7`C(Dng;4NgDe^vF)7-qAE>c0uY(N8HW37`S0yj5(U_Mpe zBqjQ{Wb3*_Ib?mU^wYwwq^2e=&uK!{g`Y(qT;ucC^D)2CwG9TyByDhJJYzB~%hmb$ zbpX`FDT&3Om8@iHQ-^y$7%e!hqW{={vMOLcj}XvxM+>v&b1Ov2)aKgMN0zMEw#MKc zk^UHX1TM7GFX(_ceL&cggcGDhM@*QfoOzq7pr0Xt>)!&P@HHBDcYe>gHI0#Qlz>2H z^Jn55-&9XX<^wZ*u&o@k3$osfX_cD6?)t`hLy2F^u@Gblp$VbwHLZtGDqehYo)dZR zXPW8*A5pZumhVqQxo`xpe|w7_4-LgmsG3kOeC+>qrHJGEIKR(+gO{LWW@+Q@TR6zM)<+P@lqe@fuOzvs$L~5&@5S+Z*#%sMV27Q;ls4*4Tjo1Szq* zfvTu5r#tPzs#EXRA#efHVgY#@zsBhln0j$(tbz=yGsaabH79(c%v%bqgs$I z?PsLe8Xnv5SD&wW^EyT`!w>QLoYitb=HYNAs0Xg=*F&9<03A;M>EeZDnL*CZ9*z*l z>wkhe+jhjd&CSQT+wE4+x-(Ppzc6zM-tH;%Yi;Yt+0A>-n~0Z$3ZO6{nw)(KfXV9? zd5D6Q#04QUvC4i#V>(5=4oIL#?e-%m{m0k|-N4x}o6{?2w@wIWG=y5LX!L}dG>4%HOtgZN(U**dZv$Pwas>Bp zG2G^z!-9?1?5|Rrd%_>tkNp)NHA4Wx z9d3a9Cqh+Gx{^;*XiYVv?TwHD@2B7Gk=_=9D&K5{PMn9!tOj?IiO&ojWv#FyRPtUn zW;Ha)CHs2Oovq0vGw`UvJj$qM)qDNXv8GX%t(L5m6fx;VT4jFV@x$_COxxEbzO>q2 zDh~|DWj1}-tHR@?YCOSq`KPLEB`pg#scJzTCwqII2BtgH&7?Eoj9Y$%IDiqB2q<}$ zHOrHi%`jZj_gVcg4zsoPSF5v!RMZCC0kphOEe7hRI*@=DG2$f49Y_Zv5Q|vy$@)r7 zOu5F{=yWRj{`IRaSH_1$sBlhjw}p(8(yLC_v>p)4lG1^3$2Ley(3?Hn(JBQxyg4d!!zNGDN+J$wLlbo#Achr#G zX8q#ptB*2+5B?h81BYTLozYyb3Kko|ya2EB-pK6N2Rm+}4jZ>WL9MjA^-5G5Z|H^& z7EWQ8?ml&T!=nyWvx8+D;7NpbQSmzxgPU?Fj_$DghgP9#4!zfF0h)QEH}{P^UVT~I z_4XCscv)(X{I}}DSS^g->y8|Og~CXE*l`y172O^UK15^ z;0I7Mn-7BKGe|;fvUYm={d>l&-lR7JU>-FQLI)#6|KeOZ#BP#3TiZtdbzY3cx`n+IVeL)}=>eXo(sJ(QQSp^Z}i0 z|HcFJ;9w))iSt%%%;xW7k8k$EvQh-UGGjuQ3i8z_Hbg@?ZQN>ltQQJ3PXC9T>3v^6 zvLpOTAa_gnnc;kMq+K1ib(Tc1?byss!s<1?*KR6H%;;Kp61l5S0R!?2P2ZU_aGk1u zC%nYR74Ne$kjCn*26Xe@%H5_ueQKov1b$C?3=J7ix1E)!uGY-fbT(t={3Bs4r8KNf zjF}JBVg>*H{*9IE3)g0Z+<)K7pF}v<4RiRFwLQe}#s=kfH}0`;MDE8sht0b)UG;bj zS^ebe{`2kx9YTPc1H&+RBA*YQHF(B4Y*jst&d%Vt+;Ns|D(lSM30SxHSGsohrXIs2 zCvDAh>H~|XTbhAAXh=D)!wNqgn>z%Ir0$+a{4{z&u4}b;ymbwg*LYiR-KljhNrg#` zmov&dk!_1EBs7wWD>8{CAUf-Y8RQ35j)ILWjC049d{)`%S~CD|5@P{2krA4$}r_UuK#j42}j> zB4M#Cup6xOy&fQcMYuYZ;xk% zEWec0lned03u#O4NQ^($*l#MtTGj$S2-3QG>HTS8>DnPctRTv)wP{@4bO?jm%3mAG zx-?(m-lxCQ2U0K6PHrCcLj*6aJ2m7zqJ~!X_cDgSwc{6L077=rNp4{nukOJ*2%2QE;m`If^uE;^-TPw0fvZVq-SB zpkft$i?V09V|q2t>~Ey1I-+3HCH4Ag+Fyt_j68P-?1NrHSkfn*eU%z$2*BdQqh=uD zHF?jM1qQWVXh2S)y7v2@0PBVC9o#bGYDLG^?yqs-Roe)GAJxE(ZzTfEjLAF{pj`;6EKP` z12L2N9l!WO1gKmO z>ynx+tkfG_g%Qg%x@Fl#&Avu%mVpf58|U)^$RJHhFIASyK31o*)yg++4RCE<%t1s_e~$mt5cp(d)DpOjLU{%^_m9> zx4!acW>S=c&jRYsgZ%yLtZs$`D_#Z%2OM8&m5QHeW(13d2`Yq0&{6RUA%RF<=^cne zLT}bVGYhl}e2<36^N?bu;F}_n1CNd|6J4M-fEh`qLc=u}6=-5l7}SIIPDGc~%E_T{ zXCn!gva&M5eFD-#lz=~{`C>u~(y}Wh^`pzm1~mryGJaV9=r8G(Khrjn*jwzYyX||l zwRaF@S*@K{U@4K#{Z8+bp)22`uW?3Cf^K8iT_G8FUpacSt2qdG@N1^>X<8vB2VN$8 z=ey0I26oH#a6JR-`&W%KJ3%5s!B>f0*B9Bz*vbJp-{&ZPen} zDn@FN=Xs6N^OU!dcI8&dxvvHIJ*vHDy*n50nm#D%eO~`J-8d9`3@L?aE_^m4CU5zH zeaNMlmEBJ<4*zk~1krK_-b!Lpf34bNRocsSbrRM?s90-S^X?=J<;^HV(!sCVO$ldJ zi4Ak2fo9KfnME*9cuXUskkg*6-0%+hS(6bp(_E@M*dYIEJeD!z$Qi#llEu5@7v?iMlm2AcdIeR4`Z&hhg>D8_NI^39FeNr42l^2*RS7wX=lF z6ZG8GQg)YW?wj0<)qZo^iCRrl?7~gWQe2FQv*m7=Zdabh)IUUAN)Svl6;KJ<-YyPf z6fvgj^!)fYj}cmLzG(Gc7QJ}zOzq7ZT2Tqx6j8f3`D@ql2&y-c@HKU5|Cfs0;}3-@ z%$c2nk`7uDsny!a7Eu@@PfoB_`){|(tF}GCKK%!une#=jwB^&&#kgGON2$quOe&!v z?cWz>$vvQtUpZD4tn&W)XG^6i`Oh`gYd^tAO;*=*I=f@Va~Awbw48RNnw{iBBD^L0 z)Reb^v6bL1QxMA_Fs7ATRG>rG2064ksl03{AA%8{h8NFr+01BhmSEh^-<5ofY^q}< zkv>;&fOj+-hsrNWTy?{6<~N<7wrsyu)4Uwp)YeD=wc+jC|2$3j{BBpbTH4l37bA`J}XgX@iOVDdeo&=MnxQPcCaT z07y3$hbR6;47VdsOj8lCV4ax6fWgCqh%R|TxD1{qFPn|o*p;SAC;eSsp2DJn&aiP& zVncO=SfapnT_qv-ng$l%727$BQp3tgioyC`Bb?3~QVnBGK7EqoJM-sm&G_E7R(!%G($ zvjMf#vL`(Dc3B8Js>qDLilHd(ka$10qsk-^sKqG`*rfP`uT>VqnHS&{MECXFkZuUG znl@Cdl-4*k?iJ@7TS$i&0TCm#p zL0}qB1HXsdof%m3P5%~fZPe3tC%=|$SR z4iUQ5`Uc;@l0Q8hqONkDWQ+TKxQP3fVD; zM40X=d{1|-^L~cu3w}PRA-+UV0SU zLv9>rg4I)H^jkye-+{2q{2-P@!MpwSIxQ95z1~TfcAMf>MwG`0I}YDP>F*llRtcF!o0C~vP12dIUV`VK&y~t*$9E20U^HsPtp+fcB(tf4utoxRqZKN6 zXKcO=SmyTKH_60wIXs8#axBZrKdO~+x3FY<L= zdc?3Shk>5x${CND3g#+xAcr{!VA7}mX16kc*&OIs$8w4feB0E4yf2pu2U%yYESRqS zWTiEiw{KYBER5Gr)iIu}x3H1sZ8!d8pSUol&^52GG~Y%t82fNVh5IQa6U!amdYKKl zK6}TNE`jI81OI_sg^f6QiOrp?eh%FokR4H<)Izjt zuQa?p4lc<5Xh7*%^s~3w*;U&bK%ca?B5mDrCu6nU6MYlJfoGo zlEhaHr{gsSCykP*p+#fFw^p=|+~qD>I49>3F+caS^?|f|etZh7h~55`hQ4j@QN$ME zYNN$OivD}HxMJw5;t?J-8bc5Z!V`*mJ}tMgE^wm!X33XTn}mHbfJXsiQwvsh0W# zE`v59mtH9QYv$v<)D*!dy5=}+iQS9y@KWY$w7Fwdb@3`urjAcPSyn8RML#N)C`p%m z-BGTk*#3MMn2(Ck%}+qErbIiGg{XwWUFj1TQG0(WWzuv31pb{`Q5nhr@m)4gX zr%&g3mU8t&gD!tGczp>s=xyv~$S=nHIrnpj=2z$Y`i;SEGMjC;gt^e!y4vCM&OdJ? zU|+;T4PxPLM2+BAAxF2ASSxn;Rj_4HJ93x9ScnO>QA{_DcJ~HoxBmK9d4GN2pI-^P z@8xWl&}s%!_o<>P2n#GP6%a__pGowje7zzcLnAW$MJx(aIqo*p^|XB;#)EUHy;!aN zE%w3Z!EU6MaH0l3JW7 zQk|@r)BDXou?vc+PyT{k`T{-Kr{_MYQ)-NTyY8+8!el7;E4?~?)d8)$h81BGsi-%b zIBj_As&Z zT=qQUjE$=O)iGfH%wJJ%{T(&E6z5eN-lq>r-HM}vwPKh3wHUp||MZ!l)kdk_nsCp- zp0+KNzjHSb15sB4=pFY~)i?gmygZw{ji|6G#t?Y%)jZ@?}(&Nng+H09wGFQd=@uJUewye@c8? zYqdkaQm8h+%u_RGEHRm-_r^K@2C|$(&`VoqP6M=JEOJ^O$nok}46$V*WJ{Wxz7j9d z-?V#^Ab4D-!k)kb7AS!R`!YgnXeaCC3eHl~y99nlz4i%t^D-FWKW4}4gfqG;-1#v( z;mhNg8aMP6pJEl)x_#L^C|6>IHG3Lv_4h{(*Si%of7%$Ex>6V#dm48-85wVdA;EZ5 zm}+hP?i1UFV%Ywx%$2~||L(oaJo20Vn|aiz5cB+S{wyeK<>aFOo+N~$9tjZh2q4|ylaAM* zx*o!_=g*a!%CqyvMH9w-Xcj<6@xN0apQv?E)F!uYCul`1vZ&bm-=D|%s<$dkwsiOC;w1*kj0?C{(d z)fa!WbD_TXd(zV6o^R2E%5U+i3S}SuIGJAOE_V9{y{f1je{wRJFB_%U*H6uy4f95@ zfx<5zu?fD+qgbcGZ(5~heFYG!VrqPSX6rqdd#++F;d_UF)St^<1!7xag#{Zp5N!>t!|;FEQhjCSukJ56nk}gTXbB6E zyBYOQr^}|nOCF_aE`(ueDVIDbTR}LGtb5z_3KL48muChpElWeJ^4WG>8>d=8_)A7W z(F|9w5iISSc>KziUYRgi%dqx{FWVjNGW@XW$tTddbK+<0bluKMZH33z%0HIjK2~S@69W}&Y7&qOU6P3_^uk((ec;1Zoy%T3F%J#xaufi_V_BgCbze^6h$Y1>Q7dEo;jx_#T*9j1=A!gsLiYMbF|;`dDxHLv)S zG}Nf|&fNeIUT&z?t$c98_{gURY6Aau_=El+u7PKaqAnu~A*5ZkHfp{fHK(MoN>G&8 zF11g?lbgCZ-eqa`!k=z`c~|*L@EOHH#klHxsO|Dwk2TLm0^M@9go`LM>ez2ZhZZv7dF3_H~B{B;4B0I=HVpuQq#RpSj-#|gN8WN4? zL&n%h5SjWoN#+36;dG^{iMM&s{)$8qNE?=T@p{I8?^E=gfk&j{0b6Jp-90q*P~P7z z6dTwNb4kT7;n^)f5}gyBbD+y+%VtGUky&M%2qT{`0#5H?m4|vyZeZ~k+M5FsH?;bJ zFu>ZXmMoc#ck3NI$v5ufYB)o8XZhPG>(y?^i`C$#g!_nDNX(b z-p>#qA{=cm5Z8&$hS?&q$GoQRGUV(oXMY8(i(x#E%ZMNh2gNV&_$s!YAi=~W@epa^ zTs+okSIb@+-)tMlRPA%V<-0b?)f?#7 znG0IL3SN8dkhO)FXF$Zyc<`QdgW7KL(K9CJOk|vL$KPBJ4=#D4$Iq02jR~VA5HzCU zo(7~UF|w%Z!OVK&!5tYOyk0oWXZi|Y?WQX7u7>H9yu8ah7IFK>2~u-oJA@@`Gz24^ zC9suxDx#+LWbGMRe^;A6 z9yX7sC^^Zs`lpMSUv);NxG3oLR7D`90#26VO>XGqjz0MOhV^RvXN~q>R7*l5T}VOc z^9Z27UZ_NVX^Qq;fJ1TaVt0ky`ILf(XY!EOPfh-a56uy6Q!mgy$J?M2hl%t#S5^i* zdonOvxkYUs*BZ5(Py9=$M9me!F2+&|@Mx+x3-lk0O>QULw)r|b%S@b3_z+=tzW?{l zn+Gp!9h(BX1*HS+z1?~R6K3B>{b=-OdZ()>W^5dYCMSN+JiPEz{eUFTkoD}kepZA`_EOG1v|b|?k!Gi_B_U2gE>h0{l# z7qiFibD#)La8sA~f zQal5_2hjWsfiKxx3t0p1E9#mpa|lY4xRV>Qzc9!!VQ(wHWH2%kwgr;ma5C~uG5}`t zNn=!fZsX0sjg6f7J|-O8$*q{*Q~c3?%AybzyF96aU%3S$^?%Kx9+fwG-dJJ>a2mqL zKdR{9=6c3aIqcphW)fv`H?jlSUPtoAlI7ChzAY?#Te!=b8VdFtx1U4k>LN8K1AXovk`EEjIZfXN%z5XM*SPiLC`@nYZDoXlJ+{cCdg>qAc2Vvb=rJOfd$>?Xk z)1VR|-0n;29eudr?q^iXx6r{Kc~_a%qE7*F)MGz<#^}=DZtT$O?=bRzgw`+fY#+}?c!?(~yDa>v8v-99ZfWIzJA<|4)R&Z)mjh^;wIea>Fs!9!^`Tpn z%N69aB`ce(!Q4&vnC2Hw{V`xfA1sBYb zgTli?l|f*ew{%DsAx{PjRAWiB!lbaDtD1|;A)5w1;h0Mu+M?bZQ5;SHOa|W?P_u=x z7m5c3y#gom?h!^?b^cQs{`{zk=OUGgc)B0_sG~Dlj6^D1h1-R)516!2v43dX#X=D= zV;wTmFC~WwvB8$~pnDsNG8NzmrczN@LFJZrNMNy%*mY9zpKDF;%(mnSmF|rEN#BK8 zPWY({qp~W_eLZ*tmZ?CzH<+dDVFbPMIk>@_%imV{{@wPb%{j_*D{bGUzm*pv{BMnWK+xIp||TRia^pc z!N5TFyOcziH7_cHq~D+CAi-HSAed10`@Tg0j>GV#3k^Y%#QN32@VltU4KYk;D4{y) zz8G26gS>l79YOlXlr~KT-_db9WOC&k;`$y*K$8*8%dVuPgP>Ba?aHvbCkOqGM{(YG z6zvzB$r0jiRY1NXqFI!bsS0q2cWC4OSE7h@A&q47*t#_dM>-BUnK!5;M}t z&(DX9EiD3~!%@8Ph=(VoZ;B!+UBP#a!JZtlIrnskX3LE5cZ)~=ac16OUDFVkc8n-p zD*E%Mx=Oe`o9wS5-~T*G=u=ZOP(JXA;ImT?((CD_-o(7mt6zC)pyOshjGrjnPe*LOFX-|!hW9;`Q1UzOE23%sVB<}1Z+&2Spfw>C{RQ&zIEuR6 zMx?LLB<&-=ElBt#+fqT1$eroNPr&(S<&L5NEi3|{Veb<^I}ODVmLTX*wb^lR0{xOO-r}7vC-_Qzu`Fk@IIYF68Tfl@VLM?Op&IqjAt|| zANoY1=p)^OD6}ZaES8;iyZd#=EU(}uHTYP=vp^P-jafy|37FE6t_ED`N`nmXWN!1M z%y(<0cKuGEN~3`;6&XvBvzm3Z%=#bp>;-~nGRQb&oy%LQa92dXrD$`#?*rW6UEzgH ze&HtKJq`j0F356ax{wQQo2^}tR~b|M=?HnyXP)7Na6HI(p#q7(_E?briQAf%2T1_@ zH`a8lGwr*#c`{DR*#_(qf>CJTyPkp2gKGu(pOU4a23VDw3C7#y)(mM1?7z*HsJI1( zc}vUi>S-|_Bk3Ei1ZTuN9ClR?k*NQPOUNVLXy`H8UX)M!-MW5u z9G?L5jo9()vCxk)#-FpZg{ATzJ{)mg>_kW{>W_X%y7RR5--N~&jcs%-_T8>N+B83# zQW^hBQBp~HwO8U>eDLaQ>Z@7Lg8S~I4fq48g5MybjIod7%`)2aF}tIE=>g|$_U|W)}KQZjEW946!2(kyW5I%TyJf2>y_K| z+I#VtL?aP+bqUqjWf%b^C_43j+4(39D<}iEpFsvJ(#uH=p&;&ZD7**rRxK{b7$I62 zK;=-8Xg=~0)>T6bdPM+I#b*oXWX`7N#$57|~(cxBdT?CfxFqmzly4GfTa zIN-GH8Ft`0eYu$V$V`0cj`~~iWE??Jl+CKoVv*Ad)rZqv`Apbf2Y#rrOun*G$^pOj z5K&QAL#l{;erw11!r{ofb;Haso~2#`uX()J4<_!CHmYTX;As{=BYzIPavm*!(iw6# zH5Ax?QI1pO+(K%r)3oh$h?#XM+Vsf67Xt%Dbb7?DgHT(wx=tb>L-zx?V}$AvK~s1w zaamCCHQFW8(J1GL6Vd+z*ERC+h;m2XaqUE>*$&1LCX5k|0ih${Ah0qJZ=4LcPD>Le zPWLzlnbDdRmKc!{0Xxq~a$9VeM_lzzLyuE+CC9LJHBDHrFq{Ym#2VBuIHvG##*9D& zOt5J&XIN{{x+HEckUG@Q$uGRE)jon5qu9=WeQ7CcuVXcO)Lb z*@ma4x)W*muT>h`H1j^F9vY?T8dNSv0|X?>7qS(qhx$f|VYb67u{}!6_svCE!MzfG z_2uOwdKd%)ULmyQTaDS9C~5=2MP5P>*Af*xvnuH6jNc%7@Uv@DgtRM1sP_-khc<-7 zJpLTim&zV)UPYPoJr?XUMD_gu*|x>cO)&Za8|@dqM>W+M_kc*OIVi`y_I>7+zXHJhsZc0wvhh{ukUMDt_${NZ5Ao5(M%qTM9z2 ze2^%pa!Bq#m@up9NJJQJs?}nJSX!Ai{7wbg%)N9GGnG$#d|K7Uuaj$5B6teoeCp2XN*$zwn8z@v$xEDN?go+MDH zJJH23D**d~2jtmG^BZ9VemIV#ldcljq<^}G3&GR2$xbmOtWz603S(GUh)#{(5EFCF zLNwSx0O!sUQsT321U7Y_Bpf#%RTO&tjgPzmi%ZrlfvB}*__QM)Ii`K8sY4e*{Nq0c zcScDBsv{Z>OP^zVBEgl7chM0$$H`K2rCTyD7`SI0HV|x za2JZbcRO^LYzF zL1Kbotdl33mA1KGgS^8`ta~2OwYiz+`QP%FeA;d5Tfg0*kF2<(PUpcdefORQj@Kj1 z)ch3yX*^zJUimZ9w$?eb*=m4VY#(urh5@IDgrmqAJ0=2tqMvr3_-++4>(6zX<)Y*i zrQi?X{z?4fR4`?pg?k%)7nL5#zR1t8`Rs=<{5$~MYIg;!v?RJ$rp2M)BL}W&DMa(r zk{IP)-HosU!99Nx+09+n)rbO`_Gfx-#ZswrBY>2u-Q5N!!|9Kf7dpkkx@2uv2Bo;T3-(nTP?Y%|s?#_M6hQXT+m|1p3 zM%fA1)vq3)tNqQA=`iyDrJwjb(d|sUbRbBOS;qz7q zt1Mu=%3lpWjErMm%`OYwi+RFbTEmL%aSL=hc8PCum}_eMcL}o{C-nSR?QZm9=BL8& zs1$Qvr-GPTbaWGez4=h$twd}n_005J?+|_*@Sfm*(~OKmv7W1p>ImM$n?b{&aC_^+ zm8?6K-f*1q!oxz3Seg$v7u4FdM2+o+G#8St(;+$AF}eswK>N#^%2|*~zn&Z&3@(u< zn&4kQp~@F#t^?id6@t><{}&Zd=QwNAdULwE22n%sW;k~~CP$1UemY)qa37TVz^BwS zrWDCiuFqDkK~OEjZ>-h^7WuHM`l!n&*dfK4uwQ(JKAJxpZ(`r27YH>2L!B|r94!l? zjh#R;FIG8dAk@qf%;*7!f(5*HZDLd}kJw>0#fX8=+ojGS@M zh;4sF{GQR_#T$)+j$F~oR`M1WhAy~sdP9M@Prbr$n#b1I(k~GJAU`wS>89RwhoWoY z##3eVM3KhRD+2s>c^>di!39PHKMw$p84NAjmG1Q%e#6vZ5HhrGTk=uK{ zGSutW)i+0_dqX7vP_H-d6sVSNP_>y>!3f*la2C8a{)_ShW>EncE4|lvKAdEa1)TyQ zh=d6GI-T{kKG_fNu7qtv;L^XQoUuBOFOm<_9*D=QNHvLN>!WqZiU+16%o!oBzE;?6q z1@4X%C3VqrD|Wxg4b^eRon_uh8Dn)Uyf|V{fs2}rJh|lB% zj^1Rwv!MpgixzpE8u2K1(To~>`z~CP6);%~Y_iirYT)VG1BQXD&KPo;%92@(Y8o`I z48TOcC-+Y+)N1ObyeJ@z*+|>3b?c^=gYg{FzM2u5Rc|Ir;M0S-`J;`&8lDx+4C&B1 zFEF61Dugis< zS<(D{Y^t5Y&Liq@(4GvA7z&2lev)w;c@Q#{1dE% zw3AyvkgYEA1r=D_My1k}s9VkF6^XwiZT-8M0!L#Lp?{oi!Mvl@`3UbDf~xxEnPur`Rt8w_=^NMGX>A zNbwK-2|cEPFeT4&BuvX<`BMSZ#0}T2_!$qEXjDB45{i2+G@fy94q+{iH_47bykqjXxp+W8re^=%AJ0Ur3ho%J z{>qx5FA(`SbDED@&13V^p`HEg8s}f_2Yx|x>Cmg-(6Y|Qofglz82|MI5T2`?48)p_ zj+if6$i&ES_**}9F>~A4AA;05a1Lk}kOqhx2nVMWVDYy*3l=tl;(LWO+B5ic_a)Vp zOkp8nx}p$3YdaqDpB~gdAN4v);y!)6OJ}-g?~Nm^&K%V5E$erpzlztd)h;*-IVL%6 zRbxB1hTOu~u?}g#Y|ML75v$z`FxCXb#>NiZ79QZ1xO;Jddmvd)N@rn{HIFLu*?%>B$ zR~`tCpltRymZK~2`q6z4ovgFxl}EW=PF9<%PvQ7^3DI~ky*qrpPm$F1BfT;d^v@g+ z!6YXH3|hVg#eNuke0%r-67bkuJj9NspOc1#Ru-8_bu%pNQJhN(&#eDVRtvPXw$mFu zO`8?w$EcRY=B(>bstS8HlIU=JiR?r0trcA0f=9vXQ<7*umn2*#8T-odt$uRazlUO1 z`p!kFLBL942(g^x0-2X%T|$u{ZYuKYZp9NxHrg#ka<|`(;JrVnXMA`d*X1xT9||AE z%)y6!f~ZkoS{KmAj=n$3zYANYQ)QWn3eO+HLPa2{m}Iy!QX4;WYAOHsVxjTxY=6SP zhRsv)2NncgFbS(H-{%+>gJFYhS!`-IF;WK8w7yTOQ``N!!pi#;VBN=-#r^NBx7FJS zN_dH31OF-0TmgT3pLXuaJNh(jJ*Hk9ulP_{4331|<%`V!Vs^RkANM@55PlWZq*&@J zYiCZkplA!PLuJr~Hu~EzgQPxFWuv%1iH88>iFqHGN~<5oj`|a3bL4bz@Wih4Y6d*! z&hMLOBy)STO=gz501m6y>cj9JKty}o{EMZXZGE4`$b74;ev&0D>Ii-lN(1DlT`H%2 zpc_H0o9S#RDarnqW|ar!PfXc@}Vsnv;A%$)Dtfedp-P%6VN|u z^mv1^33jB{mwEC#?@(&ns~d|XQykL@{RSOPTe@%b6Ny!U0W$?{38X26c@RKH8T+Yr z&bnN*UvH#Dj-j(c_9ox3pK3;ItN$zwp+Y_p_;u}aw=<%$bbC8X{-85yys}cAEdoG~ zrgVErEjjF~xL=p9hOFkQndDWZX-&|W?0Gup$d)ouhk>RT@rLkW#K)={GJ8vgp~p7ce0{=Eb!fgvIU ztEu+mTV~jnJ2g&ukYydJI9`nX^@PD|@Vj3x>#Q-wRX^CDC zf+C<$E(0O}J2Vji7Rtexx%}uX9F#gycNk|za?jc6Dl#$K{oJE-UcJMbwcFE4o7gxK z4fM|wB%O7sg+6=m67GTPaAw9E1PCgTi}(4rqhs!a$PHaA=RL&D52Z(`m_5}XWv7fQ z$h%LTGD@!jpmv^$d&!9F_N^i7u@ICmKvOe{JD`;7l!+6(pAEb&Ea8TJAKx1ToFwzs ziJ0aA`Mcdv)dCW21icRJ4r@!QrR9{{S0_z`f$%Ewtwii^fzlfh@z`P^WlsSTJhetp zkcS>>CVPg zU;CNPp<|Cz=UOu=HLe;-=I#20Bn8>EzrKk1tKn39xiJ7kMuN7}<<9!zZY#)3yqGb< zv;lkb&!qfp^ssfHiLG}%@(j19J~2Z5dmHNG!Z){lsQ$! z4wr=LU&aV{TZZF5oIhy%Q2hepN9sy?22D|JV#9=j^pLtHB|$rnp{>1<3O8YbOeYg` zw8znxlH7`)bmL8z77ceGJa$rc>=SuE*&ZzdVaRP-%b7Ra*=RXq-M=kS4B1H|8fejK zxnc8-jG=om7_gwgUL%XDg6HyQ<9*nN8$K_kj_#=LEod9iw;3%MX{!idXI>IxGmTa| zprQ8IF^P#sXYNhll9>IMdY zA-?|!B$sXnc?**yA~Z^}UNuSKYQnoa(3n(j5<@pi7KqNnIS8GVayCJFM_dR0{h0Y} z_B;`mA;o**m<-`Shb`sU&PFn3(}e-gfZ#w9i5MOHQ;vY0U201jB9*E>l5j=W;%DFw zShU5NR-wuDgb94tGd$HjIu=y`Sh)wEE$2=R#$0Po`23z(X&4l!+czL&Q=r_XhErUo zXGHx&>)pAb&B1km=F%Df%|RHwmtydu-!cL0nGBuOKmyRn(Jq}qa6&Tt>D5^HQ)~a_ ziFgKb9vq3)e|DWUl?b=X_^}G$mU3@e{Cc0yVlzzBDUy1CpP*cU7YbyjYUktQicw50 zmvDJt#H555GP&&!@7a!FA`;{i`0UcVglWP)R6l(vOzzWo4Q_xT+KM8oXk2f_eDD&> zxq|5|ZCANNhU#QphI#K$lD=zO#z`xDPe|N>zH;v@RGSTrax7}H=4-qgEFGo(Lfj|$ z)_)(fs)Z6cQk^aocm`z*O-?+BRQ9eP zqZI|8)O^b2S=zp{@kHfq$2U;U!nz(6qY$r&* z9KefeiIM@)<*>@U{$93gma;e)?Mvp7_haJVby&E)1j~|qC_)}Tg`zyDwcc6q>9T1F z2|*3O3x+H>jpl63YcP%wj}lNK93K7<2^fD|F66J1s+&0-4Tl;(`#g#?niF0QYHUgF_o*n_CDByOjNvTX1-^JsXv+VLYG;*Lz;4C3CRWNkaYEg3 zV?nycV6^{$Uw@bx9-kT}O`nSbmC;_B`_%M6X#|HhO$a_ROj3Ni$}Z=l_~!o_I`ep_ zx-gELg&F(ISVERD#uBncb`1t&NywIvHALC>osmJ9vF}++mMoF2yw(g!2wAerPNIm! zJNM7~&pr2k&UwyrpXc}co^Flv_apy6nED(0nuo=hf`Pt`?HlHM@RjRCDIEyR-Z;Mw zSN>t_YK0ggy4KSSiIy>%BCDQMQaa;odU$PMa?RP9yLVbeqSFTkO_WmZc8Mhz4{=2r z@GjZ!*}YoGWO5pdUx>~C%Xp*mh&XPB&zAQ23kr_Ql%;Vl#6_gi$)kC~{)K9-+FD={ zgMw1=!>OcEp3wwkNi%(#@{fYxjp5w7q;x3U8o8o0wz*d{TZX(?|$@ksM??E z5G0)FusH!?Tzf*v3U>*|_7$I7J(zm5O0Rvq`nxZQ7Q~|KBGz_;=~9nSiG}HR{?rnq zGDb-S2*yy6K1rn=6+nSFG(G{9tJ?M-i$gd4LEpyTziis_xGpl=z%x#pnBI2vuLJ25 z13r7B^O*e+7fULiv+ib3w*=nS$KfSLefD%e>BOFly&_GkkK?*}p4@+%Mu375uMp8# zS$A3zuV86ikwD*1e zzu?~87|HF+dTpUfcc%DY#Tjvr8Hp$*-3B>6tS!JPhhY;6&S0`A?6bigq=SsH)Qu$; zyQutm07#bjvb{YD1mO4(dq1KwRZA4M;oY)~Ougf}d08dkp~Y*6jqWqTt^60P#MX17 z$oDp4Cq%HPM$QNo)4EXpQI9DX}#j@nLE&2R8O^L_CUyhDj}Qx>g!miY$0)5?<;A%?Ju=}yvN~(fw;c( zDf#NGn0FOe@Sqv9$^j>)w`B;K7)I|#qiOEM@`RPIBKnnAx=Zz!w1vZI|4x~{aH!n8vxBx zl(D37qz=xrCraobQ`uow*3mv05=4A@bPz#g(E@0M~7lD`X5=4gK^k$@W~Hnl;oVLt@-PmX0?B& zZ`gqt*~ba#t$HwRErLOMlE*nmmI+98add`%&zdZzAL+p+vbhSZMp-kMLtadL-*Y`wRzsss*NGYwRX)5iqi zC->fQ)RkKZ{fD3ziHhHf0k9TTi==941=p+p_xEjEQ5}-Vv;V!;ljpJRVWPssxNjUd zV#E`6JAPjjaRPfUeo=$qgc305Y#?nuBEj>&d4~qCWe002fv=ir1;vS}I$uUj`;8OW zI{2Jbtod5zZ-cz>3&EocM7bDb+$x#JN13GaTHgrN#Ews3xS{*^zBQ={Q+nSN zXAP@t%%v$R1&k%*akF!bgs^U`b&n(e>p0}H0;~@ZtdQzXr_xAUcbM~MzNin*GYzxC z>ASx@7GxAfXW_oZ$kwMKn3a^&g3o(r+de$J*=JvH2amG1S!KuKll9%;Vbz&t=5nrI zg*Embxs8%Pq=_flbYIcvYaR?>>Df zP{!%sPHv)w)N`PuygPJ8m1bS_dJ=u=9BJI8S0{Mm6jFo3zL;Lz3#_o8sM!URUKefV z@ds4us5E^ndhy0G4r}Oqj}hdpDv6 zhY#fa@%P_}5`0s+?#;-o&np*{sfHp4{TO$OaKb9@p~QD?tLZX)umLKz-f>z z0n-?7sqi~WldBB3N0+A9bI4QJo%E>6s7Xora{CzTr;Wlb!DW8_WTH*`@fHL8PJ8Nk zD@C(U%#~_DCp$izF5G%8)awT55{4T#HgXc8+pv}$1yMjWwW%Dor z0RdHvj4C6_t`z%Dr|3#L5&8z()OXc6>C1~eOw_Hlud!BD@3v=3R8W!DpQvTXAdc0Rec0@t&xQLg!7Z;NP_cYKw;M?8g zJND|_cKnZAnSVoq-znT#)Nb+0Fc^PxRKVUXXv9$NkyzwO?D?aYWadO-d8u>o02@Ul zKPZB(C14V|aA++s{&%D)<#pyj*-nJO9qK#N8uoACkh-y<&K|-)eG+ zg>p)ka2Sw5dojF0cr0u;g`CY#i98W?()=VrrbG_s)4-1{9)RfUT}TrSex}0EUvI2y zX@fA#4OW~2;(zz#w1XE^&;`YJ9}dd&_wNUv8dHsr@^lQY$My?aH(HiK; zBqfP$%kc&*SVlewhJ}a5%1-dCmGs)UIxBmj*YPx|+wQj~*w5%O4zZS`qSHrAIu=g$ zT=+T6J{VSMSbi1zjsacD6S>$4!ah2rGL?PGE((cN$k2|4pjAGgRXI?Z4^)UZ;$v5k z$%uH@5KCoar|ajmf*2sjyW((aB#L5yIQ3Fa@M?p-!BA;NWfiw+pPmijo3~}l_9Ofl4q@BZ`|q#sHax3#gc-g^`Apw& zRMeIi>;OhEjj~s1?|=LZA(Zh97>Laq*IDf3ZDVRGgvJ?=PR7nl)mzbDp#HOE4Y&GG zuVVV|M)#S9#lQyh(c_Ch2;#QSxVO&JaK!_31{nmM(zC1aJ6bMP8r*pPV?t1ktLQ%^ zs*bfQY&YD^75WZs7_b;LciNFD-Af@T8>l4U0R+WM+tm6XZLMN&uGwoc4AHSB`Uql3 zY)$0w>W>fPAKzr~l2Ws}9XYK(Uy@e)RkW`SQcT~-5D!i1b2!OJ+#me|#d5uC<$jfq z&8hc*(-JUoVGy=$ZEg$N%&TL+Ds}Dt=*0<@s%|oU?>?_@p}rPuJd|YFh$>{z$nIm( z{jX57BFeRPc8=?ihD#8Ry2s!jFpduU^V&dRd;4O|O+BWp_+@Z+bG`zW+IM&u>(=S> zJ!3_RJ1r0KP++WEqK%`hWm|{zw|8l788Dh4CIFRR$EtMF>hY z2AlB9lbIxv;TB)PqL#a#k>8&Jj2Nnj|SIda__e}^ zA}JMDHP{29&TomaQAZ<;T9!=_57BU1WjZUky}3itlWl@Z7e(& ztg*#YQQB)MnMDKbAdNtdQu!M0!T1&LQS>(K!UXwBS4qdRO{}^$&hpH($~1KU?M9JH z;OC%gB)NaJvP0t)|5OEl)U~EJ^aNr6q1G&;b}k1vQdeCVx>Y27bGMAi$THN;og?13*ch*U{R&!(glE31WLyPs@9WJmG(0^Bq7w;wS~uz*>R z{II;TFmgU=E1ChR%e`3~zQBs)Pd8swtZrHfxL$8JjwsFHr}Nh)#9B3Y;(FhG)aN`# zvNeUl@iEt|X|V|OX>e52@HzPeVuy^v40HV zrf`$#TTjCa;qzjQ+j`moUG9~0ag3uwDJRYYK*MB=FAM%fc%hp2%t6rT87==rP$5e4)SGuY+I7X4eb~MS zNt9(4QPj<*((NXyjlS#r`u4W0(Gm72k2apr^E?XEd|hgwg?YC{hh>5)UU?M7jdl=w zj^kLJy+%u&7RH8lvF8r%;#sE>QwO2RF-*A@c0OO$Lg$2VTEXD2P#w}hQu>L!A|Qct zbHAqX(zlO26+VBz;* zCxMQ?-C-KDh49YFE4HuXKex4>{r1l1`^~VpkgYq5H5`R1yT##?R~|91kbR+__%|YJ zEthvyau{eplE7eb5LjY;wz<$kKps(rDe=wqH2G0I?^ zh{Y-FCY#!4v#%Jjt`jVj=J;yvYd0t%39!*F&bi*gWGpX9ecEhhqxy^mCg|{alnvLr zcW`*lkIsmX6DZsW>Fp~tuln(lsUb=vwZL@aEhNi;cifB!v!ky|mO=mIP%S|r=(W#u zmH2aLN;Ek(wDD4(!ub+^+JB}yazUzn62o!gp&s#+6iKT*syBkOP>+A?R57w2hjof! z?R&9!t3bLGApRQ^e=SfBtc1Z^_!C41m*o2_*mLF8mW_1(74>P_XdE=UPeFRIM zeDiDJj(PZMR%Zx@;&7aq?SD6R|M#1HC7smZC7kXC|B(T@)DDQ45cAs<;M5d%@5}$Q zCStU9t~~=y@JllSyY1KF6$RHSN_JK1T5sUa zqm0}w%`1Q8-TDVDD!b}g=8~gn_%QyOQOR8{ptmeR0Og=YMM`RWJ8MnO|0H1RP#RWa zVA_L^GZBfF4R*dHJ{6)JIXbl z)1D9?+e-GPrK_u>=9_Wdugm1QJ1*f6Sq9>vTRWhS@3fR}Maw&vX|O5&L;SzTQ~|Wv z#P~wKzr6mVgW)!f{akN{0L%rO-ar3w%a+GzR(@M<_OJg}==kILS5rF&opxw8`D#zu zSx2D?Blk6ATfVn@0X^&s|DgXZ2EQUe;=feonw?k-Xfzm9#g#oXGt)hD?{nW?CPtiS zSBGV(ILP@h4_C(xJsQ1mtndN7Bag z`HOCfJF&3uufqJ4;zX44oENKHk}QDJt6Ood^x@3*8mZ>e;osSPnls+nuOaX6hQ#W8 z?+|Lz%GkuGrSrGl{k4>oIR1>&e*NyXe(xo9mzGp@f5eXtZTsrFn-?OkNa9PN(EB&n zAF;t^=+Jh+T0Xu@?}O;C%x`&FR>qMdVzoDEhha+iY*`p$Fx;S0<=GFHa-Py)L&t&% z`K^0U=Fb{#RJ{i=_G6_txrwU{WKB|MvH``@(E!YUhsmZQr|y*ejJxw~JmAwt@ZZUF zt;xq$mW?qCB_3l!v02- zs;-!^e~`~HVYe?>^qZc}pk%+gu0bZj6FAuk#pWHwjV4ET2h5gD9zuh|FPF)lZlp2PgQt#KlDneQF&V#CsD;dZ#=-Mh+h z@%6>1`$p5b_xmE-YwLa#%yj|3&OPa6mJEvfO>Y2vKCJgWEeMjHe3ggv+mBN4p;c1| z4gdO4P;6C{A%L28ujKlT30?eGhDf~F{1~UoP!4xU&Zu2;sr&>d7Cu&-vY$kaZJ|YZ ztTT$2m|1p!X~n*N$kUzbXpa+VbElnXI8Ro-3K-0O+9n4W!0GF)fv*W48~FWe^62%WFDYmHc{SAAvxRM)hl7Rq~*F`s<8 zS9Z7TZjE`=&*+bgoC}R6*XU%GO2fNLlR_mG{V$}Cv|c7YiQ|UrfWoX##&i_C{evDt zq*aZd6ZHMafx& z7OUo5EiE>f#EG~6DZ9VHCy;1K1vac(aL&*E-99q-llUKExNRkU7Bl_X!0PRjaQdx_ zvg-R1IM+0$ptWNji|ap>)yTgRcUGp?>g}g7ttY;d$?69295jk0^J7t}F}uiT%dZv1 z*=@oG&)uK59nZS6>DVVZSiIz2++}R2X~5yT9$GLD{lexj*waZ0wZ#en;CW!IA%s*t z!tIz>Z)=w1hd^@fl~+U&aWZ4gkM2ntBq-O!_+PA9#DG*3;NtCNg%?DU>HQzC2yo4wi3Uu z{OxPb^N2(K_XGLKXm0as38I2xe{Xt11^!;WVXNScs|?TC6-k%zQk$7XZb+52~pNeCVrJ&0x{f1~I?{FEGQbk}h=KE)0RqgQW6ekCI{1!4sVSz{uFs5Dk%EE&N zJ9Yc|^xI6Zkg}ls{(`lWI>?+nx)`eKK`7M7*na+C(>PIeDmeh zPAFC9;?>@+=I?@Dg?+w8xnILOPvPTkeNKk~=OsC#48fk)^&bcC5Hm_{?ged)J~iKP zG&l9J7xEV+$8JbeFpCvc)3()sygB3zr95q2YBq zXa6Ej-h?!)BAKD(uAe{yf-lv+0JugW!@WW8VsOC-m=Lfu);%&9nW>X4hufru71!N)f}D}qY?e!Fu(B|JUkzI-%Q?jeyqjK7vZY#Y+yjF z*1+V2Xr^=^yJf+ucXT*wzSQL5pZO;bMrPaD4377cwGglRURre=y!k>6KP4lS{(cM! zKDD`@_xux_Rh|4_9*A=WVSn*=vzgjFWpzoO{c39YH!ZtUQ*X}RI&d#4M<7= zJ9$DD2w$uP!Y8bdC_Vr@H1+gvvK8`_RiBHKlO8a(7CzxQ;~ByAuSs%BnP|Uvo_2pR zEL}EAK+f09yoAZ~O|PPnlva^OUYbya z){YKs%-T$6=a0?ZJ6B0@69kZY!TgtB?`mD8v{%u8lTnU?>Ibg^{eCJOB>&!t?hQu9 z3}mnU?7HC@Gtj%t+hxC{_wd5)fbbS%yD#N*bqNrNWFVuckOvs?6Jbq<2DEl=tC3#j zITB^*0!cR$BAEynuCWWp{PEG?NmX&&(i9OeBfPbj%Z{f>Y9@&Xc_5j&Ldd1jGkQoOq#N!3xB+fY7Xrg&+KaVkbHBW`!T)IUsEtbXWY$Ox^jKu3( z#A#!}I9nmo-;K#f=*3+D=p&|lAm`~ax7MCo|E@SWc&A@;uXs7=GF=!1vCC1S>T?&X z>YY7gPH_A_lsa=s3vq?gxI*I`I#r8$uFHPR*10(Blaqoyalis;wHjS57KPOk0+R{Q zzob9X�R@uO(CkQsfkhfuA@KFm(n7jIacY4$yNz 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 ITEi~pf9;DZZU6uP literal 0 HcmV?d00001 diff --git a/view/molistar/common/js/JQuery.datetime.js b/view/molistar/common/js/JQuery.datetime.js new file mode 100644 index 00000000..c5881753 --- /dev/null +++ b/view/molistar/common/js/JQuery.datetime.js @@ -0,0 +1,2862 @@ +/*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */ +(function (window, document, Math) { +var rAF = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function (callback) { window.setTimeout(callback, 1000 / 60); }; + +var utils = (function () { + var me = {}; + + var _elementStyle = document.createElement('div').style; + var _vendor = (function () { + var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], + transform, + i = 0, + l = vendors.length; + + for ( ; i < l; i++ ) { + transform = vendors[i] + 'ransform'; + if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); + } + + return false; + })(); + + function _prefixStyle (style) { + if ( _vendor === false ) return false; + if ( _vendor === '' ) return style; + return _vendor + style.charAt(0).toUpperCase() + style.substr(1); + } + + me.getTime = Date.now || function getTime () { return new Date().getTime(); }; + + me.extend = function (target, obj) { + for ( var i in obj ) { + target[i] = obj[i]; + } + }; + + me.addEvent = function (el, type, fn, capture) { + el.addEventListener(type, fn, !!capture); + }; + + me.removeEvent = function (el, type, fn, capture) { + el.removeEventListener(type, fn, !!capture); + }; + + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): + pointerEvent; + }; + + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { + var distance = current - start, + speed = Math.abs(distance) / time, + destination, + duration; + + deceleration = deceleration === undefined ? 0.0006 : deceleration; + + destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); + duration = speed / deceleration; + + if ( destination < lowerMargin ) { + destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; + distance = Math.abs(destination - current); + duration = distance / speed; + } else if ( destination > 0 ) { + destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; + distance = Math.abs(current) + destination; + duration = distance / speed; + } + + return { + destination: Math.round(destination), + duration: duration + }; + }; + + var _transform = _prefixStyle('transform'); + + me.extend(me, { + hasTransform: _transform !== false, + hasPerspective: _prefixStyle('perspective') in _elementStyle, + hasTouch: 'ontouchstart' in window, + hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed + hasTransition: _prefixStyle('transition') in _elementStyle + }); + + /* + This should find all Android browsers lower than build 535.19 (both stock browser and webview) + - galaxy S2 is ok + - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` + - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S3 is badAndroid (stock brower, webview) + `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S4 is badAndroid (stock brower, webview) + `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S5 is OK + `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` + - galaxy S6 is OK + `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` + */ + me.isBadAndroid = (function() { + var appVersion = window.navigator.appVersion; + // Android browser is not a chrome browser. + if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { + var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); + if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { + return parseFloat(safariVersion[1]) < 535.19; + } else { + return true; + } + } else { + return false; + } + })(); + + me.extend(me.style = {}, { + transform: _transform, + transitionTimingFunction: _prefixStyle('transitionTimingFunction'), + transitionDuration: _prefixStyle('transitionDuration'), + transitionDelay: _prefixStyle('transitionDelay'), + transformOrigin: _prefixStyle('transformOrigin') + }); + + me.hasClass = function (e, c) { + var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); + return re.test(e.className); + }; + + me.addClass = function (e, c) { + if ( me.hasClass(e, c) ) { + return; + } + + var newclass = e.className.split(' '); + newclass.push(c); + e.className = newclass.join(' '); + }; + + me.removeClass = function (e, c) { + if ( !me.hasClass(e, c) ) { + return; + } + + var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); + e.className = e.className.replace(re, ' '); + }; + + me.offset = function (el) { + var left = -el.offsetLeft, + top = -el.offsetTop; + + // jshint -W084 + while (el = el.offsetParent) { + left -= el.offsetLeft; + top -= el.offsetTop; + } + // jshint +W084 + + return { + left: left, + top: top + }; + }; + + me.preventDefaultException = function (el, exceptions) { + for ( var i in exceptions ) { + if ( exceptions[i].test(el[i]) ) { + return true; + } + } + + return false; + }; + + me.extend(me.eventType = {}, { + touchstart: 1, + touchmove: 1, + touchend: 1, + + mousedown: 2, + mousemove: 2, + mouseup: 2, + + pointerdown: 3, + pointermove: 3, + pointerup: 3, + + MSPointerDown: 3, + MSPointerMove: 3, + MSPointerUp: 3 + }); + + me.extend(me.ease = {}, { + quadratic: { + style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', + fn: function (k) { + return k * ( 2 - k ); + } + }, + circular: { + style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) + fn: function (k) { + return Math.sqrt( 1 - ( --k * k ) ); + } + }, + back: { + style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', + fn: function (k) { + var b = 4; + return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; + } + }, + bounce: { + style: '', + fn: function (k) { + if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { + return 7.5625 * k * k; + } else if ( k < ( 2 / 2.75 ) ) { + return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; + } else if ( k < ( 2.5 / 2.75 ) ) { + return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; + } else { + return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; + } + } + }, + elastic: { + style: '', + fn: function (k) { + var f = 0.22, + e = 0.4; + + if ( k === 0 ) { return 0; } + if ( k == 1 ) { return 1; } + + return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); + } + } + }); + + me.tap = function (e, eventName) { + var ev = document.createEvent('Event'); + ev.initEvent(eventName, true, true); + ev.pageX = e.pageX; + ev.pageY = e.pageY; + e.target.dispatchEvent(ev); + }; + + me.click = function (e) { + var target = e.target, + ev; + + if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { + // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent + // initMouseEvent is deprecated. + ev = document.createEvent(window.MouseEvent ? 'MouseEvents' : 'Event'); + ev.initEvent('click', true, true); + ev.view = e.view || window; + ev.detail = 1; + ev.screenX = target.screenX || 0; + ev.screenY = target.screenY || 0; + ev.clientX = target.clientX || 0; + ev.clientY = target.clientY || 0; + ev.ctrlKey = !!e.ctrlKey; + ev.altKey = !!e.altKey; + ev.shiftKey = !!e.shiftKey; + ev.metaKey = !!e.metaKey; + ev.button = 0; + ev.relatedTarget = null; + ev._constructed = true; + target.dispatchEvent(ev); + } + }; + + return me; +})(); +function IScroll (el, options) { + this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; + this.scroller = this.wrapper.children[0]; + this.scrollerStyle = this.scroller.style; // cache style for better performance + + this.options = { + + resizeScrollbars: true, + + mouseWheelSpeed: 20, + + snapThreshold: 0.334, + +// INSERT POINT: OPTIONS + disablePointer : !utils.hasPointer, + disableTouch : utils.hasPointer || !utils.hasTouch, + disableMouse : utils.hasPointer || utils.hasTouch, + startX: 0, + startY: 0, + scrollY: true, + directionLockThreshold: 5, + momentum: true, + + bounce: true, + bounceTime: 600, + bounceEasing: '', + + preventDefault: true, + preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, + + HWCompositing: true, + useTransition: true, + useTransform: true, + bindToWrapper: typeof window.onmousedown === "undefined" + }; + + for ( var i in options ) { + this.options[i] = options[i]; + } + + // Normalize options + this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; + + this.options.useTransition = utils.hasTransition && this.options.useTransition; + this.options.useTransform = utils.hasTransform && this.options.useTransform; + + this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; + this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; + + // If you want eventPassthrough I have to lock one of the axes + this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; + this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; + + // With eventPassthrough we also need lockDirection mechanism + this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; + this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; + + this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; + + this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; + + if ( this.options.tap === true ) { + this.options.tap = 'tap'; + } + + // https://github.com/cubiq/iscroll/issues/1029 + if (!this.options.useTransition && !this.options.useTransform) { + if(!(/relative|absolute/i).test(this.scrollerStyle.position)) { + this.scrollerStyle.position = "relative"; + } + } + + if ( this.options.shrinkScrollbars == 'scale' ) { + this.options.useTransition = false; + } + + this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; + +// INSERT POINT: NORMALIZATION + + // Some defaults + this.x = 0; + this.y = 0; + this.directionX = 0; + this.directionY = 0; + this._events = {}; + +// INSERT POINT: DEFAULTS + + this._init(); + this.refresh(); + + this.scrollTo(this.options.startX, this.options.startY); + this.enable(); +} + +IScroll.prototype = { + version: '5.2.0', + + _init: function () { + this._initEvents(); + + if ( this.options.scrollbars || this.options.indicators ) { + this._initIndicators(); + } + + if ( this.options.mouseWheel ) { + this._initWheel(); + } + + if ( this.options.snap ) { + this._initSnap(); + } + + if ( this.options.keyBindings ) { + this._initKeys(); + } + +// INSERT POINT: _init + + }, + + destroy: function () { + this._initEvents(true); + clearTimeout(this.resizeTimeout); + this.resizeTimeout = null; + this._execEvent('destroy'); + }, + + _transitionEnd: function (e) { + if ( e.target != this.scroller || !this.isInTransition ) { + return; + } + + this._transitionTime(); + if ( !this.resetPosition(this.options.bounceTime) ) { + this.isInTransition = false; + this._execEvent('scrollEnd'); + } + }, + + _start: function (e) { + // React to left mouse button only + if ( utils.eventType[e.type] != 1 ) { + // for button property + // http://unixpapa.com/js/mouse.html + var button; + if (!e.which) { + /* IE case */ + button = (e.button < 2) ? 0 : + ((e.button == 4) ? 1 : 2); + } else { + /* All others */ + button = e.button; + } + if ( button !== 0 ) { + return; + } + } + + if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { + return; + } + + if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { + e.preventDefault(); + } + + var point = e.touches ? e.touches[0] : e, + pos; + + this.initiated = utils.eventType[e.type]; + this.moved = false; + this.distX = 0; + this.distY = 0; + this.directionX = 0; + this.directionY = 0; + this.directionLocked = 0; + + this.startTime = utils.getTime(); + + if ( this.options.useTransition && this.isInTransition ) { + this._transitionTime(); + this.isInTransition = false; + pos = this.getComputedPosition(); + this._translate(Math.round(pos.x), Math.round(pos.y)); + this._execEvent('scrollEnd'); + } else if ( !this.options.useTransition && this.isAnimating ) { + this.isAnimating = false; + this._execEvent('scrollEnd'); + } + + this.startX = this.x; + this.startY = this.y; + this.absStartX = this.x; + this.absStartY = this.y; + this.pointX = point.pageX; + this.pointY = point.pageY; + + this._execEvent('beforeScrollStart'); + }, + + _move: function (e) { + if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { + return; + } + + if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! + e.preventDefault(); + } + + var point = e.touches ? e.touches[0] : e, + deltaX = point.pageX - this.pointX, + deltaY = point.pageY - this.pointY, + timestamp = utils.getTime(), + newX, newY, + absDistX, absDistY; + + this.pointX = point.pageX; + this.pointY = point.pageY; + + this.distX += deltaX; + this.distY += deltaY; + absDistX = Math.abs(this.distX); + absDistY = Math.abs(this.distY); + + // We need to move at least 10 pixels for the scrolling to initiate + if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { + return; + } + + // If you are scrolling in one direction lock the other + if ( !this.directionLocked && !this.options.freeScroll ) { + if ( absDistX > absDistY + this.options.directionLockThreshold ) { + this.directionLocked = 'h'; // lock horizontally + } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { + this.directionLocked = 'v'; // lock vertically + } else { + this.directionLocked = 'n'; // no lock + } + } + + if ( this.directionLocked == 'h' ) { + if ( this.options.eventPassthrough == 'vertical' ) { + e.preventDefault(); + } else if ( this.options.eventPassthrough == 'horizontal' ) { + this.initiated = false; + return; + } + + deltaY = 0; + } else if ( this.directionLocked == 'v' ) { + if ( this.options.eventPassthrough == 'horizontal' ) { + e.preventDefault(); + } else if ( this.options.eventPassthrough == 'vertical' ) { + this.initiated = false; + return; + } + + deltaX = 0; + } + + deltaX = this.hasHorizontalScroll ? deltaX : 0; + deltaY = this.hasVerticalScroll ? deltaY : 0; + + newX = this.x + deltaX; + newY = this.y + deltaY; + + // Slow down if outside of the boundaries + if ( newX > 0 || newX < this.maxScrollX ) { + newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; + } + if ( newY > 0 || newY < this.maxScrollY ) { + newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; + } + + this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; + this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; + + if ( !this.moved ) { + this._execEvent('scrollStart'); + } + + this.moved = true; + + this._translate(newX, newY); + +/* REPLACE START: _move */ + + if ( timestamp - this.startTime > 300 ) { + this.startTime = timestamp; + this.startX = this.x; + this.startY = this.y; + } + +/* REPLACE END: _move */ + + }, + + _end: function (e) { + if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { + return; + } + + if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { + e.preventDefault(); + } + + var point = e.changedTouches ? e.changedTouches[0] : e, + momentumX, + momentumY, + duration = utils.getTime() - this.startTime, + newX = Math.round(this.x), + newY = Math.round(this.y), + distanceX = Math.abs(newX - this.startX), + distanceY = Math.abs(newY - this.startY), + time = 0, + easing = ''; + + this.isInTransition = 0; + this.initiated = 0; + this.endTime = utils.getTime(); + + // reset if we are outside of the boundaries + if ( this.resetPosition(this.options.bounceTime) ) { + return; + } + + this.scrollTo(newX, newY); // ensures that the last position is rounded + + // we scrolled less than 10 pixels + if ( !this.moved ) { + if ( this.options.tap ) { + utils.tap(e, this.options.tap); + } + + if ( this.options.click ) { + utils.click(e); + } + + this._execEvent('scrollCancel'); + return; + } + + if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { + this._execEvent('flick'); + return; + } + + // start momentum animation if needed + if ( this.options.momentum && duration < 300 ) { + momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; + momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; + newX = momentumX.destination; + newY = momentumY.destination; + time = Math.max(momentumX.duration, momentumY.duration); + this.isInTransition = 1; + } + + + if ( this.options.snap ) { + var snap = this._nearestSnap(newX, newY); + this.currentPage = snap; + time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(newX - snap.x), 1000), + Math.min(Math.abs(newY - snap.y), 1000) + ), 300); + newX = snap.x; + newY = snap.y; + + this.directionX = 0; + this.directionY = 0; + easing = this.options.bounceEasing; + } + +// INSERT POINT: _end + + if ( newX != this.x || newY != this.y ) { + // change easing function when scroller goes out of the boundaries + if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { + easing = utils.ease.quadratic; + } + + this.scrollTo(newX, newY, time, easing); + return; + } + + this._execEvent('scrollEnd'); + }, + + _resize: function () { + var that = this; + + clearTimeout(this.resizeTimeout); + + this.resizeTimeout = setTimeout(function () { + that.refresh(); + }, this.options.resizePolling); + }, + + resetPosition: function (time) { + var x = this.x, + y = this.y; + + time = time || 0; + + if ( !this.hasHorizontalScroll || this.x > 0 ) { + x = 0; + } else if ( this.x < this.maxScrollX ) { + x = this.maxScrollX; + } + + if ( !this.hasVerticalScroll || this.y > 0 ) { + y = 0; + } else if ( this.y < this.maxScrollY ) { + y = this.maxScrollY; + } + + if ( x == this.x && y == this.y ) { + return false; + } + + this.scrollTo(x, y, time, this.options.bounceEasing); + + return true; + }, + + disable: function () { + this.enabled = false; + }, + + enable: function () { + this.enabled = true; + }, + + refresh: function () { + var rf = this.wrapper.offsetHeight; // Force reflow + + this.wrapperWidth = this.wrapper.clientWidth; + this.wrapperHeight = this.wrapper.clientHeight; + +/* REPLACE START: refresh */ + + this.scrollerWidth = this.scroller.offsetWidth; + this.scrollerHeight = this.scroller.offsetHeight; + + this.maxScrollX = this.wrapperWidth - this.scrollerWidth; + this.maxScrollY = this.wrapperHeight - this.scrollerHeight; + +/* REPLACE END: refresh */ + + this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; + this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; + + if ( !this.hasHorizontalScroll ) { + this.maxScrollX = 0; + this.scrollerWidth = this.wrapperWidth; + } + + if ( !this.hasVerticalScroll ) { + this.maxScrollY = 0; + this.scrollerHeight = this.wrapperHeight; + } + + this.endTime = 0; + this.directionX = 0; + this.directionY = 0; + + this.wrapperOffset = utils.offset(this.wrapper); + + this._execEvent('refresh'); + + this.resetPosition(); + +// INSERT POINT: _refresh + + }, + + on: function (type, fn) { + if ( !this._events[type] ) { + this._events[type] = []; + } + + this._events[type].push(fn); + }, + + off: function (type, fn) { + if ( !this._events[type] ) { + return; + } + + var index = this._events[type].indexOf(fn); + + if ( index > -1 ) { + this._events[type].splice(index, 1); + } + }, + + _execEvent: function (type) { + if ( !this._events[type] ) { + return; + } + + var i = 0, + l = this._events[type].length; + + if ( !l ) { + return; + } + + for ( ; i < l; i++ ) { + this._events[type][i].apply(this, [].slice.call(arguments, 1)); + } + }, + + scrollBy: function (x, y, time, easing) { + x = this.x + x; + y = this.y + y; + time = time || 0; + + this.scrollTo(x, y, time, easing); + }, + + scrollTo: function (x, y, time, easing) { + easing = easing || utils.ease.circular; + + this.isInTransition = this.options.useTransition && time > 0; + var transitionType = this.options.useTransition && easing.style; + if ( !time || transitionType ) { + if(transitionType) { + this._transitionTimingFunction(easing.style); + this._transitionTime(time); + } + this._translate(x, y); + } else { + this._animate(x, y, time, easing.fn); + } + }, + + scrollToElement: function (el, time, offsetX, offsetY, easing) { + el = el.nodeType ? el : this.scroller.querySelector(el); + + if ( !el ) { + return; + } + + var pos = utils.offset(el); + + pos.left -= this.wrapperOffset.left; + pos.top -= this.wrapperOffset.top; + + // if offsetX/Y are true we center the element to the screen + if ( offsetX === true ) { + offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2); + } + if ( offsetY === true ) { + offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2); + } + + pos.left -= offsetX || 0; + pos.top -= offsetY || 0; + + pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; + pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; + + time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; + + this.scrollTo(pos.left, pos.top, time, easing); + }, + + _transitionTime: function (time) { + if (!this.options.useTransition) { + return; + } + time = time || 0; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + + this.scrollerStyle[durationProp] = time + 'ms'; + + if ( !time && utils.isBadAndroid ) { + this.scrollerStyle[durationProp] = '0.0001ms'; + // remove 0.0001ms + var self = this; + rAF(function() { + if(self.scrollerStyle[durationProp] === '0.0001ms') { + self.scrollerStyle[durationProp] = '0s'; + } + }); + } + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].transitionTime(time); + } + } + + +// INSERT POINT: _transitionTime + + }, + + _transitionTimingFunction: function (easing) { + this.scrollerStyle[utils.style.transitionTimingFunction] = easing; + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].transitionTimingFunction(easing); + } + } + + +// INSERT POINT: _transitionTimingFunction + + }, + + _translate: function (x, y) { + if ( this.options.useTransform ) { + +/* REPLACE START: _translate */ + + this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ; + +/* REPLACE END: _translate */ + + } else { + x = Math.round(x); + y = Math.round(y); + this.scrollerStyle.left = x + 'px'; + this.scrollerStyle.top = y + 'px'; + } + + this.x = x; + this.y = y; + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].updatePosition(); + } + } + + +// INSERT POINT: _translate + + }, + + _initEvents: function (remove) { + var eventType = remove ? utils.removeEvent : utils.addEvent, + target = this.options.bindToWrapper ? this.wrapper : window; + + eventType(window, 'orientationchange', this); + eventType(window, 'resize', this); + + if ( this.options.click ) { + eventType(this.wrapper, 'click', this, true); + } + + if ( !this.options.disableMouse ) { + eventType(this.wrapper, 'mousedown', this); + eventType(target, 'mousemove', this); + eventType(target, 'mousecancel', this); + eventType(target, 'mouseup', this); + } + + if ( utils.hasPointer && !this.options.disablePointer ) { + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); + } + + if ( utils.hasTouch && !this.options.disableTouch ) { + eventType(this.wrapper, 'touchstart', this); + eventType(target, 'touchmove', this); + eventType(target, 'touchcancel', this); + eventType(target, 'touchend', this); + } + + eventType(this.scroller, 'transitionend', this); + eventType(this.scroller, 'webkitTransitionEnd', this); + eventType(this.scroller, 'oTransitionEnd', this); + eventType(this.scroller, 'MSTransitionEnd', this); + }, + + getComputedPosition: function () { + var matrix = window.getComputedStyle(this.scroller, null), + x, y; + + if ( this.options.useTransform ) { + matrix = matrix[utils.style.transform].split(')')[0].split(', '); + x = +(matrix[12] || matrix[4]); + y = +(matrix[13] || matrix[5]); + } else { + x = +matrix.left.replace(/[^-\d.]/g, ''); + y = +matrix.top.replace(/[^-\d.]/g, ''); + } + + return { x: x, y: y }; + }, + _initIndicators: function () { + var interactive = this.options.interactiveScrollbars, + customStyle = typeof this.options.scrollbars != 'string', + indicators = [], + indicator; + + var that = this; + + this.indicators = []; + + if ( this.options.scrollbars ) { + // Vertical scrollbar + if ( this.options.scrollY ) { + indicator = { + el: createDefaultScrollbar('v', interactive, this.options.scrollbars), + interactive: interactive, + defaultScrollbars: true, + customStyle: customStyle, + resize: this.options.resizeScrollbars, + shrink: this.options.shrinkScrollbars, + fade: this.options.fadeScrollbars, + listenX: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + + // Horizontal scrollbar + if ( this.options.scrollX ) { + indicator = { + el: createDefaultScrollbar('h', interactive, this.options.scrollbars), + interactive: interactive, + defaultScrollbars: true, + customStyle: customStyle, + resize: this.options.resizeScrollbars, + shrink: this.options.shrinkScrollbars, + fade: this.options.fadeScrollbars, + listenY: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + } + + if ( this.options.indicators ) { + // TODO: check concat compatibility + indicators = indicators.concat(this.options.indicators); + } + + for ( var i = indicators.length; i--; ) { + this.indicators.push( new Indicator(this, indicators[i]) ); + } + + // TODO: check if we can use array.map (wide compatibility and performance issues) + function _indicatorsMap (fn) { + if (that.indicators) { + for ( var i = that.indicators.length; i--; ) { + fn.call(that.indicators[i]); + } + } + } + + if ( this.options.fadeScrollbars ) { + this.on('scrollEnd', function () { + _indicatorsMap(function () { + this.fade(); + }); + }); + + this.on('scrollCancel', function () { + _indicatorsMap(function () { + this.fade(); + }); + }); + + this.on('scrollStart', function () { + _indicatorsMap(function () { + this.fade(1); + }); + }); + + this.on('beforeScrollStart', function () { + _indicatorsMap(function () { + this.fade(1, true); + }); + }); + } + + + this.on('refresh', function () { + _indicatorsMap(function () { + this.refresh(); + }); + }); + + this.on('destroy', function () { + _indicatorsMap(function () { + this.destroy(); + }); + + delete this.indicators; + }); + }, + + _initWheel: function () { + utils.addEvent(this.wrapper, 'wheel', this); + utils.addEvent(this.wrapper, 'mousewheel', this); + utils.addEvent(this.wrapper, 'DOMMouseScroll', this); + + this.on('destroy', function () { + clearTimeout(this.wheelTimeout); + this.wheelTimeout = null; + utils.removeEvent(this.wrapper, 'wheel', this); + utils.removeEvent(this.wrapper, 'mousewheel', this); + utils.removeEvent(this.wrapper, 'DOMMouseScroll', this); + }); + }, + + _wheel: function (e) { + if ( !this.enabled ) { + return; + } + + e.preventDefault(); + + var wheelDeltaX, wheelDeltaY, + newX, newY, + that = this; + + if ( this.wheelTimeout === undefined ) { + that._execEvent('scrollStart'); + } + + // Execute the scrollEnd event after 400ms the wheel stopped scrolling + clearTimeout(this.wheelTimeout); + this.wheelTimeout = setTimeout(function () { + if(!that.options.snap) { + that._execEvent('scrollEnd'); + } + that.wheelTimeout = undefined; + }, 400); + + if ( 'deltaX' in e ) { + if (e.deltaMode === 1) { + wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed; + wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed; + } else { + wheelDeltaX = -e.deltaX; + wheelDeltaY = -e.deltaY; + } + } else if ( 'wheelDeltaX' in e ) { + wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed; + wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed; + } else if ( 'wheelDelta' in e ) { + wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed; + } else if ( 'detail' in e ) { + wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed; + } else { + return; + } + + wheelDeltaX *= this.options.invertWheelDirection; + wheelDeltaY *= this.options.invertWheelDirection; + + if ( !this.hasVerticalScroll ) { + wheelDeltaX = wheelDeltaY; + wheelDeltaY = 0; + } + + if ( this.options.snap ) { + newX = this.currentPage.pageX; + newY = this.currentPage.pageY; + + if ( wheelDeltaX > 0 ) { + newX--; + } else if ( wheelDeltaX < 0 ) { + newX++; + } + + if ( wheelDeltaY > 0 ) { + newY--; + } else if ( wheelDeltaY < 0 ) { + newY++; + } + + this.goToPage(newX, newY); + + return; + } + + newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0); + newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0); + + this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0; + this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0; + + if ( newX > 0 ) { + newX = 0; + } else if ( newX < this.maxScrollX ) { + newX = this.maxScrollX; + } + + if ( newY > 0 ) { + newY = 0; + } else if ( newY < this.maxScrollY ) { + newY = this.maxScrollY; + } + + this.scrollTo(newX, newY, 0); + +// INSERT POINT: _wheel + }, + + _initSnap: function () { + this.currentPage = {}; + + if ( typeof this.options.snap == 'string' ) { + this.options.snap = this.scroller.querySelectorAll(this.options.snap); + } + + this.on('refresh', function () { + var i = 0, l, + m = 0, n, + cx, cy, + x = 0, y, + stepX = this.options.snapStepX || this.wrapperWidth, + stepY = this.options.snapStepY || this.wrapperHeight, + el; + + this.pages = []; + + if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) { + return; + } + + if ( this.options.snap === true ) { + cx = Math.round( stepX / 2 ); + cy = Math.round( stepY / 2 ); + + while ( x > -this.scrollerWidth ) { + this.pages[i] = []; + l = 0; + y = 0; + + while ( y > -this.scrollerHeight ) { + this.pages[i][l] = { + x: Math.max(x, this.maxScrollX), + y: Math.max(y, this.maxScrollY), + width: stepX, + height: stepY, + cx: x - cx, + cy: y - cy + }; + + y -= stepY; + l++; + } + + x -= stepX; + i++; + } + } else { + el = this.options.snap; + l = el.length; + n = -1; + + for ( ; i < l; i++ ) { + if ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) { + m = 0; + n++; + } + + if ( !this.pages[m] ) { + this.pages[m] = []; + } + + x = Math.max(-el[i].offsetLeft, this.maxScrollX); + y = Math.max(-el[i].offsetTop, this.maxScrollY); + cx = x - Math.round(el[i].offsetWidth / 2); + cy = y - Math.round(el[i].offsetHeight / 2); + + this.pages[m][n] = { + x: x, + y: y, + width: el[i].offsetWidth, + height: el[i].offsetHeight, + cx: cx, + cy: cy + }; + + if ( x > this.maxScrollX ) { + m++; + } + } + } + + this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); + + // Update snap threshold if needed + if ( this.options.snapThreshold % 1 === 0 ) { + this.snapThresholdX = this.options.snapThreshold; + this.snapThresholdY = this.options.snapThreshold; + } else { + this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold); + this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold); + } + }); + + this.on('flick', function () { + var time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(this.x - this.startX), 1000), + Math.min(Math.abs(this.y - this.startY), 1000) + ), 300); + + this.goToPage( + this.currentPage.pageX + this.directionX, + this.currentPage.pageY + this.directionY, + time + ); + }); + }, + + _nearestSnap: function (x, y) { + if ( !this.pages.length ) { + return { x: 0, y: 0, pageX: 0, pageY: 0 }; + } + + var i = 0, + l = this.pages.length, + m = 0; + + // Check if we exceeded the snap threshold + if ( Math.abs(x - this.absStartX) < this.snapThresholdX && + Math.abs(y - this.absStartY) < this.snapThresholdY ) { + return this.currentPage; + } + + if ( x > 0 ) { + x = 0; + } else if ( x < this.maxScrollX ) { + x = this.maxScrollX; + } + + if ( y > 0 ) { + y = 0; + } else if ( y < this.maxScrollY ) { + y = this.maxScrollY; + } + + for ( ; i < l; i++ ) { + if ( x >= this.pages[i][0].cx ) { + x = this.pages[i][0].x; + break; + } + } + + l = this.pages[i].length; + + for ( ; m < l; m++ ) { + if ( y >= this.pages[0][m].cy ) { + y = this.pages[0][m].y; + break; + } + } + + if ( i == this.currentPage.pageX ) { + i += this.directionX; + + if ( i < 0 ) { + i = 0; + } else if ( i >= this.pages.length ) { + i = this.pages.length - 1; + } + + x = this.pages[i][0].x; + } + + if ( m == this.currentPage.pageY ) { + m += this.directionY; + + if ( m < 0 ) { + m = 0; + } else if ( m >= this.pages[0].length ) { + m = this.pages[0].length - 1; + } + + y = this.pages[0][m].y; + } + + return { + x: x, + y: y, + pageX: i, + pageY: m + }; + }, + + goToPage: function (x, y, time, easing) { + easing = easing || this.options.bounceEasing; + + if ( x >= this.pages.length ) { + x = this.pages.length - 1; + } else if ( x < 0 ) { + x = 0; + } + + if ( y >= this.pages[x].length ) { + y = this.pages[x].length - 1; + } else if ( y < 0 ) { + y = 0; + } + + var posX = this.pages[x][y].x, + posY = this.pages[x][y].y; + + time = time === undefined ? this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(posX - this.x), 1000), + Math.min(Math.abs(posY - this.y), 1000) + ), 300) : time; + + this.currentPage = { + x: posX, + y: posY, + pageX: x, + pageY: y + }; + + this.scrollTo(posX, posY, time, easing); + }, + + next: function (time, easing) { + var x = this.currentPage.pageX, + y = this.currentPage.pageY; + + x++; + + if ( x >= this.pages.length && this.hasVerticalScroll ) { + x = 0; + y++; + } + + this.goToPage(x, y, time, easing); + }, + + prev: function (time, easing) { + var x = this.currentPage.pageX, + y = this.currentPage.pageY; + + x--; + + if ( x < 0 && this.hasVerticalScroll ) { + x = 0; + y--; + } + + this.goToPage(x, y, time, easing); + }, + + _initKeys: function (e) { + // default key bindings + var keys = { + pageUp: 33, + pageDown: 34, + end: 35, + home: 36, + left: 37, + up: 38, + right: 39, + down: 40 + }; + var i; + + // if you give me characters I give you keycode + if ( typeof this.options.keyBindings == 'object' ) { + for ( i in this.options.keyBindings ) { + if ( typeof this.options.keyBindings[i] == 'string' ) { + this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0); + } + } + } else { + this.options.keyBindings = {}; + } + + for ( i in keys ) { + this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i]; + } + + utils.addEvent(window, 'keydown', this); + + this.on('destroy', function () { + utils.removeEvent(window, 'keydown', this); + }); + }, + + _key: function (e) { + if ( !this.enabled ) { + return; + } + + var snap = this.options.snap, // we are using this alot, better to cache it + newX = snap ? this.currentPage.pageX : this.x, + newY = snap ? this.currentPage.pageY : this.y, + now = utils.getTime(), + prevTime = this.keyTime || 0, + acceleration = 0.250, + pos; + + if ( this.options.useTransition && this.isInTransition ) { + pos = this.getComputedPosition(); + + this._translate(Math.round(pos.x), Math.round(pos.y)); + this.isInTransition = false; + } + + this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0; + + switch ( e.keyCode ) { + case this.options.keyBindings.pageUp: + if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { + newX += snap ? 1 : this.wrapperWidth; + } else { + newY += snap ? 1 : this.wrapperHeight; + } + break; + case this.options.keyBindings.pageDown: + if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { + newX -= snap ? 1 : this.wrapperWidth; + } else { + newY -= snap ? 1 : this.wrapperHeight; + } + break; + case this.options.keyBindings.end: + newX = snap ? this.pages.length-1 : this.maxScrollX; + newY = snap ? this.pages[0].length-1 : this.maxScrollY; + break; + case this.options.keyBindings.home: + newX = 0; + newY = 0; + break; + case this.options.keyBindings.left: + newX += snap ? -1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.up: + newY += snap ? 1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.right: + newX -= snap ? -1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.down: + newY -= snap ? 1 : 5 + this.keyAcceleration>>0; + break; + default: + return; + } + + if ( snap ) { + this.goToPage(newX, newY); + return; + } + + if ( newX > 0 ) { + newX = 0; + this.keyAcceleration = 0; + } else if ( newX < this.maxScrollX ) { + newX = this.maxScrollX; + this.keyAcceleration = 0; + } + + if ( newY > 0 ) { + newY = 0; + this.keyAcceleration = 0; + } else if ( newY < this.maxScrollY ) { + newY = this.maxScrollY; + this.keyAcceleration = 0; + } + + this.scrollTo(newX, newY, 0); + + this.keyTime = now; + }, + + _animate: function (destX, destY, duration, easingFn) { + var that = this, + startX = this.x, + startY = this.y, + startTime = utils.getTime(), + destTime = startTime + duration; + + function step () { + var now = utils.getTime(), + newX, newY, + easing; + + if ( now >= destTime ) { + that.isAnimating = false; + that._translate(destX, destY); + + if ( !that.resetPosition(that.options.bounceTime) ) { + that._execEvent('scrollEnd'); + } + + return; + } + + now = ( now - startTime ) / duration; + easing = easingFn(now); + newX = ( destX - startX ) * easing + startX; + newY = ( destY - startY ) * easing + startY; + that._translate(newX, newY); + + if ( that.isAnimating ) { + rAF(step); + } + } + + this.isAnimating = true; + step(); + }, + handleEvent: function (e) { + switch ( e.type ) { + case 'touchstart': + case 'pointerdown': + case 'MSPointerDown': + case 'mousedown': + this._start(e); + break; + case 'touchmove': + case 'pointermove': + case 'MSPointerMove': + case 'mousemove': + this._move(e); + break; + case 'touchend': + case 'pointerup': + case 'MSPointerUp': + case 'mouseup': + case 'touchcancel': + case 'pointercancel': + case 'MSPointerCancel': + case 'mousecancel': + this._end(e); + break; + case 'orientationchange': + case 'resize': + this._resize(); + break; + case 'transitionend': + case 'webkitTransitionEnd': + case 'oTransitionEnd': + case 'MSTransitionEnd': + this._transitionEnd(e); + break; + case 'wheel': + case 'DOMMouseScroll': + case 'mousewheel': + this._wheel(e); + break; + case 'keydown': + this._key(e); + break; + case 'click': + if ( this.enabled && !e._constructed ) { + e.preventDefault(); + e.stopPropagation(); + } + break; + } + } +}; +function createDefaultScrollbar (direction, interactive, type) { + var scrollbar = document.createElement('div'), + indicator = document.createElement('div'); + + if ( type === true ) { + scrollbar.style.cssText = 'position:absolute;z-index:9999'; + indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px'; + } + + indicator.className = 'iScrollIndicator'; + + if ( direction == 'h' ) { + if ( type === true ) { + scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0'; + indicator.style.height = '100%'; + } + scrollbar.className = 'iScrollHorizontalScrollbar'; + } else { + if ( type === true ) { + scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px'; + indicator.style.width = '100%'; + } + scrollbar.className = 'iScrollVerticalScrollbar'; + } + + scrollbar.style.cssText += ';overflow:hidden'; + + if ( !interactive ) { + scrollbar.style.pointerEvents = 'none'; + } + + scrollbar.appendChild(indicator); + + return scrollbar; +} + +function Indicator (scroller, options) { + this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el; + this.wrapperStyle = this.wrapper.style; + this.indicator = this.wrapper.children[0]; + this.indicatorStyle = this.indicator.style; + this.scroller = scroller; + + this.options = { + listenX: true, + listenY: true, + interactive: false, + resize: true, + defaultScrollbars: false, + shrink: false, + fade: false, + speedRatioX: 0, + speedRatioY: 0 + }; + + for ( var i in options ) { + this.options[i] = options[i]; + } + + this.sizeRatioX = 1; + this.sizeRatioY = 1; + this.maxPosX = 0; + this.maxPosY = 0; + + if ( this.options.interactive ) { + if ( !this.options.disableTouch ) { + utils.addEvent(this.indicator, 'touchstart', this); + utils.addEvent(window, 'touchend', this); + } + if ( !this.options.disablePointer ) { + utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); + } + if ( !this.options.disableMouse ) { + utils.addEvent(this.indicator, 'mousedown', this); + utils.addEvent(window, 'mouseup', this); + } + } + + if ( this.options.fade ) { + this.wrapperStyle[utils.style.transform] = this.scroller.translateZ; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms'; + // remove 0.0001ms + var self = this; + if(utils.isBadAndroid) { + rAF(function() { + if(self.wrapperStyle[durationProp] === '0.0001ms') { + self.wrapperStyle[durationProp] = '0s'; + } + }); + } + this.wrapperStyle.opacity = '0'; + } +} + +Indicator.prototype = { + handleEvent: function (e) { + switch ( e.type ) { + case 'touchstart': + case 'pointerdown': + case 'MSPointerDown': + case 'mousedown': + this._start(e); + break; + case 'touchmove': + case 'pointermove': + case 'MSPointerMove': + case 'mousemove': + this._move(e); + break; + case 'touchend': + case 'pointerup': + case 'MSPointerUp': + case 'mouseup': + case 'touchcancel': + case 'pointercancel': + case 'MSPointerCancel': + case 'mousecancel': + this._end(e); + break; + } + }, + + destroy: function () { + if ( this.options.fadeScrollbars ) { + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + } + if ( this.options.interactive ) { + utils.removeEvent(this.indicator, 'touchstart', this); + utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.removeEvent(this.indicator, 'mousedown', this); + + utils.removeEvent(window, 'touchmove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); + utils.removeEvent(window, 'mousemove', this); + + utils.removeEvent(window, 'touchend', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); + utils.removeEvent(window, 'mouseup', this); + } + + if ( this.options.defaultScrollbars ) { + this.wrapper.parentNode.removeChild(this.wrapper); + } + }, + + _start: function (e) { + var point = e.touches ? e.touches[0] : e; + + e.preventDefault(); + e.stopPropagation(); + + this.transitionTime(); + + this.initiated = true; + this.moved = false; + this.lastPointX = point.pageX; + this.lastPointY = point.pageY; + + this.startTime = utils.getTime(); + + if ( !this.options.disableTouch ) { + utils.addEvent(window, 'touchmove', this); + } + if ( !this.options.disablePointer ) { + utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); + } + if ( !this.options.disableMouse ) { + utils.addEvent(window, 'mousemove', this); + } + + this.scroller._execEvent('beforeScrollStart'); + }, + + _move: function (e) { + var point = e.touches ? e.touches[0] : e, + deltaX, deltaY, + newX, newY, + timestamp = utils.getTime(); + + if ( !this.moved ) { + this.scroller._execEvent('scrollStart'); + } + + this.moved = true; + + deltaX = point.pageX - this.lastPointX; + this.lastPointX = point.pageX; + + deltaY = point.pageY - this.lastPointY; + this.lastPointY = point.pageY; + + newX = this.x + deltaX; + newY = this.y + deltaY; + + this._pos(newX, newY); + +// INSERT POINT: indicator._move + + e.preventDefault(); + e.stopPropagation(); + }, + + _end: function (e) { + if ( !this.initiated ) { + return; + } + + this.initiated = false; + + e.preventDefault(); + e.stopPropagation(); + + utils.removeEvent(window, 'touchmove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); + utils.removeEvent(window, 'mousemove', this); + + if ( this.scroller.options.snap ) { + var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y); + + var time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(this.scroller.x - snap.x), 1000), + Math.min(Math.abs(this.scroller.y - snap.y), 1000) + ), 300); + + if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) { + this.scroller.directionX = 0; + this.scroller.directionY = 0; + this.scroller.currentPage = snap; + this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing); + } + } + + if ( this.moved ) { + this.scroller._execEvent('scrollEnd'); + } + }, + + transitionTime: function (time) { + time = time || 0; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + + this.indicatorStyle[durationProp] = time + 'ms'; + + if ( !time && utils.isBadAndroid ) { + this.indicatorStyle[durationProp] = '0.0001ms'; + // remove 0.0001ms + var self = this; + rAF(function() { + if(self.indicatorStyle[durationProp] === '0.0001ms') { + self.indicatorStyle[durationProp] = '0s'; + } + }); + } + }, + + transitionTimingFunction: function (easing) { + this.indicatorStyle[utils.style.transitionTimingFunction] = easing; + }, + + refresh: function () { + this.transitionTime(); + + if ( this.options.listenX && !this.options.listenY ) { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none'; + } else if ( this.options.listenY && !this.options.listenX ) { + this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none'; + } else { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none'; + } + + if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) { + utils.addClass(this.wrapper, 'iScrollBothScrollbars'); + utils.removeClass(this.wrapper, 'iScrollLoneScrollbar'); + + if ( this.options.defaultScrollbars && this.options.customStyle ) { + if ( this.options.listenX ) { + this.wrapper.style.right = '8px'; + } else { + this.wrapper.style.bottom = '8px'; + } + } + } else { + utils.removeClass(this.wrapper, 'iScrollBothScrollbars'); + utils.addClass(this.wrapper, 'iScrollLoneScrollbar'); + + if ( this.options.defaultScrollbars && this.options.customStyle ) { + if ( this.options.listenX ) { + this.wrapper.style.right = '2px'; + } else { + this.wrapper.style.bottom = '2px'; + } + } + } + + var r = this.wrapper.offsetHeight; // force refresh + + if ( this.options.listenX ) { + this.wrapperWidth = this.wrapper.clientWidth; + if ( this.options.resize ) { + this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8); + this.indicatorStyle.width = this.indicatorWidth + 'px'; + } else { + this.indicatorWidth = this.indicator.clientWidth; + } + + this.maxPosX = this.wrapperWidth - this.indicatorWidth; + + if ( this.options.shrink == 'clip' ) { + this.minBoundaryX = -this.indicatorWidth + 8; + this.maxBoundaryX = this.wrapperWidth - 8; + } else { + this.minBoundaryX = 0; + this.maxBoundaryX = this.maxPosX; + } + + this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX)); + } + + if ( this.options.listenY ) { + this.wrapperHeight = this.wrapper.clientHeight; + if ( this.options.resize ) { + this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8); + this.indicatorStyle.height = this.indicatorHeight + 'px'; + } else { + this.indicatorHeight = this.indicator.clientHeight; + } + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + + if ( this.options.shrink == 'clip' ) { + this.minBoundaryY = -this.indicatorHeight + 8; + this.maxBoundaryY = this.wrapperHeight - 8; + } else { + this.minBoundaryY = 0; + this.maxBoundaryY = this.maxPosY; + } + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY)); + } + + this.updatePosition(); + }, + + updatePosition: function () { + var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0, + y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0; + + if ( !this.options.ignoreBoundaries ) { + if ( x < this.minBoundaryX ) { + if ( this.options.shrink == 'scale' ) { + this.width = Math.max(this.indicatorWidth + x, 8); + this.indicatorStyle.width = this.width + 'px'; + } + x = this.minBoundaryX; + } else if ( x > this.maxBoundaryX ) { + if ( this.options.shrink == 'scale' ) { + this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8); + this.indicatorStyle.width = this.width + 'px'; + x = this.maxPosX + this.indicatorWidth - this.width; + } else { + x = this.maxBoundaryX; + } + } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) { + this.width = this.indicatorWidth; + this.indicatorStyle.width = this.width + 'px'; + } + + if ( y < this.minBoundaryY ) { + if ( this.options.shrink == 'scale' ) { + this.height = Math.max(this.indicatorHeight + y * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + } + y = this.minBoundaryY; + } else if ( y > this.maxBoundaryY ) { + if ( this.options.shrink == 'scale' ) { + this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + y = this.maxPosY + this.indicatorHeight - this.height; + } else { + y = this.maxBoundaryY; + } + } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) { + this.height = this.indicatorHeight; + this.indicatorStyle.height = this.height + 'px'; + } + } + + this.x = x; + this.y = y; + + if ( this.scroller.options.useTransform ) { + this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ; + } else { + this.indicatorStyle.left = x + 'px'; + this.indicatorStyle.top = y + 'px'; + } + }, + + _pos: function (x, y) { + if ( x < 0 ) { + x = 0; + } else if ( x > this.maxPosX ) { + x = this.maxPosX; + } + + if ( y < 0 ) { + y = 0; + } else if ( y > this.maxPosY ) { + y = this.maxPosY; + } + + x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x; + y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y; + + this.scroller.scrollTo(x, y); + }, + + fade: function (val, hold) { + if ( hold && !this.visible ) { + return; + } + + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + + var time = val ? 250 : 500, + delay = val ? 0 : 300; + + val = val ? '1' : '0'; + + this.wrapperStyle[utils.style.transitionDuration] = time + 'ms'; + + this.fadeTimeout = setTimeout((function (val) { + this.wrapperStyle.opacity = val; + this.visible = +val; + }).bind(this, val), delay); + } +}; + +IScroll.utils = utils; + +if ( typeof module != 'undefined' && module.exports ) { + module.exports = IScroll; +} else if ( typeof define == 'function' && define.amd ) { + define( function () { return IScroll; } ); +} else { + window.IScroll = IScroll; +} + +})(window, document, Math); + +/** + * Created by xty on 2016/8/4. + */ +var LogUtils = (function () { + var debug = false; + return { + log: function (msg) { + if (debug) { + console.log(msg); + } + }, error: function (msg) { + console.error(msg); + }, + enable: function () { + debug = true; + }, + disable: function () { + debug = false; + } + }; +})(); + +var DateUtils = (function () { + return { + _y: function (date) { + return date.getFullYear() + }, _m: function (date) { + return date.getMonth() + }, _rm: function (date) { + return date.getMonth() + 1 + }, _d: function (date) { + return date.getDate() + }, _h: function (date) { + return date.getHours() + }, _i: function (date) { + return date.getMinutes() + }, _s: function (date) { + return date.getSeconds() + } + + } +})(); + +var ComponentCountProvider = (function () { + var _dateTimeComponentCount = 0; + return { + incrementAndGet: function () { + return ++_dateTimeComponentCount; + } + } +})(); + +var ComponentDefine = (function () { + var define = {}; + define.dateLabels = { + year: "年", month: "月", day: "日", + hour: "时", minute: "分", second: "秒" + }; + define.presetType = ["time", "date", "datetime", "diy"]; + /** + * 验证类型是否支持 + * @param type 类型 + * @returns {boolean} 支持的类型返回true,不支持返回false. + * @see #presetType + */ + define.validateSupportType = function (type) { + + var support = false; + this.presetType.forEach(function (internalType) { + if (internalType === type) { + support = true; + } + + }); + + return support; + }; + return define; +})(); + +var ComponentUtils = (function () { + return { + /** + * 获取选中的值在数组中的索引 + * @param arr 数组 + * @param value 选中的值 + * @returns {number} 如果选中的值在数组中存在则返回在数组中的位置,不存在返回-1. + */ + getSelectedValueIndex: function (arr, value) { + var selectedValue = -1; + arr.forEach(function (arrValue, index) { + if (value === arrValue) { + selectedValue = index; + } + }); + + return selectedValue; + }, + /** + * 填充数组 + * @param start 开始值 + * @param count 填充数量 + * @returns {Array} 数组. + */ + fillArr: function (start, count) { + + var arr = []; + + for (var index = start; count >= index; index++) { + arr.push(index); + } + + return arr; + }, + /** + * 获取距离顶部的距离 + * @param lineHeight item的高度 + * @param position 位置 + * @returns {number} 距离顶部的距离 + */ + getTop: function (lineHeight, position) { + //lineHeight为item的高度. + return 0 - lineHeight * position; + }, + /** + * 将date转换为指定格式的json对象. + * @param date date对象 + * @returns {{h: *, i: *, s: *}} + *
+         *     {
+                h: DateUtils._h(date),
+                i: DateUtils._i(date),
+                s: DateUtils._s(date)
+                }
+         * 
+ */ + getDisplayedTime: function (date) { + + return { + h: DateUtils._h(date), + i: DateUtils._i(date), + s: DateUtils._s(date) + }; + + }, + /** + * 判断对象是否为date类型 + * @param date date对象 + * @returns {boolean} 为date对象返回true.否则返回false + */ + isDate: function (date) { + return "object" === typeof date && date instanceof Date + }, + getDayOfMonth: function (y, m) { + return 32 - new Date(y, m - 1, 32).getDate(); + } + }; + +})(); + +var DateTime = function (ele, options) { + + var picker = {}, currentDate = new Date(); + + var pickerArgs = {}; + pickerArgs.opts = options || DateTime.defaultOpts; + pickerArgs.domHook = ele; + + var render = { + /** + * 创建一个dom节点 + * @param html html内容 + * @returns {Node} dom节点 + */ + _createDomElement: function (html) { + var element = document.createElement("div"); + element.innerHTML = html; + return element.firstChild; + }, + _createWrapContainer: function (height) { + return this._createDomElement('
') + }, + _createWrapLine: function (top) { + return this._createDomElement('
'); + }, + _createWrapItem: function (guid, key, height) { + return this._createDomElement('
'); + }, + _createItemList: function (itemWidth) { + return this._createDomElement('
    '); + }, + _createItem: function (selected, value, unit) { + if (selected) { + return this._createDomElement('
  • ' + value + ' ' + unit + '
  • '); + } + return this._createDomElement("
  • " + value + " " + unit + "
  • "); + }, + _resetItems: function (itemList) { + var itemWidth = pickerArgs.opts.itemWidth | 80; + + var screenWidth = window.screen.width; + var calculatedWidth = screenWidth / itemList.length; + + if (calculatedWidth < itemWidth) { + itemList.pop(); + return this._resetItems(itemList); + } + return itemList; + }, + _render: function () { + var height = pickerArgs.height; + var lineHeight = pickerArgs.lineHeight; + + var container = this._createWrapContainer(height); + var top = (height / lineHeight - 1) / 2 * lineHeight; + var line = this._createWrapLine(top); + + container.appendChild(line); + LogUtils.log(pickerArgs.itemList); + var itemList = this._resetItems(pickerArgs.itemList); + LogUtils.log(itemList); + var itemWidth = 80, guid = picker.guid; + var renderObj = this; + itemList.forEach(function (key) { + + var item = picker[key]; + LogUtils.log(item); + var wrapItem = renderObj._createWrapItem(guid, key, height); + var domItemList = renderObj._createItemList(itemWidth); + var selectIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + var itemUnit = ComponentDefine.dateLabels[key]; + + domItemList.appendChild(renderObj._createDomElement("
  • ")); + domItemList.appendChild(renderObj._createDomElement("
  • ")); + + item.valueMap.forEach(function (value, index) { + var domItem = renderObj._createItem(selectIndex === index, value, itemUnit); + item.htmlList.push(domItem); + domItemList.appendChild(domItem); + }); + var emptyLiHook = renderObj._createDomElement("
  • "); + item.emptyLiHook = emptyLiHook; + item.listHook = domItemList; + domItemList.appendChild(emptyLiHook); + domItemList.appendChild(renderObj._createDomElement("
  • ")); + + wrapItem.appendChild(domItemList); + container.appendChild(wrapItem); + }); + + + pickerArgs.domHook.innerHTML = ""; + + pickerArgs.domHook.appendChild(container); + + + }, + _init: function (type) { + switch (type) { + case"date": + this._initDateConfig(); + break; + case"time": + this._initTimeConfig(); + break; + case"diy": + this._initDiyConfig(); + break; + case "datetime": + this._initDateTimeConfig(); + break; + } + }, + _getYearConfig: function (year, min, max) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, year - min), + value: year, + oldValue: year, + minValue: min, + maxValue: max, + htmlList: [], + valueMap: ComponentUtils.fillArr(min, max) + }; + }, + _getMonthConfig: function (month) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, month - 1), + value: month, + oldValue: month, + minValue: 1, + maxValue: 12, + htmlList: [], + valueMap: ComponentUtils.fillArr(1, 12) + }; + }, + _getDayConfig: function (day, dayOfMonth) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, day - 1), + value: day, + oldValue: day, + minValue: 1, + maxValue: dayOfMonth, + htmlList: [], + valueMap: ComponentUtils.fillArr(1, dayOfMonth) + }; + }, + _getHourConfig: function (hour) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, hour), + value: hour, + oldValue: hour, + htmlList: [], + valueMap: ComponentUtils.fillArr(0, 23) + }; + }, + _getMinuteConfig: function (minute) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, minute), + value: minute, + oldValue: minute, + htmlList: [], + valueMap: ComponentUtils.fillArr(0, 59) + }; + }, + _getSecondConfig: function (second) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, second), + value: second, + oldValue: second, + htmlList: [], + valueMap: ComponentUtils.fillArr(0, 59) + }; + }, + _getDiyConfig: function (key, value, valueMap) { + var diy = { + key: key, + value: value, + htmlList: [], + valueMap: valueMap + }; + + diy.index = ComponentUtils.getSelectedValueIndex(valueMap, value); + diy.top = ComponentUtils.getTop(pickerArgs.lineHeight, diy.index); + return diy; + }, + _initDateConfig: function () { + var config = pickerArgs.opts; + + var minYear = config.minDate.getFullYear(); + var maxYear = config.maxDate.getFullYear(); + + var date = ComponentUtils.isDate(config.date) ? config.date : currentDate; + + var displayConfig = { + y: DateUtils._y(date), + m: DateUtils._rm(date), + d: DateUtils._d(date) + }; + LogUtils.log(displayConfig); + + pickerArgs.itemList = ["year", "month", "day"]; + + var dayOfMonth = ComponentUtils.getDayOfMonth(displayConfig.y, displayConfig.m); + LogUtils.log("dayOfMonth= " + dayOfMonth); + + pickerArgs.dayOfMonth = dayOfMonth; + picker.year = { + top: ComponentUtils.getTop(pickerArgs.lineHeight, displayConfig.y - minYear), + value: displayConfig.y, + oldValue: displayConfig.y, + minValue: minYear, + maxValue: maxYear, + htmlList: [], + valueMap: ComponentUtils.fillArr(minYear, maxYear) + }; + + picker.month = { + top: ComponentUtils.getTop(pickerArgs.lineHeight, displayConfig.m - 1), + value: displayConfig.m, + oldValue: displayConfig.m, + minValue: 1, + maxValue: 12, + htmlList: [], + valueMap: ComponentUtils.fillArr(1, 12) + }; + + picker.day = { + top: ComponentUtils.getTop(pickerArgs.lineHeight, displayConfig.d - 1), + value: displayConfig.d, + oldValue: displayConfig.d, + minValue: 1, + maxValue: dayOfMonth, + htmlList: [], + valueMap: ComponentUtils.fillArr(1, dayOfMonth) + }; + + }, + _initTimeConfig: function () { + var config = pickerArgs.opts; + + var date = ComponentUtils.isDate(config.date) ? config.date : currentDate; + var displayConfig = { + h: DateUtils._h(date), + i: DateUtils._i(date), + s: DateUtils._s(date) + + }; + LogUtils.log(displayConfig); + + pickerArgs.itemList = ["hour", "minute", "second"]; + + var dayOfMonth = ComponentUtils.getDayOfMonth(displayConfig.y, displayConfig.m); + LogUtils.log("dayOfMonth= " + dayOfMonth); + + pickerArgs.dayOfMonth = dayOfMonth; + picker.hour = this._getHourConfig(displayConfig.h); + picker.minute = this._getMinuteConfig(displayConfig.i); + picker.second = this._getSecondConfig(displayConfig.s); + }, + _initDiyConfig: function () { + var config = pickerArgs.opts; + //数据不为空 + if (config.data) { + pickerArgs.itemList = []; + config.data.forEach(function (dataItem) { + picker[dataItem.key] = render._getDiyConfig(dataItem.key, dataItem.value, dataItem.resource); + ComponentDefine.dateLabels[dataItem.key] = dataItem.unit; + pickerArgs.itemList.push(dataItem.key); + }); + } + }, + _initDateTimeConfig: function () { + var config = pickerArgs.opts; + + var minYear = config.minDate.getFullYear(); + var maxYear = config.maxDate.getFullYear(); + + var date = ComponentUtils.isDate(config.date) ? config.date : currentDate; + + var displayConfig = { + y: DateUtils._y(date), + m: DateUtils._rm(date), + d: DateUtils._d(date), + h: DateUtils._h(date), + i: DateUtils._i(date), + s: DateUtils._s(date) + + }; + LogUtils.log(displayConfig); + + pickerArgs.itemList = ["year", "month", "day", "hour", "minute", "second"]; + + var dayOfMonth = ComponentUtils.getDayOfMonth(displayConfig.y, displayConfig.m); + LogUtils.log("dayOfMonth= " + dayOfMonth); + + pickerArgs.dayOfMonth = dayOfMonth; + picker.year = this._getYearConfig(displayConfig.y, minYear, maxYear); + picker.month = this._getMonthConfig(displayConfig.m); + picker.day = this._getDayConfig(displayConfig.d, dayOfMonth); + picker.hour = this._getHourConfig(displayConfig.h); + picker.minute = this._getMinuteConfig(displayConfig.i); + picker.second = this._getSecondConfig(displayConfig.s); + } + }; + + var valueHolder = { + _getSelectValue: function () { + var valueObject = {}; + + pickerArgs.itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + var top = item.top; + valueObject[key] = item.valueMap[Math.abs(top) / pickerArgs.lineHeight]; + } + + }); + + return valueObject; + } + }; + + var eventBinder = { + _init: function () { + var itemList = pickerArgs.itemList; + var binderObj = this; + itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + binderObj._bindItemEvent(item, key); + } + }) + }, + _destroy: function () { + var itemList = pickerArgs.itemList; + itemList.forEach(function (key) { + var item = picker[key]; + if (item && item.scroller) { + item.scroller.destroy(); + item.scroller = null; + } + }) + }, + _syncValue: function () { + var selectValue = valueHolder._getSelectValue(); + var itemList = pickerArgs.itemList; + itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + item.oldValue = item.value; + item.value = selectValue[key]; + + item.index = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + item.top = ComponentUtils.getTop(pickerArgs.lineHeight, item.index); + } + }); + + }, + _syncStatus: function () { + var itemList = pickerArgs.itemList; + itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + var oldIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.oldValue); + var currentIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + LogUtils.log("old index=" + oldIndex + ";current index=" + currentIndex); + //改变选中状态 + if (oldIndex !== currentIndex) { + item.htmlList[oldIndex].className = "item"; + item.htmlList[currentIndex].className = "item selected"; + } + } + + }); + + }, + _syncScroll: function () { + var itemList = pickerArgs.itemList; + itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + var selectedIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + var _top = ComponentUtils.getTop(pickerArgs.lineHeight, selectedIndex); + item.scroller.scrollToIng = true; + item.scroller.scrollTo(0, _top, 300, IScroll.utils.ease.circular); + } + }); + + }, + _callChangeCallback: function () { + var changeCallback = pickerArgs.opts.onChange; + if (changeCallback && "function" === typeof changeCallback) { + setTimeout(function () { + changeCallback.call(this, valueHolder._getSelectValue()); + }, 0) + } + }, + _fixDayOfMonth: function (syncKey) { + if ("month" === syncKey) { + var selectValue = valueHolder._getSelectValue(); + var dayOfMonth = ComponentUtils.getDayOfMonth(selectValue.year, selectValue.month - 1); + LogUtils.log("day of month = " + dayOfMonth); + var currentDayOfMonth = pickerArgs.dayOfMonth; + LogUtils.log("current day of month = " + currentDayOfMonth); + if (currentDayOfMonth !== dayOfMonth) { + var item = picker.day; + item.valueMap = ComponentUtils.fillArr(1, dayOfMonth); + if (dayOfMonth > currentDayOfMonth) { + var selectIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + var itemUnit = ComponentDefine.dateLabels["day"]; + + for (var index = currentDayOfMonth; dayOfMonth > index; index++) { + var newItem = render._createItem(selectIndex === index, item.valueMap[index], itemUnit); + item.htmlList.push(newItem); + item.listHook.insertBefore(newItem, item.emptyLiHook); + } + } else if (currentDayOfMonth > dayOfMonth) { + var offset = currentDayOfMonth - dayOfMonth; + for (var count = 0; count < offset; count++) { + item.htmlList.pop().remove(); + } + if (item.value > dayOfMonth) { + item.oldValue = dayOfMonth - 1; + item.value = dayOfMonth; + } + } + + pickerArgs.dayOfMonth = dayOfMonth; + } + picker.day.scroller.refresh(); + } + }, + _bindItemEvent: function (item, key) { + var scroller = this._createScroller(picker.guid, key); + scroller.key = key; + scroller.scrollToIng = true; + scroller.scrollTo(0, item.top, 0, IScroll.utils.ease.circular); + var lineHeight = pickerArgs.lineHeight; + var eventBinderObj = this; + scroller.on("scrollEnd", function () { + var y = this.y; + var offset = Math.round(y / lineHeight); + if (item.top !== y) { + item.top = lineHeight * offset; + + eventBinderObj._syncValue(); + eventBinderObj._fixDayOfMonth(key); + eventBinderObj._syncStatus(); + eventBinderObj._syncScroll(); + eventBinderObj._callChangeCallback(); + + } + }); + item.scroller = scroller; + }, + _createScroller: function (guid, key) { + return new IScroll("#ui-datetime-" + guid + "-ad-" + key, { + bounceEasing: "ease", + bounceTime: 600 + }); + } + }; + + picker.init = function () { + //生成id + picker.guid = ComponentCountProvider.incrementAndGet(); + var opts = pickerArgs.opts; + //如果没有提供高度则默认取200 + pickerArgs.height = opts.height || 200; + pickerArgs.lineHeight = opts.lineHeight || 40; + //判断类型是否支持 + var isSupport = ComponentDefine.validateSupportType(opts.type); + + if (!isSupport) { + LogUtils.error("unSupport type!"); + return; + } + //根据类型初始化组件 + render._init(opts.type); + //渲染html内容 + render._render(); + //绑定事件 + eventBinder._init(); + }; + + /** + * 显示组件 + */ + picker.show = function () { + if (pickerArgs.domHook) { + pickerArgs.domHook.style.display = "block"; + } + }; + + /** + * 隐藏组件 + */ + picker.hide = function () { + if (pickerArgs.domHook) { + pickerArgs.domHook.style.display = "none"; + } + }; + + picker.refreshEventBinder = function () { + eventBinder._destroy(); + eventBinder._init(); + }; + + return picker; + +}; + +/** + * 默认选项 + * @type {{type: string, date: Date, minDate: Date, maxDate: Date, data: *[], onChange: DateTime.defaultOpts.onChange}} + */ +DateTime.defaultOpts = { + type: 'date',//date,time,diy + date: new Date(), + minDate: new Date(), + maxDate: new Date(), + data: [{ + key: 'day', + resource: ["上午", "下午"], + value: "上午", + unit: '' + }, { + key: 'hour', + resource: ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"], + value: "09", + unit: '' + }, { + key: 'minute', + resource: ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10"], + value: "05", + unit: '' + }], + onChange: function (data) { + console.log("call back", data); + } +}; + + +/** + * Created by xty on 2016/8/18. + */ +(function ($) { + if (!$) { + return; + } + + $.fn.datetime = function (options) { + + return this.each(function () { + var _this = $(this); + + var data = _this.data('datetime'); + + var opts = typeof options === 'object' && options; + + if (!data) { + data = new DateTime(this, opts); + data.init(); + _this.data('datatime', data); + } + + if (typeof options === "string") { + data[options](); + + } + }) + }; + + // $('[data-datetime]').each(function () { + // var _this = $(this); + // _this.datetime(_this.data); + // }) + +}(Window.Zepto || window.jQuery)); \ No newline at end of file diff --git a/view/molistar/common/js/JQuery.datetime.min.js b/view/molistar/common/js/JQuery.datetime.min.js new file mode 100644 index 00000000..dbe72555 --- /dev/null +++ b/view/molistar/common/js/JQuery.datetime.min.js @@ -0,0 +1 @@ +!function(a,b,c){function d(c,d){this.wrapper="string"==typeof c?b.querySelector(c):c,this.scroller=this.wrapper.children[0],this.scrollerStyle=this.scroller.style,this.options={resizeScrollbars:!0,mouseWheelSpeed:20,snapThreshold:.334,disablePointer:!h.hasPointer,disableTouch:h.hasPointer||!h.hasTouch,disableMouse:h.hasPointer||h.hasTouch,startX:0,startY:0,scrollY:!0,directionLockThreshold:5,momentum:!0,bounce:!0,bounceTime:600,bounceEasing:"",preventDefault:!0,preventDefaultException:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT)$/},HWCompositing:!0,useTransition:!0,useTransform:!0,bindToWrapper:void 0===a.onmousedown};for(var e in d)this.options[e]=d[e];this.translateZ=this.options.HWCompositing&&h.hasPerspective?" translateZ(0)":"",this.options.useTransition=h.hasTransition&&this.options.useTransition,this.options.useTransform=h.hasTransform&&this.options.useTransform,this.options.eventPassthrough=!0===this.options.eventPassthrough?"vertical":this.options.eventPassthrough,this.options.preventDefault=!this.options.eventPassthrough&&this.options.preventDefault,this.options.scrollY="vertical"!=this.options.eventPassthrough&&this.options.scrollY,this.options.scrollX="horizontal"!=this.options.eventPassthrough&&this.options.scrollX,this.options.freeScroll=this.options.freeScroll&&!this.options.eventPassthrough,this.options.directionLockThreshold=this.options.eventPassthrough?0:this.options.directionLockThreshold,this.options.bounceEasing="string"==typeof this.options.bounceEasing?h.ease[this.options.bounceEasing]||h.ease.circular:this.options.bounceEasing,this.options.resizePolling=void 0===this.options.resizePolling?60:this.options.resizePolling,!0===this.options.tap&&(this.options.tap="tap"),this.options.useTransition||this.options.useTransform||/relative|absolute/i.test(this.scrollerStyle.position)||(this.scrollerStyle.position="relative"),"scale"==this.options.shrinkScrollbars&&(this.options.useTransition=!1),this.options.invertWheelDirection=this.options.invertWheelDirection?-1:1,this.x=0,this.y=0,this.directionX=0,this.directionY=0,this._events={},this._init(),this.refresh(),this.scrollTo(this.options.startX,this.options.startY),this.enable()}function e(a,c,d){var e=b.createElement("div"),f=b.createElement("div");return!0===d&&(e.style.cssText="position:absolute;z-index:9999",f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px"),f.className="iScrollIndicator","h"==a?(!0===d&&(e.style.cssText+=";height:7px;left:2px;right:2px;bottom:0",f.style.height="100%"),e.className="iScrollHorizontalScrollbar"):(!0===d&&(e.style.cssText+=";width:7px;bottom:2px;top:2px;right:1px",f.style.width="100%"),e.className="iScrollVerticalScrollbar"),e.style.cssText+=";overflow:hidden",c||(e.style.pointerEvents="none"),e.appendChild(f),e}function f(c,d){this.wrapper="string"==typeof d.el?b.querySelector(d.el):d.el,this.wrapperStyle=this.wrapper.style,this.indicator=this.wrapper.children[0],this.indicatorStyle=this.indicator.style,this.scroller=c,this.options={listenX:!0,listenY:!0,interactive:!1,resize:!0,defaultScrollbars:!1,shrink:!1,fade:!1,speedRatioX:0,speedRatioY:0};for(var e in d)this.options[e]=d[e];if(this.sizeRatioX=1,this.sizeRatioY=1,this.maxPosX=0,this.maxPosY=0,this.options.interactive&&(this.options.disableTouch||(h.addEvent(this.indicator,"touchstart",this),h.addEvent(a,"touchend",this)),this.options.disablePointer||(h.addEvent(this.indicator,h.prefixPointerEvent("pointerdown"),this),h.addEvent(a,h.prefixPointerEvent("pointerup"),this)),this.options.disableMouse||(h.addEvent(this.indicator,"mousedown",this),h.addEvent(a,"mouseup",this))),this.options.fade){this.wrapperStyle[h.style.transform]=this.scroller.translateZ;var f=h.style.transitionDuration;if(!f)return;this.wrapperStyle[f]=h.isBadAndroid?"0.0001ms":"0ms";var i=this;h.isBadAndroid&&g(function(){"0.0001ms"===i.wrapperStyle[f]&&(i.wrapperStyle[f]="0s")}),this.wrapperStyle.opacity="0"}}var g=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(b){a.setTimeout(b,1e3/60)},h=function(){function d(a){return!1!==g&&(""===g?a:g+a.charAt(0).toUpperCase()+a.substr(1))}var e={},f=b.createElement("div").style,g=function(){for(var a=["t","webkitT","MozT","msT","OT"],b=0,c=a.length;b0&&(h=f?f/2.5*(k/8):0,j=c.abs(a)+h,i=j/k),{destination:c.round(h),duration:i}};var h=d("transform");return e.extend(e,{hasTransform:!1!==h,hasPerspective:d("perspective")in f,hasTouch:"ontouchstart"in a,hasPointer:!(!a.PointerEvent&&!a.MSPointerEvent),hasTransition:d("transition")in f}),e.isBadAndroid=function(){var b=a.navigator.appVersion;if(/Android/.test(b)&&!/Chrome\/\d/.test(b)){var c=b.match(/Safari\/(\d+.\d)/);return!(c&&"object"==typeof c&&c.length>=2)||parseFloat(c[1])<535.19}return!1}(),e.extend(e.style={},{transform:h,transitionTimingFunction:d("transitionTimingFunction"),transitionDuration:d("transitionDuration"),transitionDelay:d("transitionDelay"),transformOrigin:d("transformOrigin")}),e.hasClass=function(a,b){return new RegExp("(^|\\s)"+b+"(\\s|$)").test(a.className)},e.addClass=function(a,b){if(!e.hasClass(a,b)){var c=a.className.split(" ");c.push(b),a.className=c.join(" ")}},e.removeClass=function(a,b){if(e.hasClass(a,b)){var c=new RegExp("(^|\\s)"+b+"(\\s|$)","g");a.className=a.className.replace(c," ")}},e.offset=function(a){for(var b=-a.offsetLeft,c=-a.offsetTop;a=a.offsetParent;)b-=a.offsetLeft,c-=a.offsetTop;return{left:b,top:c}},e.preventDefaultException=function(a,b){for(var c in b)if(b[c].test(a[c]))return!0;return!1},e.extend(e.eventType={},{touchstart:1,touchmove:1,touchend:1,mousedown:2,mousemove:2,mouseup:2,pointerdown:3,pointermove:3,pointerup:3,MSPointerDown:3,MSPointerMove:3,MSPointerUp:3}),e.extend(e.ease={},{quadratic:{style:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",fn:function(a){return a*(2-a)}},circular:{style:"cubic-bezier(0.1, 0.57, 0.1, 1)",fn:function(a){return c.sqrt(1- --a*a)}},back:{style:"cubic-bezier(0.175, 0.885, 0.32, 1.275)",fn:function(a){var b=4;return(a-=1)*a*((b+1)*a+b)+1}},bounce:{style:"",fn:function(a){return(a/=1)<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}},elastic:{style:"",fn:function(a){var b=.22;return 0===a?0:1==a?1:.4*c.pow(2,-10*a)*c.sin((a-b/4)*(2*c.PI)/b)+1}}}),e.tap=function(a,c){var d=b.createEvent("Event");d.initEvent(c,!0,!0),d.pageX=a.pageX,d.pageY=a.pageY,a.target.dispatchEvent(d)},e.click=function(c){var d,e=c.target;/(SELECT|INPUT|TEXTAREA)/i.test(e.tagName)||(d=b.createEvent(a.MouseEvent?"MouseEvents":"Event"),d.initEvent("click",!0,!0),d.view=c.view||a,d.detail=1,d.screenX=e.screenX||0,d.screenY=e.screenY||0,d.clientX=e.clientX||0,d.clientY=e.clientY||0,d.ctrlKey=!!c.ctrlKey,d.altKey=!!c.altKey,d.shiftKey=!!c.shiftKey,d.metaKey=!!c.metaKey,d.button=0,d.relatedTarget=null,d._constructed=!0,e.dispatchEvent(d))},e}();d.prototype={version:"5.2.0",_init:function(){this._initEvents(),(this.options.scrollbars||this.options.indicators)&&this._initIndicators(),this.options.mouseWheel&&this._initWheel(),this.options.snap&&this._initSnap(),this.options.keyBindings&&this._initKeys()},destroy:function(){this._initEvents(!0),clearTimeout(this.resizeTimeout),this.resizeTimeout=null,this._execEvent("destroy")},_transitionEnd:function(a){a.target==this.scroller&&this.isInTransition&&(this._transitionTime(),this.resetPosition(this.options.bounceTime)||(this.isInTransition=!1,this._execEvent("scrollEnd")))},_start:function(a){if(1!=h.eventType[a.type]){if(0!==(a.which?a.button:a.button<2?0:4==a.button?1:2))return}if(this.enabled&&(!this.initiated||h.eventType[a.type]===this.initiated)){!this.options.preventDefault||h.isBadAndroid||h.preventDefaultException(a.target,this.options.preventDefaultException)||a.preventDefault();var b,d=a.touches?a.touches[0]:a;this.initiated=h.eventType[a.type],this.moved=!1,this.distX=0,this.distY=0,this.directionX=0,this.directionY=0,this.directionLocked=0,this.startTime=h.getTime(),this.options.useTransition&&this.isInTransition?(this._transitionTime(),this.isInTransition=!1,b=this.getComputedPosition(),this._translate(c.round(b.x),c.round(b.y)),this._execEvent("scrollEnd")):!this.options.useTransition&&this.isAnimating&&(this.isAnimating=!1,this._execEvent("scrollEnd")),this.startX=this.x,this.startY=this.y,this.absStartX=this.x,this.absStartY=this.y,this.pointX=d.pageX,this.pointY=d.pageY,this._execEvent("beforeScrollStart")}},_move:function(a){if(this.enabled&&h.eventType[a.type]===this.initiated){this.options.preventDefault&&a.preventDefault();var b,d,e,f,g=a.touches?a.touches[0]:a,i=g.pageX-this.pointX,j=g.pageY-this.pointY,k=h.getTime();if(this.pointX=g.pageX,this.pointY=g.pageY,this.distX+=i,this.distY+=j,e=c.abs(this.distX),f=c.abs(this.distY),!(k-this.endTime>300&&e<10&&f<10)){if(this.directionLocked||this.options.freeScroll||(e>f+this.options.directionLockThreshold?this.directionLocked="h":f>=e+this.options.directionLockThreshold?this.directionLocked="v":this.directionLocked="n"),"h"==this.directionLocked){if("vertical"==this.options.eventPassthrough)a.preventDefault();else if("horizontal"==this.options.eventPassthrough)return void(this.initiated=!1);j=0}else if("v"==this.directionLocked){if("horizontal"==this.options.eventPassthrough)a.preventDefault();else if("vertical"==this.options.eventPassthrough)return void(this.initiated=!1);i=0}i=this.hasHorizontalScroll?i:0,j=this.hasVerticalScroll?j:0,b=this.x+i,d=this.y+j,(b>0||b0?0:this.maxScrollX),(d>0||d0?0:this.maxScrollY),this.directionX=i>0?-1:i<0?1:0,this.directionY=j>0?-1:j<0?1:0,this.moved||this._execEvent("scrollStart"),this.moved=!0,this._translate(b,d),k-this.startTime>300&&(this.startTime=k,this.startX=this.x,this.startY=this.y)}}},_end:function(a){if(this.enabled&&h.eventType[a.type]===this.initiated){this.options.preventDefault&&!h.preventDefaultException(a.target,this.options.preventDefaultException)&&a.preventDefault();var b,d,e=(a.changedTouches&&a.changedTouches[0],h.getTime()-this.startTime),f=c.round(this.x),g=c.round(this.y),i=c.abs(f-this.startX),j=c.abs(g-this.startY),k=0,l="";if(this.isInTransition=0,this.initiated=0,this.endTime=h.getTime(),!this.resetPosition(this.options.bounceTime)){if(this.scrollTo(f,g),!this.moved)return this.options.tap&&h.tap(a,this.options.tap),this.options.click&&h.click(a),void this._execEvent("scrollCancel");if(this._events.flick&&e<200&&i<100&&j<100)return void this._execEvent("flick");if(this.options.momentum&&e<300&&(b=this.hasHorizontalScroll?h.momentum(this.x,this.startX,e,this.maxScrollX,this.options.bounce?this.wrapperWidth:0,this.options.deceleration):{destination:f,duration:0},d=this.hasVerticalScroll?h.momentum(this.y,this.startY,e,this.maxScrollY,this.options.bounce?this.wrapperHeight:0,this.options.deceleration):{destination:g,duration:0},f=b.destination,g=d.destination,k=c.max(b.duration,d.duration),this.isInTransition=1),this.options.snap){var m=this._nearestSnap(f,g);this.currentPage=m,k=this.options.snapSpeed||c.max(c.max(c.min(c.abs(f-m.x),1e3),c.min(c.abs(g-m.y),1e3)),300),f=m.x,g=m.y,this.directionX=0,this.directionY=0,l=this.options.bounceEasing}if(f!=this.x||g!=this.y)return(f>0||f0||g0?b=0:this.x0?c=0:this.y-1&&this._events[a].splice(c,1)}},_execEvent:function(a){if(this._events[a]){var b=0,c=this._events[a].length;if(c)for(;b0;var e=this.options.useTransition&&d.style;!c||e?(e&&(this._transitionTimingFunction(d.style),this._transitionTime(c)),this._translate(a,b)):this._animate(a,b,c,d.fn)},scrollToElement:function(a,b,d,e,f){if(a=a.nodeType?a:this.scroller.querySelector(a)){var g=h.offset(a);g.left-=this.wrapperOffset.left,g.top-=this.wrapperOffset.top,!0===d&&(d=c.round(a.offsetWidth/2-this.wrapper.offsetWidth/2)),!0===e&&(e=c.round(a.offsetHeight/2-this.wrapper.offsetHeight/2)),g.left-=d||0,g.top-=e||0,g.left=g.left>0?0:g.left0?0:g.top0?e--:b<0&&e++,d>0?f--:d<0&&f++,void this.goToPage(e,f);e=this.x+c.round(this.hasHorizontalScroll?b:0),f=this.y+c.round(this.hasVerticalScroll?d:0),this.directionX=b>0?-1:b<0?1:0,this.directionY=d>0?-1:d<0?1:0,e>0?e=0:e0?f=0:f-this.scrollerWidth;){for(this.pages[h]=[],a=0,f=0;f>-this.scrollerHeight;)this.pages[h][a]={x:c.max(j,this.maxScrollX),y:c.max(f,this.maxScrollY),width:k,height:l,cx:j-d,cy:f-e},f-=l,a++;j-=k,h++}else for(g=this.options.snap,a=g.length,b=-1;hthis.maxScrollX&&i++;this.goToPage(this.currentPage.pageX||0,this.currentPage.pageY||0,0),this.options.snapThreshold%1==0?(this.snapThresholdX=this.options.snapThreshold,this.snapThresholdY=this.options.snapThreshold):(this.snapThresholdX=c.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width*this.options.snapThreshold),this.snapThresholdY=c.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height*this.options.snapThreshold))}}),this.on("flick",function(){var a=this.options.snapSpeed||c.max(c.max(c.min(c.abs(this.x-this.startX),1e3),c.min(c.abs(this.y-this.startY),1e3)),300);this.goToPage(this.currentPage.pageX+this.directionX,this.currentPage.pageY+this.directionY,a)})},_nearestSnap:function(a,b){if(!this.pages.length)return{x:0,y:0,pageX:0,pageY:0};var d=0,e=this.pages.length,f=0;if(c.abs(a-this.absStartX)0?a=0:a0?b=0:b=this.pages[d][0].cx){a=this.pages[d][0].x;break}for(e=this.pages[d].length;f=this.pages[0][f].cy){b=this.pages[0][f].y;break}return d==this.currentPage.pageX&&(d+=this.directionX,d<0?d=0:d>=this.pages.length&&(d=this.pages.length-1),a=this.pages[d][0].x),f==this.currentPage.pageY&&(f+=this.directionY,f<0?f=0:f>=this.pages[0].length&&(f=this.pages[0].length-1),b=this.pages[0][f].y),{x:a,y:b,pageX:d,pageY:f}},goToPage:function(a,b,d,e){e=e||this.options.bounceEasing,a>=this.pages.length?a=this.pages.length-1:a<0&&(a=0),b>=this.pages[a].length?b=this.pages[a].length-1:b<0&&(b=0);var f=this.pages[a][b].x,g=this.pages[a][b].y;d=void 0===d?this.options.snapSpeed||c.max(c.max(c.min(c.abs(f-this.x),1e3),c.min(c.abs(g-this.y),1e3)),300):d,this.currentPage={x:f,y:g,pageX:a,pageY:b},this.scrollTo(f,g,d,e)},next:function(a,b){var c=this.currentPage.pageX,d=this.currentPage.pageY;c++,c>=this.pages.length&&this.hasVerticalScroll&&(c=0,d++),this.goToPage(c,d,a,b)},prev:function(a,b){var c=this.currentPage.pageX,d=this.currentPage.pageY;c--,c<0&&this.hasVerticalScroll&&(c=0,d--),this.goToPage(c,d,a,b)},_initKeys:function(b){var c,d={pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40};if("object"==typeof this.options.keyBindings)for(c in this.options.keyBindings)"string"==typeof this.options.keyBindings[c]&&(this.options.keyBindings[c]=this.options.keyBindings[c].toUpperCase().charCodeAt(0));else this.options.keyBindings={};for(c in d)this.options.keyBindings[c]=this.options.keyBindings[c]||d[c];h.addEvent(a,"keydown",this),this.on("destroy",function(){h.removeEvent(a,"keydown",this)})},_key:function(a){if(this.enabled){var b,d=this.options.snap,e=d?this.currentPage.pageX:this.x,f=d?this.currentPage.pageY:this.y,g=h.getTime(),i=this.keyTime||0,j=.25;switch(this.options.useTransition&&this.isInTransition&&(b=this.getComputedPosition(),this._translate(c.round(b.x),c.round(b.y)),this.isInTransition=!1),this.keyAcceleration=g-i<200?c.min(this.keyAcceleration+j,50):0,a.keyCode){case this.options.keyBindings.pageUp:this.hasHorizontalScroll&&!this.hasVerticalScroll?e+=d?1:this.wrapperWidth:f+=d?1:this.wrapperHeight;break;case this.options.keyBindings.pageDown:this.hasHorizontalScroll&&!this.hasVerticalScroll?e-=d?1:this.wrapperWidth:f-=d?1:this.wrapperHeight;break;case this.options.keyBindings.end:e=d?this.pages.length-1:this.maxScrollX,f=d?this.pages[0].length-1:this.maxScrollY;break;case this.options.keyBindings.home:e=0,f=0;break;case this.options.keyBindings.left:e+=d?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.up:f+=d?1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.right:e-=d?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.down:f-=d?1:5+this.keyAcceleration>>0;break;default:return}if(d)return void this.goToPage(e,f);e>0?(e=0,this.keyAcceleration=0):e0?(f=0,this.keyAcceleration=0):f=l)return f.isAnimating=!1,f._translate(a,b),void(f.resetPosition(f.options.bounceTime)||f._execEvent("scrollEnd"));p=(p-k)/c,o=d(p),m=(a-i)*o+i,n=(b-j)*o+j,f._translate(m,n),f.isAnimating&&g(e)}var f=this,i=this.x,j=this.y,k=h.getTime(),l=k+c;this.isAnimating=!0,e()},handleEvent:function(a){switch(a.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(a);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(a);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(a);break;case"orientationchange":case"resize":this._resize();break;case"transitionend":case"webkitTransitionEnd":case"oTransitionEnd":case"MSTransitionEnd":this._transitionEnd(a);break;case"wheel":case"DOMMouseScroll":case"mousewheel":this._wheel(a);break;case"keydown":this._key(a);break;case"click":this.enabled&&!a._constructed&&(a.preventDefault(),a.stopPropagation())}}},f.prototype={handleEvent:function(a){switch(a.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(a);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(a);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(a)}},destroy:function(){this.options.fadeScrollbars&&(clearTimeout(this.fadeTimeout),this.fadeTimeout=null),this.options.interactive&&(h.removeEvent(this.indicator,"touchstart",this),h.removeEvent(this.indicator,h.prefixPointerEvent("pointerdown"),this),h.removeEvent(this.indicator,"mousedown",this),h.removeEvent(a,"touchmove",this),h.removeEvent(a,h.prefixPointerEvent("pointermove"),this),h.removeEvent(a,"mousemove",this),h.removeEvent(a,"touchend",this),h.removeEvent(a,h.prefixPointerEvent("pointerup"),this),h.removeEvent(a,"mouseup",this)),this.options.defaultScrollbars&&this.wrapper.parentNode.removeChild(this.wrapper)},_start:function(b){var c=b.touches?b.touches[0]:b;b.preventDefault(),b.stopPropagation(),this.transitionTime(),this.initiated=!0,this.moved=!1,this.lastPointX=c.pageX,this.lastPointY=c.pageY,this.startTime=h.getTime(),this.options.disableTouch||h.addEvent(a,"touchmove",this),this.options.disablePointer||h.addEvent(a,h.prefixPointerEvent("pointermove"),this),this.options.disableMouse||h.addEvent(a,"mousemove",this),this.scroller._execEvent("beforeScrollStart")},_move:function(a){var b,c,d,e,f=a.touches?a.touches[0]:a;h.getTime();this.moved||this.scroller._execEvent("scrollStart"),this.moved=!0,b=f.pageX-this.lastPointX,this.lastPointX=f.pageX,c=f.pageY-this.lastPointY,this.lastPointY=f.pageY,d=this.x+b,e=this.y+c,this._pos(d,e),a.preventDefault(),a.stopPropagation()},_end:function(b){if(this.initiated){if(this.initiated=!1,b.preventDefault(),b.stopPropagation(),h.removeEvent(a,"touchmove",this),h.removeEvent(a,h.prefixPointerEvent("pointermove"),this),h.removeEvent(a,"mousemove",this),this.scroller.options.snap){var d=this.scroller._nearestSnap(this.scroller.x,this.scroller.y),e=this.options.snapSpeed||c.max(c.max(c.min(c.abs(this.scroller.x-d.x),1e3),c.min(c.abs(this.scroller.y-d.y),1e3)),300);this.scroller.x==d.x&&this.scroller.y==d.y||(this.scroller.directionX=0,this.scroller.directionY=0,this.scroller.currentPage=d,this.scroller.scrollTo(d.x,d.y,e,this.scroller.options.bounceEasing))}this.moved&&this.scroller._execEvent("scrollEnd")}},transitionTime:function(a){a=a||0;var b=h.style.transitionDuration;if(b&&(this.indicatorStyle[b]=a+"ms",!a&&h.isBadAndroid)){this.indicatorStyle[b]="0.0001ms";var c=this;g(function(){"0.0001ms"===c.indicatorStyle[b]&&(c.indicatorStyle[b]="0s")})}},transitionTimingFunction:function(a){this.indicatorStyle[h.style.transitionTimingFunction]=a},refresh:function(){this.transitionTime(),this.options.listenX&&!this.options.listenY?this.indicatorStyle.display=this.scroller.hasHorizontalScroll?"block":"none":this.options.listenY&&!this.options.listenX?this.indicatorStyle.display=this.scroller.hasVerticalScroll?"block":"none":this.indicatorStyle.display=this.scroller.hasHorizontalScroll||this.scroller.hasVerticalScroll?"block":"none",this.scroller.hasHorizontalScroll&&this.scroller.hasVerticalScroll?(h.addClass(this.wrapper,"iScrollBothScrollbars"),h.removeClass(this.wrapper,"iScrollLoneScrollbar"),this.options.defaultScrollbars&&this.options.customStyle&&(this.options.listenX?this.wrapper.style.right="8px":this.wrapper.style.bottom="8px")):(h.removeClass(this.wrapper,"iScrollBothScrollbars"),h.addClass(this.wrapper,"iScrollLoneScrollbar"),this.options.defaultScrollbars&&this.options.customStyle&&(this.options.listenX?this.wrapper.style.right="2px":this.wrapper.style.bottom="2px"));this.wrapper.offsetHeight;this.options.listenX&&(this.wrapperWidth=this.wrapper.clientWidth,this.options.resize?(this.indicatorWidth=c.max(c.round(this.wrapperWidth*this.wrapperWidth/(this.scroller.scrollerWidth||this.wrapperWidth||1)),8),this.indicatorStyle.width=this.indicatorWidth+"px"):this.indicatorWidth=this.indicator.clientWidth,this.maxPosX=this.wrapperWidth-this.indicatorWidth,"clip"==this.options.shrink?(this.minBoundaryX=8-this.indicatorWidth,this.maxBoundaryX=this.wrapperWidth-8):(this.minBoundaryX=0,this.maxBoundaryX=this.maxPosX),this.sizeRatioX=this.options.speedRatioX||this.scroller.maxScrollX&&this.maxPosX/this.scroller.maxScrollX),this.options.listenY&&(this.wrapperHeight=this.wrapper.clientHeight,this.options.resize?(this.indicatorHeight=c.max(c.round(this.wrapperHeight*this.wrapperHeight/(this.scroller.scrollerHeight||this.wrapperHeight||1)),8),this.indicatorStyle.height=this.indicatorHeight+"px"):this.indicatorHeight=this.indicator.clientHeight,this.maxPosY=this.wrapperHeight-this.indicatorHeight,"clip"==this.options.shrink?(this.minBoundaryY=8-this.indicatorHeight,this.maxBoundaryY=this.wrapperHeight-8):(this.minBoundaryY=0,this.maxBoundaryY=this.maxPosY),this.maxPosY=this.wrapperHeight-this.indicatorHeight,this.sizeRatioY=this.options.speedRatioY||this.scroller.maxScrollY&&this.maxPosY/this.scroller.maxScrollY),this.updatePosition()},updatePosition:function(){var a=this.options.listenX&&c.round(this.sizeRatioX*this.scroller.x)||0,b=this.options.listenY&&c.round(this.sizeRatioY*this.scroller.y)||0;this.options.ignoreBoundaries||(athis.maxBoundaryX?"scale"==this.options.shrink?(this.width=c.max(this.indicatorWidth-(a-this.maxPosX),8),this.indicatorStyle.width=this.width+"px",a=this.maxPosX+this.indicatorWidth-this.width):a=this.maxBoundaryX:"scale"==this.options.shrink&&this.width!=this.indicatorWidth&&(this.width=this.indicatorWidth,this.indicatorStyle.width=this.width+"px"),bthis.maxBoundaryY?"scale"==this.options.shrink?(this.height=c.max(this.indicatorHeight-3*(b-this.maxPosY),8),this.indicatorStyle.height=this.height+"px",b=this.maxPosY+this.indicatorHeight-this.height):b=this.maxBoundaryY:"scale"==this.options.shrink&&this.height!=this.indicatorHeight&&(this.height=this.indicatorHeight,this.indicatorStyle.height=this.height+"px")),this.x=a,this.y=b,this.scroller.options.useTransform?this.indicatorStyle[h.style.transform]="translate("+a+"px,"+b+"px)"+this.scroller.translateZ:(this.indicatorStyle.left=a+"px",this.indicatorStyle.top=b+"px")},_pos:function(a,b){a<0?a=0:a>this.maxPosX&&(a=this.maxPosX),b<0?b=0:b>this.maxPosY&&(b=this.maxPosY),a=this.options.listenX?c.round(a/this.sizeRatioX):this.scroller.x,b=this.options.listenY?c.round(b/this.sizeRatioY):this.scroller.y,this.scroller.scrollTo(a,b)},fade:function(a,b){if(!b||this.visible){clearTimeout(this.fadeTimeout),this.fadeTimeout=null;var c=a?250:500,d=a?0:300;a=a?"1":"0",this.wrapperStyle[h.style.transitionDuration]=c+"ms",this.fadeTimeout=setTimeout(function(a){this.wrapperStyle.opacity=a,this.visible=+a}.bind(this,a),d)}}},d.utils=h,"undefined"!=typeof module&&module.exports?module.exports=d:"function"==typeof define&&define.amd?define(function(){return d}):a.IScroll=d}(window,document,Math);var LogUtils=function(){var a=!1;return{log:function(b){a&&console.log(b)},error:function(a){console.error(a)},enable:function(){a=!0},disable:function(){a=!1}}}(),DateUtils=function(){return{_y:function(a){return a.getFullYear()},_m:function(a){return a.getMonth()},_rm:function(a){return a.getMonth()+1},_d:function(a){return a.getDate()},_h:function(a){return a.getHours()},_i:function(a){return a.getMinutes()},_s:function(a){return a.getSeconds()}}}(),ComponentCountProvider=function(){var a=0;return{incrementAndGet:function(){return++a}}}(),ComponentDefine=function(){var a={};return a.dateLabels={year:"年",month:"月",day:"日",hour:"时",minute:"分",second:"秒"},a.presetType=["time","date","datetime","diy"],a.validateSupportType=function(a){var b=!1;return this.presetType.forEach(function(c){c===a&&(b=!0)}),b},a}(),ComponentUtils=function(){return{getSelectedValueIndex:function(a,b){var c=-1;return a.forEach(function(a,d){b===a&&(c=d)}),c},fillArr:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},getTop:function(a,b){return 0-a*b},getDisplayedTime:function(a){return{h:DateUtils._h(a),i:DateUtils._i(a),s:DateUtils._s(a)}},isDate:function(a){return"object"==typeof a&&a instanceof Date},getDayOfMonth:function(a,b){return 32-new Date(a,b-1,32).getDate()}}}(),DateTime=function(a,b){var c={},d=new Date,e={};e.opts=b||DateTime.defaultOpts,e.domHook=a;var f={_createDomElement:function(a){var b=document.createElement("div");return b.innerHTML=a,b.firstChild},_createWrapContainer:function(a){return this._createDomElement('
    ')},_createWrapLine:function(a){return this._createDomElement('
    ')},_createWrapItem:function(a,b,c){return this._createDomElement('
    ')},_createItemList:function(a){return this._createDomElement('
      ')},_createItem:function(a,b,c){return a?this._createDomElement('
    • '+b+" "+c+"
    • "):this._createDomElement("
    • "+b+" "+c+"
    • ")},_resetItems:function(a){var b=80|e.opts.itemWidth;return window.screen.width/a.length")),g.appendChild(j._createDomElement("
    • ")),e.valueMap.forEach(function(a,b){var c=j._createItem(h===b,a,k);e.htmlList.push(c),g.appendChild(c)});var l=j._createDomElement("
    • ");e.emptyLiHook=l,e.listHook=g,g.appendChild(l),g.appendChild(j._createDomElement("
    • ")),f.appendChild(g),d.appendChild(f)}),e.domHook.innerHTML="",e.domHook.appendChild(d)},_init:function(a){switch(a){case"date":this._initDateConfig();break;case"time":this._initTimeConfig();break;case"diy":this._initDiyConfig();break;case"datetime":this._initDateTimeConfig()}},_getYearConfig:function(a,b,c){return{top:ComponentUtils.getTop(e.lineHeight,a-b),value:a,oldValue:a,minValue:b,maxValue:c,htmlList:[],valueMap:ComponentUtils.fillArr(b,c)}},_getMonthConfig:function(a){return{top:ComponentUtils.getTop(e.lineHeight,a-1),value:a,oldValue:a,minValue:1,maxValue:12,htmlList:[],valueMap:ComponentUtils.fillArr(1,12)}},_getDayConfig:function(a,b){return{top:ComponentUtils.getTop(e.lineHeight,a-1),value:a,oldValue:a,minValue:1,maxValue:b,htmlList:[],valueMap:ComponentUtils.fillArr(1,b)}},_getHourConfig:function(a){return{top:ComponentUtils.getTop(e.lineHeight,a),value:a,oldValue:a,htmlList:[],valueMap:ComponentUtils.fillArr(0,23)}},_getMinuteConfig:function(a){return{top:ComponentUtils.getTop(e.lineHeight,a),value:a,oldValue:a,htmlList:[],valueMap:ComponentUtils.fillArr(0,59)}},_getSecondConfig:function(a){return{top:ComponentUtils.getTop(e.lineHeight,a),value:a,oldValue:a,htmlList:[],valueMap:ComponentUtils.fillArr(0,59)}},_getDiyConfig:function(a,b,c){var d={key:a,value:b,htmlList:[],valueMap:c};return d.index=ComponentUtils.getSelectedValueIndex(c,b),d.top=ComponentUtils.getTop(e.lineHeight,d.index),d},_initDateConfig:function(){var a=e.opts,b=a.minDate.getFullYear(),f=a.maxDate.getFullYear(),g=ComponentUtils.isDate(a.date)?a.date:d,h={y:DateUtils._y(g),m:DateUtils._rm(g),d:DateUtils._d(g)};LogUtils.log(h),e.itemList=["year","month","day"];var i=ComponentUtils.getDayOfMonth(h.y,h.m);LogUtils.log("dayOfMonth= "+i),e.dayOfMonth=i,c.year={top:ComponentUtils.getTop(e.lineHeight,h.y-b),value:h.y,oldValue:h.y,minValue:b,maxValue:f,htmlList:[],valueMap:ComponentUtils.fillArr(b,f)},c.month={top:ComponentUtils.getTop(e.lineHeight,h.m-1),value:h.m,oldValue:h.m,minValue:1,maxValue:12,htmlList:[],valueMap:ComponentUtils.fillArr(1,12)},c.day={top:ComponentUtils.getTop(e.lineHeight,h.d-1),value:h.d,oldValue:h.d,minValue:1,maxValue:i,htmlList:[],valueMap:ComponentUtils.fillArr(1,i)}},_initTimeConfig:function(){var a=e.opts,b=ComponentUtils.isDate(a.date)?a.date:d,f={h:DateUtils._h(b),i:DateUtils._i(b),s:DateUtils._s(b)};LogUtils.log(f),e.itemList=["hour","minute","second"];var g=ComponentUtils.getDayOfMonth(f.y,f.m);LogUtils.log("dayOfMonth= "+g),e.dayOfMonth=g,c.hour=this._getHourConfig(f.h),c.minute=this._getMinuteConfig(f.i),c.second=this._getSecondConfig(f.s)},_initDiyConfig:function(){var a=e.opts;a.data&&(e.itemList=[],a.data.forEach(function(a){c[a.key]=f._getDiyConfig(a.key,a.value,a.resource),ComponentDefine.dateLabels[a.key]=a.unit,e.itemList.push(a.key)}))},_initDateTimeConfig:function(){var a=e.opts,b=a.minDate.getFullYear(),f=a.maxDate.getFullYear(),g=ComponentUtils.isDate(a.date)?a.date:d,h={y:DateUtils._y(g),m:DateUtils._rm(g),d:DateUtils._d(g),h:DateUtils._h(g),i:DateUtils._i(g),s:DateUtils._s(g)};LogUtils.log(h),e.itemList=["year","month","day","hour","minute","second"];var i=ComponentUtils.getDayOfMonth(h.y,h.m);LogUtils.log("dayOfMonth= "+i),e.dayOfMonth=i,c.year=this._getYearConfig(h.y,b,f),c.month=this._getMonthConfig(h.m),c.day=this._getDayConfig(h.d,i),c.hour=this._getHourConfig(h.h),c.minute=this._getMinuteConfig(h.i),c.second=this._getSecondConfig(h.s)}},g={_getSelectValue:function(){var a={};return e.itemList.forEach(function(b){var d=c[b];if(d){var f=d.top;a[b]=d.valueMap[Math.abs(f)/e.lineHeight]}}),a}},h={_init:function(){var a=this;e.itemList.forEach(function(b){var d=c[b];d&&a._bindItemEvent(d,b)})},_destroy:function(){e.itemList.forEach(function(a){var b=c[a];b&&b.scroller&&(b.scroller.destroy(),b.scroller=null)})},_syncValue:function(){var a=g._getSelectValue();e.itemList.forEach(function(b){var d=c[b];d&&(d.oldValue=d.value,d.value=a[b],d.index=ComponentUtils.getSelectedValueIndex(d.valueMap,d.value),d.top=ComponentUtils.getTop(e.lineHeight,d.index))})},_syncStatus:function(){e.itemList.forEach(function(a){var b=c[a];if(b){var d=ComponentUtils.getSelectedValueIndex(b.valueMap,b.oldValue),e=ComponentUtils.getSelectedValueIndex(b.valueMap,b.value);LogUtils.log("old index="+d+";current index="+e),d!==e&&(b.htmlList[d].className="item",b.htmlList[e].className="item selected")}})},_syncScroll:function(){e.itemList.forEach(function(a){var b=c[a];if(b){var d=ComponentUtils.getSelectedValueIndex(b.valueMap,b.value),f=ComponentUtils.getTop(e.lineHeight,d);b.scroller.scrollToIng=!0,b.scroller.scrollTo(0,f,300,IScroll.utils.ease.circular)}})},_callChangeCallback:function(){var a=e.opts.onChange;a&&"function"==typeof a&&setTimeout(function(){a.call(this,g._getSelectValue())},0)},_fixDayOfMonth:function(a){if("month"===a){var b=g._getSelectValue(),d=ComponentUtils.getDayOfMonth(b.year,b.month-1);LogUtils.log("day of month = "+d);var h=e.dayOfMonth;if(LogUtils.log("current day of month = "+h),h!==d){var i=c.day;if(i.valueMap=ComponentUtils.fillArr(1,d),d>h)for(var j=ComponentUtils.getSelectedValueIndex(i.valueMap,i.value),k=ComponentDefine.dateLabels.day,l=h;d>l;l++){var m=f._createItem(j===l,i.valueMap[l],k);i.htmlList.push(m),i.listHook.insertBefore(m,i.emptyLiHook)}else if(h>d){for(var n=h-d,o=0;od&&(i.oldValue=d-1,i.value=d)}e.dayOfMonth=d}c.day.scroller.refresh()}},_bindItemEvent:function(a,b){var d=this._createScroller(c.guid,b);d.key=b,d.scrollToIng=!0,d.scrollTo(0,a.top,0,IScroll.utils.ease.circular);var f=e.lineHeight,g=this;d.on("scrollEnd",function(){var c=this.y,d=Math.round(c/f);a.top!==c&&(a.top=f*d,g._syncValue(),g._fixDayOfMonth(b),g._syncStatus(),g._syncScroll(),g._callChangeCallback())}),a.scroller=d},_createScroller:function(a,b){return new IScroll("#ui-datetime-"+a+"-ad-"+b,{bounceEasing:"ease",bounceTime:600})}};return c.init=function(){c.guid=ComponentCountProvider.incrementAndGet();var a=e.opts;if(e.height=a.height||200,e.lineHeight=a.lineHeight||40,!ComponentDefine.validateSupportType(a.type))return void LogUtils.error("unSupport type!");f._init(a.type),f._render(),h._init()},c.show=function(){e.domHook&&(e.domHook.style.display="block")},c.hide=function(){e.domHook&&(e.domHook.style.display="none")},c.refreshEventBinder=function(){h._destroy(),h._init()},c};DateTime.defaultOpts={type:"date",date:new Date,minDate:new Date,maxDate:new Date,data:[{key:"day",resource:["上午","下午"],value:"上午",unit:""},{key:"hour",resource:["01","02","03","04","05","06","07","08","09","10","11","12"],value:"09",unit:""},{key:"minute",resource:["01","02","03","04","05","06","07","08","09","10"],value:"05",unit:""}],onChange:function(a){console.log("call back",a)}},function(a){a&&(a.fn.datetime=function(b){return this.each(function(){var c=a(this),d=c.data("datetime"),e="object"==typeof b&&b;d||(d=new DateTime(this,e),d.init(),c.data("datatime",d)),"string"==typeof b&&d[b]()})})}(Window.Zepto||window.jQuery); \ No newline at end of file diff --git a/view/molistar/common/js/baiduStatis.js b/view/molistar/common/js/baiduStatis.js new file mode 100644 index 00000000..9f220cc0 --- /dev/null +++ b/view/molistar/common/js/baiduStatis.js @@ -0,0 +1,31 @@ +var _hmt = _hmt || []; +(function() { + var hostObj = hostCheck(); + + console.log(hostObj); + var src = ''; + if(hostObj.isRealTuTu || hostObj.isBetaTuTu){ + src = 'https://hm.baidu.com/hm.js?3d537e5bc5d69ff509bbd31502f0c899'; + }else if(hostObj.isOutside){ + src = 'https://hm.baidu.com/hm.js?a544f687a1fb6602746c3f5700d8484c'; + }else{ + src = ''; + } + + if(src){ + var hm = document.createElement("script"); + hm.src = src; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); + } +})(); + + +function hostCheck() { + var host = window.location.host; + return { + isRealTuTu: host.match('api.qxjiaoyou'), + isBetaTuTu: host.match('apibeta.qxjiaoyou'), + isOutside: host.match('www.18pk') + } +} diff --git a/view/molistar/common/js/bootstrap-datetimepicker.min.js b/view/molistar/common/js/bootstrap-datetimepicker.min.js new file mode 100644 index 00000000..512fcbbb --- /dev/null +++ b/view/molistar/common/js/bootstrap-datetimepicker.min.js @@ -0,0 +1 @@ +(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof exports==="object"){a(require("jquery"))}else{a(jQuery)}}}(function(f,c){if(!("indexOf" in Array.prototype)){Array.prototype.indexOf=function(k,j){if(j===c){j=0}if(j<0){j+=this.length}if(j<0){j=0}for(var l=this.length;j=this.startDate&&j<=this.endDate){this.date=j;this.setValue();this.viewDate=this.date;this.fill()}else{this.element.trigger({type:"outOfRange",date:j,startDate:this.startDate,endDate:this.endDate})}},setFormat:function(k){this.format=g.parseFormat(k,this.formatType);var j;if(this.isInput){j=this.element}else{if(this.component){j=this.element.find("input")}}if(j&&j.val()){this.setValue()}},setValue:function(){var j=this.getFormattedDate();if(!this.isInput){if(this.component){this.element.find("input").val(j)}this.element.data("date",j)}else{this.element.val(j)}if(this.linkField){f("#"+this.linkField).val(this.getFormattedDate(this.linkFormat))}},getFormattedDate:function(j){if(j==c){j=this.format}return g.formatDate(this.date,j,this.language,this.formatType)},setStartDate:function(j){this.startDate=j||-Infinity;if(this.startDate!==-Infinity){this.startDate=g.parseDate(this.startDate,this.format,this.language,this.formatType)}this.update();this.updateNavArrows()},setEndDate:function(j){this.endDate=j||Infinity;if(this.endDate!==Infinity){this.endDate=g.parseDate(this.endDate,this.format,this.language,this.formatType)}this.update();this.updateNavArrows()},setDatesDisabled:function(j){this.datesDisabled=j||[];if(!f.isArray(this.datesDisabled)){this.datesDisabled=this.datesDisabled.split(/,\s*/)}this.datesDisabled=f.map(this.datesDisabled,function(k){return g.parseDate(k,this.format,this.language,this.formatType).toDateString()});this.update();this.updateNavArrows()},setTitle:function(j,k){return this.picker.find(j).find("th:eq(1)").text(this.title===false?k:this.title)},setDaysOfWeekDisabled:function(j){this.daysOfWeekDisabled=j||[];if(!f.isArray(this.daysOfWeekDisabled)){this.daysOfWeekDisabled=this.daysOfWeekDisabled.split(/,\s*/)}this.daysOfWeekDisabled=f.map(this.daysOfWeekDisabled,function(k){return parseInt(k,10)});this.update();this.updateNavArrows()},setMinutesDisabled:function(j){this.minutesDisabled=j||[];if(!f.isArray(this.minutesDisabled)){this.minutesDisabled=this.minutesDisabled.split(/,\s*/)}this.minutesDisabled=f.map(this.minutesDisabled,function(k){return parseInt(k,10)});this.update();this.updateNavArrows()},setHoursDisabled:function(j){this.hoursDisabled=j||[];if(!f.isArray(this.hoursDisabled)){this.hoursDisabled=this.hoursDisabled.split(/,\s*/)}this.hoursDisabled=f.map(this.hoursDisabled,function(k){return parseInt(k,10)});this.update();this.updateNavArrows()},place:function(){if(this.isInline){return}if(!this.zIndex){var k=0;f("div").each(function(){var p=parseInt(f(this).css("zIndex"),10);if(p>k){k=p}});this.zIndex=k+10}var o,n,m,l;if(this.container instanceof f){l=this.container.offset()}else{l=f(this.container).offset()}if(this.component){o=this.component.offset();m=o.left;if(this.pickerPosition=="bottom-left"||this.pickerPosition=="top-left"){m+=this.component.outerWidth()-this.picker.outerWidth()}}else{o=this.element.offset();m=o.left;if(this.pickerPosition=="bottom-left"||this.pickerPosition=="top-left"){m+=this.element.outerWidth()-this.picker.outerWidth()}}var j=document.body.clientWidth||window.innerWidth;if(m+220>j){m=j-220}if(this.component){n=n-l.top+169;m=m-l.left+210}else{if(this.pickerPosition=="top-left"||this.pickerPosition=="top-right"){n=o.top-this.picker.outerHeight()}else{n=o.top+this.height}}this.picker.css({top:n,left:m,zIndex:this.zIndex})},update:function(){var j,k=false;if(arguments&&arguments.length&&(typeof arguments[0]==="string"||arguments[0] instanceof Date)){j=arguments[0];k=true}else{j=(this.isInput?this.element.val():this.element.find("input").val())||this.element.data("date")||this.initialDate;if(typeof j=="string"||j instanceof String){j=j.replace(/^\s+|\s+$/g,"")}}if(!j){j=new Date();k=false}this.date=g.parseDate(j,this.format,this.language,this.formatType);if(k){this.setValue()}if(this.datethis.endDate){this.viewDate=new Date(this.endDate)}else{this.viewDate=new Date(this.date)}}this.fill()},fillDow:function(){var j=this.weekStart,k="";while(j'+a[this.language].daysMin[(j++)%7]+""}k+="";this.picker.find(".datetimepicker-days thead").append(k)},fillMonths:function(){var k="",j=0;while(j<12){k+=''+a[this.language].monthsShort[j++]+""}this.picker.find(".datetimepicker-months td").html(k)},fill:function(){if(this.date==null||this.viewDate==null){return}var H=new Date(this.viewDate),u=H.getUTCFullYear(),I=H.getUTCMonth(),n=H.getUTCDate(),D=H.getUTCHours(),y=H.getUTCMinutes(),z=this.startDate!==-Infinity?this.startDate.getUTCFullYear():-Infinity,E=this.startDate!==-Infinity?this.startDate.getUTCMonth()+1:-Infinity,q=this.endDate!==Infinity?this.endDate.getUTCFullYear():Infinity,A=this.endDate!==Infinity?this.endDate.getUTCMonth()+1:Infinity,r=(new h(this.date.getUTCFullYear(),this.date.getUTCMonth(),this.date.getUTCDate())).valueOf(),G=new Date();this.setTitle(".datetimepicker-days",a[this.language].months[I]+" "+u);if(this.formatViewType=="time"){var k=this.getFormattedDate();this.setTitle(".datetimepicker-hours",k);this.setTitle(".datetimepicker-minutes",k)}else{this.setTitle(".datetimepicker-hours",n+" "+a[this.language].months[I]+" "+u);this.setTitle(".datetimepicker-minutes",n+" "+a[this.language].months[I]+" "+u)}this.picker.find("tfoot th.today").text(a[this.language].today||a.en.today).toggle(this.todayBtn!==false);this.picker.find("tfoot th.clear").text(a[this.language].clear||a.en.clear).toggle(this.clearBtn!==false);this.updateNavArrows();this.fillMonths();var K=h(u,I-1,28,0,0,0,0),C=g.getDaysInMonth(K.getUTCFullYear(),K.getUTCMonth());K.setUTCDate(C);K.setUTCDate(C-(K.getUTCDay()-this.weekStart+7)%7);var j=new Date(K);j.setUTCDate(j.getUTCDate()+42);j=j.valueOf();var s=[];var v;while(K.valueOf()")}v="";if(K.getUTCFullYear()u||(K.getUTCFullYear()==u&&K.getUTCMonth()>I)){v+=" new"}}if(this.todayHighlight&&K.getUTCFullYear()==G.getFullYear()&&K.getUTCMonth()==G.getMonth()&&K.getUTCDate()==G.getDate()){v+=" today"}if(K.valueOf()==r){v+=" active"}if((K.valueOf()+86400000)<=this.startDate||K.valueOf()>this.endDate||f.inArray(K.getUTCDay(),this.daysOfWeekDisabled)!==-1||f.inArray(K.toDateString(),this.datesDisabled)!==-1){v+=" disabled"}s.push(''+K.getUTCDate()+"");if(K.getUTCDay()==this.weekEnd){s.push("")}K.setUTCDate(K.getUTCDate()+1)}this.picker.find(".datetimepicker-days tbody").empty().append(s.join(""));s=[];var w="",F="",t="";var l=this.hoursDisabled||[];for(var B=0;B<24;B++){if(l.indexOf(B)!==-1){continue}var x=h(u,I,n,B);v="";if((x.valueOf()+3600000)<=this.startDate||x.valueOf()>this.endDate){v+=" disabled"}else{if(D==B){v+=" active"}}if(this.showMeridian&&a[this.language].meridiem.length==2){F=(B<12?a[this.language].meridiem[0]:a[this.language].meridiem[1]);if(F!=t){if(t!=""){s.push("")}s.push('
      '+F.toUpperCase()+"")}t=F;w=(B%12?B%12:12);s.push(''+w+"");if(B==23){s.push("
      ")}}else{w=B+":00";s.push(''+w+"")}}this.picker.find(".datetimepicker-hours td").html(s.join(""));s=[];w="",F="",t="";var m=this.minutesDisabled||[];for(var B=0;B<60;B+=this.minuteStep){if(m.indexOf(B)!==-1){continue}var x=h(u,I,n,D,B,0);v="";if(x.valueOf()this.endDate){v+=" disabled"}else{if(Math.floor(y/this.minuteStep)==Math.floor(B/this.minuteStep)){v+=" active"}}if(this.showMeridian&&a[this.language].meridiem.length==2){F=(D<12?a[this.language].meridiem[0]:a[this.language].meridiem[1]);if(F!=t){if(t!=""){s.push("")}s.push('
      '+F.toUpperCase()+"")}t=F;w=(D%12?D%12:12);s.push(''+w+":"+(B<10?"0"+B:B)+"");if(B==59){s.push("
      ")}}else{w=B+":00";s.push(''+D+":"+(B<10?"0"+B:B)+"")}}this.picker.find(".datetimepicker-minutes td").html(s.join(""));var L=this.date.getUTCFullYear();var p=this.setTitle(".datetimepicker-months",u).end().find("span").removeClass("active");if(L==u){var o=p.length-12;p.eq(this.date.getUTCMonth()+o).addClass("active")}if(uq){p.addClass("disabled")}if(u==z){p.slice(0,E+1).addClass("disabled")}if(u==q){p.slice(A).addClass("disabled")}s="";u=parseInt(u/10,10)*10;var J=this.setTitle(".datetimepicker-years",u+"-"+(u+9)).end().find("td");u-=1;for(var B=-1;B<11;B++){s+='q?" disabled":"")+'">'+u+"";u+=1}J.html(s);this.place()},updateNavArrows:function(){var n=new Date(this.viewDate),l=n.getUTCFullYear(),m=n.getUTCMonth(),k=n.getUTCDate(),j=n.getUTCHours();switch(this.viewMode){case 0:if(this.startDate!==-Infinity&&l<=this.startDate.getUTCFullYear()&&m<=this.startDate.getUTCMonth()&&k<=this.startDate.getUTCDate()&&j<=this.startDate.getUTCHours()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(this.endDate!==Infinity&&l>=this.endDate.getUTCFullYear()&&m>=this.endDate.getUTCMonth()&&k>=this.endDate.getUTCDate()&&j>=this.endDate.getUTCHours()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 1:if(this.startDate!==-Infinity&&l<=this.startDate.getUTCFullYear()&&m<=this.startDate.getUTCMonth()&&k<=this.startDate.getUTCDate()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(this.endDate!==Infinity&&l>=this.endDate.getUTCFullYear()&&m>=this.endDate.getUTCMonth()&&k>=this.endDate.getUTCDate()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 2:if(this.startDate!==-Infinity&&l<=this.startDate.getUTCFullYear()&&m<=this.startDate.getUTCMonth()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(this.endDate!==Infinity&&l>=this.endDate.getUTCFullYear()&&m>=this.endDate.getUTCMonth()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 3:case 4:if(this.startDate!==-Infinity&&l<=this.startDate.getUTCFullYear()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(this.endDate!==Infinity&&l>=this.endDate.getUTCFullYear()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break}},mousewheel:function(k){k.preventDefault();k.stopPropagation();if(this.wheelPause){return}this.wheelPause=true;var j=k.originalEvent;var m=j.wheelDelta;var l=m>0?1:(m===0)?0:-1;if(this.wheelViewModeNavigationInverseDirection){l=-l}this.showMode(l);setTimeout(f.proxy(function(){this.wheelPause=false},this),this.wheelViewModeNavigationDelay)},click:function(n){n.stopPropagation();n.preventDefault();var o=f(n.target).closest("span, td, th, legend");if(o.is("."+this.icontype)){o=f(o).parent().closest("span, td, th, legend")}if(o.length==1){if(o.is(".disabled")){this.element.trigger({type:"outOfRange",date:this.viewDate,startDate:this.startDate,endDate:this.endDate});return}switch(o[0].nodeName.toLowerCase()){case"th":switch(o[0].className){case"switch":this.showMode(1);break;case"prev":case"next":var j=g.modes[this.viewMode].navStep*(o[0].className=="prev"?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveHour(this.viewDate,j);break;case 1:this.viewDate=this.moveDate(this.viewDate,j);break;case 2:this.viewDate=this.moveMonth(this.viewDate,j);break;case 3:case 4:this.viewDate=this.moveYear(this.viewDate,j);break}this.fill();this.element.trigger({type:o[0].className+":"+this.convertViewModeText(this.viewMode),date:this.viewDate,startDate:this.startDate,endDate:this.endDate});break;case"clear":this.reset();if(this.autoclose){this.hide()}break;case"today":var k=new Date();k=h(k.getFullYear(),k.getMonth(),k.getDate(),k.getHours(),k.getMinutes(),k.getSeconds(),0);if(kthis.endDate){k=this.endDate}}this.viewMode=this.startViewMode;this.showMode(0);this._setDate(k);this.fill();if(this.autoclose){this.hide()}break}break;case"span":if(!o.is(".disabled")){var q=this.viewDate.getUTCFullYear(),p=this.viewDate.getUTCMonth(),r=this.viewDate.getUTCDate(),s=this.viewDate.getUTCHours(),l=this.viewDate.getUTCMinutes(),t=this.viewDate.getUTCSeconds();if(o.is(".month")){this.viewDate.setUTCDate(1);p=o.parent().find("span").index(o);r=this.viewDate.getUTCDate();this.viewDate.setUTCMonth(p);this.element.trigger({type:"changeMonth",date:this.viewDate});if(this.viewSelect>=3){this._setDate(h(q,p,r,s,l,t,0))}}else{if(o.is(".year")){this.viewDate.setUTCDate(1);q=parseInt(o.text(),10)||0;this.viewDate.setUTCFullYear(q);this.element.trigger({type:"changeYear",date:this.viewDate});if(this.viewSelect>=4){this._setDate(h(q,p,r,s,l,t,0))}}else{if(o.is(".hour")){s=parseInt(o.text(),10)||0;if(o.hasClass("hour_am")||o.hasClass("hour_pm")){if(s==12&&o.hasClass("hour_am")){s=0}else{if(s!=12&&o.hasClass("hour_pm")){s+=12}}}this.viewDate.setUTCHours(s);this.element.trigger({type:"changeHour",date:this.viewDate});if(this.viewSelect>=1){this._setDate(h(q,p,r,s,l,t,0))}}else{if(o.is(".minute")){l=parseInt(o.text().substr(o.text().indexOf(":")+1),10)||0;this.viewDate.setUTCMinutes(l);this.element.trigger({type:"changeMinute",date:this.viewDate});if(this.viewSelect>=0){this._setDate(h(q,p,r,s,l,t,0))}}}}}if(this.viewMode!=0){var m=this.viewMode;this.showMode(-1);this.fill();if(m==this.viewMode&&this.autoclose){this.hide()}}else{this.fill();if(this.autoclose){this.hide()}}}break;case"td":if(o.is(".day")&&!o.is(".disabled")){var r=parseInt(o.text(),10)||1;var q=this.viewDate.getUTCFullYear(),p=this.viewDate.getUTCMonth(),s=this.viewDate.getUTCHours(),l=this.viewDate.getUTCMinutes(),t=this.viewDate.getUTCSeconds();if(o.is(".old")){if(p===0){p=11;q-=1}else{p-=1}}else{if(o.is(".new")){if(p==11){p=0;q+=1}else{p+=1}}}this.viewDate.setUTCFullYear(q);this.viewDate.setUTCMonth(p,r);this.element.trigger({type:"changeDay",date:this.viewDate});if(this.viewSelect>=2){this._setDate(h(q,p,r,s,l,t,0))}}var m=this.viewMode;this.showMode(-1);this.fill();if(m==this.viewMode&&this.autoclose){this.hide()}break}}},_setDate:function(j,l){if(!l||l=="date"){this.date=j}if(!l||l=="view"){this.viewDate=j}this.fill();this.setValue();var k;if(this.isInput){k=this.element}else{if(this.component){k=this.element.find("input")}}if(k){k.change();if(this.autoclose&&(!l||l=="date")){}}this.element.trigger({type:"changeDate",date:this.getDate()});if(j==null){this.date=this.viewDate}},moveMinute:function(k,j){if(!j){return k}var l=new Date(k.valueOf());l.setUTCMinutes(l.getUTCMinutes()+(j*this.minuteStep));return l},moveHour:function(k,j){if(!j){return k}var l=new Date(k.valueOf());l.setUTCHours(l.getUTCHours()+j);return l},moveDate:function(k,j){if(!j){return k}var l=new Date(k.valueOf());l.setUTCDate(l.getUTCDate()+j);return l},moveMonth:function(j,k){if(!k){return j}var n=new Date(j.valueOf()),r=n.getUTCDate(),o=n.getUTCMonth(),m=Math.abs(k),q,p;k=k>0?1:-1;if(m==1){p=k==-1?function(){return n.getUTCMonth()==o}:function(){return n.getUTCMonth()!=q};q=o+k;n.setUTCMonth(q);if(q<0||q>11){q=(q+12)%12}}else{for(var l=0;l=this.startDate&&j<=this.endDate},keydown:function(n){if(this.picker.is(":not(:visible)")){if(n.keyCode==27){this.show()}return}var p=false,k,q,o,r,j;switch(n.keyCode){case 27:this.hide();n.preventDefault();break;case 37:case 39:if(!this.keyboardNavigation){break}k=n.keyCode==37?-1:1;viewMode=this.viewMode;if(n.ctrlKey){viewMode+=2}else{if(n.shiftKey){viewMode+=1}}if(viewMode==4){r=this.moveYear(this.date,k);j=this.moveYear(this.viewDate,k)}else{if(viewMode==3){r=this.moveMonth(this.date,k);j=this.moveMonth(this.viewDate,k)}else{if(viewMode==2){r=this.moveDate(this.date,k);j=this.moveDate(this.viewDate,k)}else{if(viewMode==1){r=this.moveHour(this.date,k);j=this.moveHour(this.viewDate,k)}else{if(viewMode==0){r=this.moveMinute(this.date,k);j=this.moveMinute(this.viewDate,k)}}}}}if(this.dateWithinRange(r)){this.date=r;this.viewDate=j;this.setValue();this.update();n.preventDefault();p=true}break;case 38:case 40:if(!this.keyboardNavigation){break}k=n.keyCode==38?-1:1;viewMode=this.viewMode;if(n.ctrlKey){viewMode+=2}else{if(n.shiftKey){viewMode+=1}}if(viewMode==4){r=this.moveYear(this.date,k);j=this.moveYear(this.viewDate,k)}else{if(viewMode==3){r=this.moveMonth(this.date,k);j=this.moveMonth(this.viewDate,k)}else{if(viewMode==2){r=this.moveDate(this.date,k*7);j=this.moveDate(this.viewDate,k*7)}else{if(viewMode==1){if(this.showMeridian){r=this.moveHour(this.date,k*6);j=this.moveHour(this.viewDate,k*6)}else{r=this.moveHour(this.date,k*4);j=this.moveHour(this.viewDate,k*4)}}else{if(viewMode==0){r=this.moveMinute(this.date,k*4);j=this.moveMinute(this.viewDate,k*4)}}}}}if(this.dateWithinRange(r)){this.date=r;this.viewDate=j;this.setValue();this.update();n.preventDefault();p=true}break;case 13:if(this.viewMode!=0){var m=this.viewMode;this.showMode(-1);this.fill();if(m==this.viewMode&&this.autoclose){this.hide()}}else{this.fill();if(this.autoclose){this.hide()}}n.preventDefault();break;case 9:this.hide();break}if(p){var l;if(this.isInput){l=this.element}else{if(this.component){l=this.element.find("input")}}if(l){l.change()}this.element.trigger({type:"changeDate",date:this.getDate()})}},showMode:function(j){if(j){var k=Math.max(0,Math.min(g.modes.length-1,this.viewMode+j));if(k>=this.minView&&k<=this.maxView){this.element.trigger({type:"changeMode",date:this.viewDate,oldViewMode:this.viewMode,newViewMode:k});this.viewMode=k}}this.picker.find(">div").hide().filter(".datetimepicker-"+g.modes[this.viewMode].clsName).css("display","block");this.updateNavArrows()},reset:function(j){this._setDate(null,"date")},convertViewModeText:function(j){switch(j){case 4:return"decade";case 3:return"year";case 2:return"month";case 1:return"day";case 0:return"hour"}}};var b=f.fn.datetimepicker;f.fn.datetimepicker=function(l){var j=Array.apply(null,arguments);j.shift();var k;this.each(function(){var o=f(this),n=o.data("datetimepicker"),m=typeof l=="object"&&l;if(!n){o.data("datetimepicker",(n=new i(this,f.extend({},f.fn.datetimepicker.defaults,m))))}if(typeof l=="string"&&typeof n[l]=="function"){k=n[l].apply(n,j);if(k!==c){return false}}});if(k!==c){return k}else{return this}};f.fn.datetimepicker.defaults={};f.fn.datetimepicker.Constructor=i;var a=f.fn.datetimepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["am","pm"],suffix:["st","nd","rd","th"],today:"Today",clear:"Clear"}};var g={modes:[{clsName:"minutes",navFnc:"Hours",navStep:1},{clsName:"hours",navFnc:"Date",navStep:1},{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(j){return(((j%4===0)&&(j%100!==0))||(j%400===0))},getDaysInMonth:function(j,k){return[31,(g.isLeapYear(j)?29:28),31,30,31,30,31,31,30,31,30,31][k]},getDefaultFormat:function(j,k){if(j=="standard"){if(k=="input"){return"yyyy-mm-dd hh:ii"}else{return"yyyy-mm-dd hh:ii:ss"}}else{if(j=="php"){if(k=="input"){return"Y-m-d H:i"}else{return"Y-m-d H:i:s"}}else{throw new Error("Invalid format type.")}}},validParts:function(j){if(j=="standard"){return/t|hh?|HH?|p|P|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g}else{if(j=="php"){return/[dDjlNwzFmMnStyYaABgGhHis]/g}else{throw new Error("Invalid format type.")}}},nonpunctuation:/[^ -\/:-@\[-`{-~\t\n\rTZ]+/g,parseFormat:function(m,k){var j=m.replace(this.validParts(k),"\0").split("\0"),l=m.match(this.validParts(k));if(!j||!j.length||!l||l.length==0){throw new Error("Invalid date format.")}return{separators:j,parts:l}},parseDate:function(n,w,q,u){if(n instanceof Date){var y=new Date(n.valueOf()-n.getTimezoneOffset()*60000);y.setMilliseconds(0);return y}if(/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(n)){w=this.parseFormat("yyyy-mm-dd",u)}if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(n)){w=this.parseFormat("yyyy-mm-dd hh:ii",u)}if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(n)){w=this.parseFormat("yyyy-mm-dd hh:ii:ss",u)}if(/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(n)){var z=/([-+]\d+)([dmwy])/,o=n.match(/([-+]\d+)([dmwy])/g),j,m;n=new Date();for(var p=0;p',headTemplateV3:' ',contTemplate:'',footTemplate:''};g.template='
      '+g.headTemplate+g.contTemplate+g.footTemplate+'
      '+g.headTemplate+g.contTemplate+g.footTemplate+'
      '+g.headTemplate+""+g.footTemplate+'
      '+g.headTemplate+g.contTemplate+g.footTemplate+'
      '+g.headTemplate+g.contTemplate+g.footTemplate+"
      ";g.templateV3='
      '+g.headTemplateV3+g.contTemplate+g.footTemplate+'
      '+g.headTemplateV3+g.contTemplate+g.footTemplate+'
      '+g.headTemplateV3+""+g.footTemplate+'
      '+g.headTemplateV3+g.contTemplate+g.footTemplate+'
      '+g.headTemplateV3+g.contTemplate+g.footTemplate+"
      ";f.fn.datetimepicker.DPGlobal=g;f.fn.datetimepicker.noConflict=function(){f.fn.datetimepicker=b;return this};f(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api",'[data-provide="datetimepicker"]',function(k){var j=f(this);if(j.data("datetimepicker")){return}k.preventDefault();j.datetimepicker("show")});f(function(){f('[data-provide="datetimepicker-inline"]').datetimepicker()})})); \ No newline at end of file diff --git a/view/molistar/common/js/bootstrap-table.min.js b/view/molistar/common/js/bootstrap-table.min.js new file mode 100644 index 00000000..ae407d4c --- /dev/null +++ b/view/molistar/common/js/bootstrap-table.min.js @@ -0,0 +1,9 @@ +/* +* bootstrap-table - v1.12.1 - 2018-03-12 +* https://github.com/wenzhixin/bootstrap-table +* Copyright (c) 2018 zhixin wen +* Licensed MIT License +*/ +!function(a){"use strict";var b=3;try{b=parseInt(a.fn.dropdown.Constructor.VERSION,10)}catch(c){}var d={3:{buttonsClass:"default",iconsPrefix:"glyphicon",icons:{paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",toggleOff:"glyphicon-list-alt icon-list-alt",toggleOn:"glyphicon-list-alt icon-list-alt",columns:"glyphicon-th icon-th",detailOpen:"glyphicon-plus icon-plus",detailClose:"glyphicon-minus icon-minus",fullscreen:"glyphicon-fullscreen"},pullClass:"pull",toobarDropdowHtml:['"],toobarDropdowItemHtml:'
    • ',pageDropdownHtml:['"],pageDropdownItemHtml:'
      '},4:{buttonsClass:"secondary",iconsPrefix:"fa",icons:{paginationSwitchDown:"fa-toggle-down",paginationSwitchUp:"fa-toggle-up",refresh:"fa-refresh",toggleOff:"fa-toggle-off",toggleOn:"fa-toggle-on",columns:"fa-th-list",detailOpen:"fa-plus",detailClose:"fa-minus",fullscreen:"fa-arrows-alt"},pullClass:"float",toobarDropdowHtml:['"],toobarDropdowItemHtml:'',pageDropdownHtml:['"],pageDropdownItemHtml:'%s'}}[b],e=null,f=function(a){var b=arguments,c=!0,d=1;return a=a.replace(/%s/g,function(){var a=b[d++];return"undefined"==typeof a?(c=!1,""):a}),c?a:""},g=function(b,c,d,e){var f="";return a.each(b,function(a,b){return b[c]===e?(f=b[d],!1):!0}),f},h=function(b){var c,d,e,f=0,g=[];for(c=0;cd;d++)g[c][d]=!1;for(c=0;ce;e++)g[c+e][k]=!0;for(e=0;j>e;e++)g[c][k+e]=!0}},i=function(){if(null===e){var b,c,d=a("

      ").addClass("fixed-table-scroll-inner"),f=a("

      ").addClass("fixed-table-scroll-outer");f.append(d),a("body").append(f),b=d[0].offsetWidth,f.css("overflow","scroll"),c=d[0].offsetWidth,b===c&&(c=f[0].clientWidth),f.remove(),e=b-c}return e},j=function(b,c,d,e){var g=c;if("string"==typeof c){var h=c.split(".");h.length>1?(g=window,a.each(h,function(a,b){g=g[b]})):g=window[c]}return"object"==typeof g?g:"function"==typeof g?g.apply(b,d||[]):!g&&"string"==typeof c&&f.apply(this,[c].concat(d))?f.apply(this,[c].concat(d)):e},k=function(b,c,d){var e=Object.getOwnPropertyNames||function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},f=e(b),g=e(c),h="";if(d&&f.length!==g.length)return!1;for(var i=0;i-1&&b[h]!==c[h])return!1;return!0},l=function(a){return"string"==typeof a?a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/`/g,"`"):a},m=function(a){for(var b in a){var c=b.split(/(?=[A-Z])/).join("-").toLowerCase();c!==b&&(a[c]=a[b],delete a[b])}return a},n=function(a,b,c){var d=a;if("string"!=typeof b||a.hasOwnProperty(b))return c?l(a[b]):a[b];var e=b.split(".");for(var f in e)e.hasOwnProperty(f)&&(d=d&&d[e[f]]);return c?l(d):d},o=function(){return!!(navigator.userAgent.indexOf("MSIE ")>0||navigator.userAgent.match(/Trident.*rv\:11\./))},p=function(){Object.keys||(Object.keys=function(){var a=Object.prototype.hasOwnProperty,b=!{toString:null}.propertyIsEnumerable("toString"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],d=c.length;return function(e){if("object"!=typeof e&&("function"!=typeof e||null===e))throw new TypeError("Object.keys called on non-object");var f,g,h=[];for(f in e)a.call(e,f)&&h.push(f);if(b)for(g=0;d>g;g++)a.call(e,c[g])&&h.push(c[g]);return h}}())},q=function(b,c){this.options=c,this.$el=a(b),this.$el_=this.$el.clone(),this.timeoutId_=0,this.timeoutFooter_=0,this.init()};q.DEFAULTS={classes:"table table-hover",sortClass:void 0,locale:void 0,height:void 0,undefinedText:"-",sortName:void 0,sortOrder:"asc",sortStable:!1,rememberOrder:!1,striped:!1,columns:[[]],data:[],totalField:"total",dataField:"rows",method:"get",url:void 0,ajax:void 0,cache:!0,contentType:"application/json",dataType:"json",ajaxOptions:{},queryParams:function(a){return a},queryParamsType:"limit",responseHandler:function(a){return a},pagination:!1,onlyInfoPagination:!1,paginationLoop:!0,sidePagination:"client",totalRows:0,pageNumber:1,pageSize:10,pageList:[10,25,50,100],paginationHAlign:"right",paginationVAlign:"bottom",paginationDetailHAlign:"left",paginationPreText:"‹",paginationNextText:"›",search:!1,searchOnEnterKey:!1,strictSearch:!1,searchAlign:"right",selectItemName:"btSelectItem",showHeader:!0,showFooter:!1,showColumns:!1,showPaginationSwitch:!1,showRefresh:!1,showToggle:!1,showFullscreen:!1,smartDisplay:!0,escape:!1,minimumCountColumns:1,idField:void 0,uniqueId:void 0,cardView:!1,detailView:!1,detailFormatter:function(){return""},detailFilter:function(){return!0},trimOnSearch:!0,clickToSelect:!1,singleSelect:!1,toolbar:void 0,toolbarAlign:"left",buttonsToolbar:void 0,buttonsAlign:"right",checkboxHeader:!0,sortable:!0,silentSort:!0,maintainSelected:!1,searchTimeOut:500,searchText:"",iconSize:void 0,buttonsClass:d.buttonsClass,iconsPrefix:d.iconsPrefix,icons:d.icons,customSearch:a.noop,customSort:a.noop,ignoreClickToSelectOn:function(b){return a.inArray(b.tagName,["A","BUTTON"])},rowStyle:function(){return{}},rowAttributes:function(){return{}},footerStyle:function(){return{}},onAll:function(){return!1},onClickCell:function(){return!1},onDblClickCell:function(){return!1},onClickRow:function(){return!1},onDblClickRow:function(){return!1},onSort:function(){return!1},onCheck:function(){return!1},onUncheck:function(){return!1},onCheckAll:function(){return!1},onUncheckAll:function(){return!1},onCheckSome:function(){return!1},onUncheckSome:function(){return!1},onLoadSuccess:function(){return!1},onLoadError:function(){return!1},onColumnSwitch:function(){return!1},onPageChange:function(){return!1},onSearch:function(){return!1},onToggle:function(){return!1},onPreBody:function(){return!1},onPostBody:function(){return!1},onPostHeader:function(){return!1},onExpandRow:function(){return!1},onCollapseRow:function(){return!1},onRefreshOptions:function(){return!1},onRefresh:function(){return!1},onResetView:function(){return!1},onScrollBody:function(){return!1}},q.LOCALES={},q.LOCALES["en-US"]=q.LOCALES.en={formatLoadingMessage:function(){return"Loading, please wait..."},formatRecordsPerPage:function(a){return f("%s rows per page",a)},formatShowingRows:function(a,b,c){return f("Showing %s to %s of %s rows",a,b,c)},formatDetailPagination:function(a){return f("Showing %s rows",a)},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatFullscreen:function(){return"Fullscreen"},formatColumns:function(){return"Columns"},formatAllRows:function(){return"All"}},a.extend(q.DEFAULTS,q.LOCALES["en-US"]),q.COLUMN_DEFAULTS={radio:!1,checkbox:!1,checkboxEnabled:!0,field:void 0,title:void 0,titleTooltip:void 0,"class":void 0,align:void 0,halign:void 0,falign:void 0,valign:void 0,width:void 0,sortable:!1,order:"asc",visible:!0,switchable:!0,clickToSelect:!0,formatter:void 0,footerFormatter:void 0,events:void 0,sorter:void 0,sortName:void 0,cellStyle:void 0,searchable:!0,searchFormatter:!0,cardVisible:!0,escape:!1,showSelectTitle:!1},q.EVENTS={"all.bs.table":"onAll","click-cell.bs.table":"onClickCell","dbl-click-cell.bs.table":"onDblClickCell","click-row.bs.table":"onClickRow","dbl-click-row.bs.table":"onDblClickRow","sort.bs.table":"onSort","check.bs.table":"onCheck","uncheck.bs.table":"onUncheck","check-all.bs.table":"onCheckAll","uncheck-all.bs.table":"onUncheckAll","check-some.bs.table":"onCheckSome","uncheck-some.bs.table":"onUncheckSome","load-success.bs.table":"onLoadSuccess","load-error.bs.table":"onLoadError","column-switch.bs.table":"onColumnSwitch","page-change.bs.table":"onPageChange","search.bs.table":"onSearch","toggle.bs.table":"onToggle","pre-body.bs.table":"onPreBody","post-body.bs.table":"onPostBody","post-header.bs.table":"onPostHeader","expand-row.bs.table":"onExpandRow","collapse-row.bs.table":"onCollapseRow","refresh-options.bs.table":"onRefreshOptions","reset-view.bs.table":"onResetView","refresh.bs.table":"onRefresh","scroll-body.bs.table":"onScrollBody"},q.prototype.init=function(){this.initLocale(),this.initContainer(),this.initTable(),this.initHeader(),this.initData(),this.initHiddenRows(),this.initFooter(),this.initToolbar(),this.initPagination(),this.initBody(),this.initSearchText(),this.initServer()},q.prototype.initLocale=function(){if(this.options.locale){var b=this.options.locale.split(/-|_/);b[0].toLowerCase(),b[1]&&b[1].toUpperCase(),a.fn.bootstrapTable.locales[this.options.locale]?a.extend(this.options,a.fn.bootstrapTable.locales[this.options.locale]):a.fn.bootstrapTable.locales[b.join("-")]?a.extend(this.options,a.fn.bootstrapTable.locales[b.join("-")]):a.fn.bootstrapTable.locales[b[0]]&&a.extend(this.options,a.fn.bootstrapTable.locales[b[0]])}},q.prototype.initContainer=function(){this.$container=a(['
      ','
      ',"top"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?'
      ':"",'
      ','
      ','
      ','
      ',this.options.formatLoadingMessage(),"
      ","
      ",'',"
      ","bottom"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?'
      ':"","
      "].join("")),this.$container.insertAfter(this.$el),this.$tableContainer=this.$container.find(".fixed-table-container"),this.$tableHeader=this.$container.find(".fixed-table-header"),this.$tableBody=this.$container.find(".fixed-table-body"),this.$tableLoading=this.$container.find(".fixed-table-loading"),this.$tableFooter=this.$container.find(".fixed-table-footer"),this.$toolbar=this.options.buttonsToolbar?a("body").find(this.options.buttonsToolbar):this.$container.find(".fixed-table-toolbar"),this.$pagination=this.$container.find(".fixed-table-pagination"),this.$tableBody.append(this.$el),this.$container.after('
      '),this.$el.addClass(this.options.classes),this.options.striped&&this.$el.addClass("table-striped"),-1!==a.inArray("table-no-bordered",this.options.classes.split(" "))&&this.$tableContainer.addClass("table-no-bordered")},q.prototype.initTable=function(){var b=this,c=[],d=[];if(this.$header=this.$el.find(">thead"),this.$header.length||(this.$header=a("").appendTo(this.$el)),this.$header.find("tr").each(function(){var b=[];a(this).find("th").each(function(){"undefined"!=typeof a(this).data("field")&&a(this).data("field",a(this).data("field")+""),b.push(a.extend({},{title:a(this).html(),"class":a(this).attr("class"),titleTooltip:a(this).attr("title"),rowspan:a(this).attr("rowspan")?+a(this).attr("rowspan"):void 0,colspan:a(this).attr("colspan")?+a(this).attr("colspan"):void 0},a(this).data()))}),c.push(b)}),a.isArray(this.options.columns[0])||(this.options.columns=[this.options.columns]),this.options.columns=a.extend(!0,[],c,this.options.columns),this.columns=[],this.fieldsColumnsIndex=[],h(this.options.columns),a.each(this.options.columns,function(c,d){a.each(d,function(d,e){e=a.extend({},q.COLUMN_DEFAULTS,e),"undefined"!=typeof e.fieldIndex&&(b.columns[e.fieldIndex]=e,b.fieldsColumnsIndex[e.field]=e.fieldIndex),b.options.columns[c][d]=e})}),!this.options.data.length){var e=[];this.$el.find(">tbody>tr").each(function(c){var f={};f._id=a(this).attr("id"),f._class=a(this).attr("class"),f._data=m(a(this).data()),a(this).find(">td").each(function(d){for(var g,h,i=a(this),j=+i.attr("colspan")||1,k=+i.attr("rowspan")||1;e[c]&&e[c][d];d++);for(g=d;d+j>g;g++)for(h=c;c+k>h;h++)e[h]||(e[h]=[]),e[h][g]=!0;var l=b.columns[d].field;f[l]=a(this).html(),f["_"+l+"_id"]=a(this).attr("id"),f["_"+l+"_class"]=a(this).attr("class"),f["_"+l+"_rowspan"]=a(this).attr("rowspan"),f["_"+l+"_colspan"]=a(this).attr("colspan"),f["_"+l+"_title"]=a(this).attr("title"),f["_"+l+"_data"]=m(a(this).data())}),d.push(f)}),this.options.data=d,d.length&&(this.fromHtml=!0)}},q.prototype.initHeader=function(){var b=this,c={},d=[];this.header={fields:[],styles:[],classes:[],formatters:[],events:[],sorters:[],sortNames:[],cellStyles:[],searchables:[]},a.each(this.options.columns,function(e,g){d.push(""),0===e&&!b.options.cardView&&b.options.detailView&&d.push(f('
      ',b.options.columns.length)),a.each(g,function(a,e){var g="",h="",i="",j="",k=f(' class="%s"',e["class"]),m=(b.options.sortOrder||e.order,"px"),n=e.width;if(void 0===e.width||b.options.cardView||"string"==typeof e.width&&-1!==e.width.indexOf("%")&&(m="%"),e.width&&"string"==typeof e.width&&(n=e.width.replace("%","").replace("px","")),h=f("text-align: %s; ",e.halign?e.halign:e.align),i=f("text-align: %s; ",e.align),j=f("vertical-align: %s; ",e.valign),j+=f("width: %s; ",!e.checkbox&&!e.radio||n?n?n+m:void 0:e.showSelectTitle?void 0:"36px"),"undefined"!=typeof e.fieldIndex){if(b.header.fields[e.fieldIndex]=e.field,b.header.styles[e.fieldIndex]=i+j,b.header.classes[e.fieldIndex]=k,b.header.formatters[e.fieldIndex]=e.formatter,b.header.events[e.fieldIndex]=e.events,b.header.sorters[e.fieldIndex]=e.sorter,b.header.sortNames[e.fieldIndex]=e.sortName,b.header.cellStyles[e.fieldIndex]=e.cellStyle,b.header.searchables[e.fieldIndex]=e.searchable,!e.visible)return;if(b.options.cardView&&!e.cardVisible)return;c[e.field]=e}d.push(""),d.push(f('
      ',b.options.sortable&&e.sortable?"sortable both":"")),g=b.options.escape?l(e.title):e.title;var o=g;e.checkbox&&(g="",!b.options.singleSelect&&b.options.checkboxHeader&&(g=''),b.header.stateField=e.field),e.radio&&(g="",b.header.stateField=e.field,b.options.singleSelect=!0),!g&&e.showSelectTitle&&(g+=o),d.push(g),d.push("
      "),d.push('
      '),d.push("
      "),d.push("")}),d.push("")}),this.$header.html(d.join("")),this.$header.find("th[data-field]").each(function(){a(this).data(c[a(this).data("field")])}),this.$container.off("click",".th-inner").on("click",".th-inner",function(c){var d=a(this);return b.options.detailView&&!d.parent().hasClass("bs-checkbox")&&d.closest(".bootstrap-table")[0]!==b.$container[0]?!1:void(b.options.sortable&&d.parent().data().sortable&&b.onSort(c))}),this.$header.children().children().off("keypress").on("keypress",function(c){if(b.options.sortable&&a(this).data().sortable){var d=c.keyCode||c.which;13==d&&b.onSort(c)}}),a(window).off("resize.bootstrap-table"),!this.options.showHeader||this.options.cardView?(this.$header.hide(),this.$tableHeader.hide(),this.$tableLoading.css("top",0)):(this.$header.show(),this.$tableHeader.show(),this.$tableLoading.css("top",this.$header.outerHeight()+1),this.getCaret(),a(window).on("resize.bootstrap-table",a.proxy(this.resetWidth,this))),this.$selectAll=this.$header.find('[name="btSelectAll"]'),this.$selectAll.off("click").on("click",function(){var c=a(this).prop("checked");b[c?"checkAll":"uncheckAll"](),b.updateSelected()})},q.prototype.initFooter=function(){!this.options.showFooter||this.options.cardView?this.$tableFooter.hide():this.$tableFooter.show()},q.prototype.initData=function(a,b){this.options.data="append"===b?this.options.data.concat(a):"prepend"===b?[].concat(a).concat(this.options.data):a||this.options.data,this.data=this.options.data,"server"!==this.options.sidePagination&&this.initSort()},q.prototype.initSort=function(){var b=this,c=this.options.sortName,d="desc"===this.options.sortOrder?-1:1,e=a.inArray(this.options.sortName,this.header.fields),g=0;return this.options.customSort!==a.noop?void this.options.customSort.apply(this,[this.options.sortName,this.options.sortOrder]):void(-1!==e&&(this.options.sortStable&&a.each(this.data,function(a,b){b._position=a}),this.data.sort(function(f,g){b.header.sortNames[e]&&(c=b.header.sortNames[e]);var h=n(f,c,b.options.escape),i=n(g,c,b.options.escape),k=j(b.header,b.header.sorters[e],[h,i,f,g]);return void 0!==k?b.options.sortStable&&0===k?f._position-g._position:d*k:((void 0===h||null===h)&&(h=""),(void 0===i||null===i)&&(i=""),b.options.sortStable&&h===i?(h=f._position,i=g._position,f._position-g._position):a.isNumeric(h)&&a.isNumeric(i)?(h=parseFloat(h),i=parseFloat(i),i>h?-1*d:d):h===i?0:("string"!=typeof h&&(h=h.toString()),-1===h.localeCompare(i)?-1*d:d))}),void 0!==this.options.sortClass&&(clearTimeout(g),g=setTimeout(function(){b.$el.removeClass(b.options.sortClass);var a=b.$header.find(f('[data-field="%s"]',b.options.sortName).index()+1);b.$el.find(f("tr td:nth-child(%s)",a)).addClass(b.options.sortClass)},250))))},q.prototype.onSort=function(b){var c="keypress"===b.type?a(b.currentTarget):a(b.currentTarget).parent(),d=this.$header.find("th").eq(c.index());return this.$header.add(this.$header_).find("span.order").remove(),this.options.sortName===c.data("field")?this.options.sortOrder="asc"===this.options.sortOrder?"desc":"asc":(this.options.sortName=c.data("field"),this.options.sortOrder=this.options.rememberOrder?"asc"===c.data("order")?"desc":"asc":this.columns[this.fieldsColumnsIndex[c.data("field")]].order),this.trigger("sort",this.options.sortName,this.options.sortOrder),c.add(d).data("order",this.options.sortOrder),this.getCaret(),"server"===this.options.sidePagination?void this.initServer(this.options.silentSort):(this.initSort(),void this.initBody())},q.prototype.initToolbar=function(){var b,c,e=this,g=[],h=0,i=0;this.$toolbar.find(".bs-bars").children().length&&a("body").append(a(this.options.toolbar)),this.$toolbar.html(""),("string"==typeof this.options.toolbar||"object"==typeof this.options.toolbar)&&a(f('
      ',d.pullClass,this.options.toolbarAlign)).appendTo(this.$toolbar).append(a(this.options.toolbar)),g=[f('
      ',this.options.buttonsAlign,d.pullClass,this.options.buttonsAlign)],"string"==typeof this.options.icons&&(this.options.icons=j(null,this.options.icons)),this.options.showPaginationSwitch&&g.push(f('"),this.options.showFullscreen&&this.$toolbar.find('button[name="fullscreen"]').off("click").on("click",a.proxy(this.toggleFullscreen,this)),this.options.showRefresh&&g.push(f('"),this.options.showToggle&&g.push(f('"),this.options.showFullscreen&&g.push(f('"),this.options.showColumns&&(g.push(f('
      ',this.options.formatColumns()),'",d.toobarDropdowHtml[0]),a.each(this.columns,function(a,b){if(!(b.radio||b.checkbox||e.options.cardView&&!b.cardVisible)){var c=b.visible?' checked="checked"':"";b.switchable&&(g.push(f(d.toobarDropdowItemHtml,f(' %s',b.field,a,c,b.title))),i++)}}),g.push(d.toobarDropdowHtml[1],"
      ")),g.push("
      "),(this.showToolbar||g.length>2)&&this.$toolbar.append(g.join("")),this.options.showPaginationSwitch&&this.$toolbar.find('button[name="paginationSwitch"]').off("click").on("click",a.proxy(this.togglePagination,this)),this.options.showRefresh&&this.$toolbar.find('button[name="refresh"]').off("click").on("click",a.proxy(this.refresh,this)),this.options.showToggle&&this.$toolbar.find('button[name="toggle"]').off("click").on("click",function(){e.toggleView()}),this.options.showColumns&&(b=this.$toolbar.find(".keep-open"),i<=this.options.minimumCountColumns&&b.find("input").prop("disabled",!0),b.find("li").off("click").on("click",function(a){a.stopImmediatePropagation()}),b.find("input").off("click").on("click",function(){var b=a(this);e.toggleColumn(a(this).val(),b.prop("checked"),!1),e.trigger("column-switch",a(this).data("field"),b.prop("checked"))})),this.options.search&&(g=[],g.push(f('"),this.$toolbar.append(g.join("")),c=this.$toolbar.find(".search input"),c.off("keyup drop blur").on("keyup drop blur",function(b){e.options.searchOnEnterKey&&13!==b.keyCode||a.inArray(b.keyCode,[37,38,39,40])>-1||(clearTimeout(h),h=setTimeout(function(){e.onSearch(b)},e.options.searchTimeOut))}),o()&&c.off("mouseup").on("mouseup",function(a){clearTimeout(h),h=setTimeout(function(){e.onSearch(a)},e.options.searchTimeOut)}))},q.prototype.onSearch=function(b){var c=a.trim(a(b.currentTarget).val());this.options.trimOnSearch&&a(b.currentTarget).val()!==c&&a(b.currentTarget).val(c),c!==this.searchText&&(this.searchText=c,this.options.searchText=c,this.options.pageNumber=1,this.initSearch(),b.firedByInitSearchText?"client"===this.options.sidePagination&&this.updatePagination():this.updatePagination(),this.trigger("search",c))},q.prototype.initSearch=function(){var b=this;if("server"!==this.options.sidePagination){if(this.options.customSearch!==a.noop)return void window[this.options.customSearch].apply(this,[this.searchText]);var c=this.searchText&&(this.options.escape?l(this.searchText):this.searchText).toLowerCase(),d=a.isEmptyObject(this.filterColumns)?null:this.filterColumns;this.data=d?a.grep(this.options.data,function(b){for(var c in d)if(a.isArray(d[c])&&-1===a.inArray(b[c],d[c])||!a.isArray(d[c])&&b[c]!==d[c])return!1;return!0}):this.options.data,this.data=c?a.grep(this.data,function(d,e){for(var f=0;f-1&&(m=!0)}this.totalPages=~~((this.options.totalRows-1)/this.options.pageSize)+1,this.options.totalPages=this.totalPages}if(this.totalPages>0&&this.options.pageNumber>this.totalPages&&(this.options.pageNumber=this.totalPages),this.pageFrom=(this.options.pageNumber-1)*this.options.pageSize+1,this.pageTo=this.options.pageNumber*this.options.pageSize,this.pageTo>this.options.totalRows&&(this.pageTo=this.options.totalRows),l.push(f('
      ',d.pullClass,this.options.paginationDetailHAlign),'',this.options.onlyInfoPagination?this.options.formatDetailPagination(this.options.totalRows):this.options.formatShowingRows(this.pageFrom,this.pageTo,this.options.totalRows),""),!this.options.onlyInfoPagination){l.push('');var q=[f('',"top"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?"dropdown":"dropup"),'",d.pageDropdownHtml[0]];if("string"==typeof this.options.pageList){var r=this.options.pageList.replace("[","").replace("]","").replace(/ /g,"").split(",");o=[],a.each(r,function(a,b){o.push(b.toUpperCase()===k.options.formatAllRows().toUpperCase()||"UNLIMITED"===b.toUpperCase()?k.options.formatAllRows():+b)})}for(a.each(o,function(a,b){if(!k.options.smartDisplay||0===a||o[a-1]"),l.push(this.options.formatRecordsPerPage(q.join(""))),l.push(""),l.push("
      ",f('")}this.$pagination.html(l.join("")),this.options.onlyInfoPagination||(g=this.$pagination.find(".page-list a"),h=this.$pagination.find(".page-pre"),i=this.$pagination.find(".page-next"),j=this.$pagination.find(".page-item").not(".page-next, .page-pre"),this.options.smartDisplay&&(this.totalPages<=1&&this.$pagination.find("div.pagination").hide(),(o.length<2||this.options.totalRows<=o[0])&&this.$pagination.find("span.page-list").hide(),this.$pagination[this.getData().length?"show":"hide"]()),this.options.paginationLoop||(1===this.options.pageNumber&&h.addClass("disabled"),this.options.pageNumber===this.totalPages&&i.addClass("disabled")),m&&(this.options.pageSize=this.options.formatAllRows()),g.off("click").on("click",a.proxy(this.onPageListChange,this)),h.off("click").on("click",a.proxy(this.onPagePre,this)),i.off("click").on("click",a.proxy(this.onPageNext,this)),j.off("click").on("click",a.proxy(this.onPageNumber,this)))},q.prototype.updatePagination=function(b){b&&a(b.currentTarget).hasClass("disabled")||(this.options.maintainSelected||this.resetRows(),this.initPagination(),"server"===this.options.sidePagination?this.initServer():this.initBody(),this.trigger("page-change",this.options.pageNumber,this.options.pageSize))},q.prototype.onPageListChange=function(b){b.preventDefault();var c=a(b.currentTarget);return c.parent().addClass("active").siblings().removeClass("active"),this.options.pageSize=c.text().toUpperCase()===this.options.formatAllRows().toUpperCase()?this.options.formatAllRows():+c.text(),this.$toolbar.find(".page-size").text(this.options.pageSize),this.updatePagination(b),!1},q.prototype.onPagePre=function(a){return a.preventDefault(),this.options.pageNumber-1===0?this.options.pageNumber=this.options.totalPages:this.options.pageNumber--,this.updatePagination(a),!1},q.prototype.onPageNext=function(a){return a.preventDefault(),this.options.pageNumber+1>this.options.totalPages?this.options.pageNumber=1:this.options.pageNumber++,this.updatePagination(a),!1},q.prototype.onPageNumber=function(b){return b.preventDefault(),this.options.pageNumber!==+a(b.currentTarget).text()?(this.options.pageNumber=+a(b.currentTarget).text(),this.updatePagination(b),!1):void 0},q.prototype.initRow=function(b,c){var d,e=this,h=[],i={},k=[],m="",o={},p=[];if(!(a.inArray(b,this.hiddenRows)>-1)){if(i=j(this.options,this.options.rowStyle,[b,c],i),i&&i.css)for(d in i.css)k.push(d+": "+i.css[d]);if(o=j(this.options,this.options.rowAttributes,[b,c],o))for(d in o)p.push(f('%s="%s"',d,l(o[d])));return b._data&&!a.isEmptyObject(b._data)&&a.each(b._data,function(a,b){"index"!==a&&(m+=f(' data-%s="%s"',a,b))}),h.push(""),this.options.cardView&&h.push(f('
      ',this.header.fields.length)),!this.options.cardView&&this.options.detailView&&(h.push(""),j(null,this.options.detailFilter,[c,b])&&h.push('',f('',this.options.iconsPrefix,this.options.icons.detailOpen),""),h.push("")),a.each(this.header.fields,function(d,m){var o="",p=n(b,m,e.options.escape),q="",r="",s={},t="",u=e.header.classes[d],v="",w="",x="",y="",z=e.columns[d]; + +if((!e.fromHtml||"undefined"!=typeof p||z.checkbox||z.radio)&&z.visible&&(!e.options.cardView||z.cardVisible)){if(z.escape&&(p=l(p)),i=f('style="%s"',k.concat(e.header.styles[d]).join("; ")),b["_"+m+"_id"]&&(t=f(' id="%s"',b["_"+m+"_id"])),b["_"+m+"_class"]&&(u=f(' class="%s"',b["_"+m+"_class"])),b["_"+m+"_rowspan"]&&(w=f(' rowspan="%s"',b["_"+m+"_rowspan"])),b["_"+m+"_colspan"]&&(x=f(' colspan="%s"',b["_"+m+"_colspan"])),b["_"+m+"_title"]&&(y=f(' title="%s"',b["_"+m+"_title"])),s=j(e.header,e.header.cellStyles[d],[p,b,c,m],s),s.classes&&(u=f(' class="%s"',s.classes)),s.css){var A=[];for(var B in s.css)A.push(B+": "+s.css[B]);i=f('style="%s"',A.concat(e.header.styles[d]).join("; "))}q=j(z,e.header.formatters[d],[p,b,c,m],p),b["_"+m+"_data"]&&!a.isEmptyObject(b["_"+m+"_data"])&&a.each(b["_"+m+"_data"],function(a,b){"index"!==a&&(v+=f(' data-%s="%s"',a,b))}),z.checkbox||z.radio?(r=z.checkbox?"checkbox":r,r=z.radio?"radio":r,o=[f(e.options.cardView?'
      ':'',z["class"]||""),"",e.header.formatters[d]&&"string"==typeof q?q:"",e.options.cardView?"
      ":""].join(""),b[e.header.stateField]=q===!0||!!p||q&&q.checked):(q="undefined"==typeof q||null===q?e.options.undefinedText:q,o=e.options.cardView?['
      ',e.options.showHeader?f('%s',i,g(e.columns,"field","title",m)):"",f('%s',q),"
      "].join(""):[f("",t,u,i,v,w,x,y),q,""].join(""),e.options.cardView&&e.options.smartDisplay&&""===q&&(o='
      ')),h.push(o)}}),this.options.cardView&&h.push("
      "),h.push(""),h.join(" ")}},q.prototype.initBody=function(b){var c=this,d=this.getData();this.trigger("pre-body",d),this.$body=this.$el.find(">tbody"),this.$body.length||(this.$body=a("").appendTo(this.$el)),this.options.pagination&&"server"!==this.options.sidePagination||(this.pageFrom=1,this.pageTo=d.length);for(var e,g=a(document.createDocumentFragment()),h=this.pageFrom-1;h'+f('%s',this.$header.find("th").length,this.options.formatNoMatches())+""),this.$body.html(g),b||this.scrollTo(0),this.$body.find("> tr[data-index] > td").off("click dblclick").on("click dblclick",function(b){var d=a(this),e=d.parent(),g=c.data[e.data("index")],h=d[0].cellIndex,i=c.getVisibleFields(),j=i[c.options.detailView&&!c.options.cardView?h-1:h],k=c.columns[c.fieldsColumnsIndex[j]],l=n(g,j,c.options.escape);if(!d.find(".detail-icon").length&&(c.trigger("click"===b.type?"click-cell":"dbl-click-cell",j,l,g,d),c.trigger("click"===b.type?"click-row":"dbl-click-row",g,e,j),"click"===b.type&&c.options.clickToSelect&&k.clickToSelect&&c.options.ignoreClickToSelectOn(b.target))){var m=e.find(f('[name="%s"]',c.options.selectItemName));m.length&&m[0].click()}}),this.$body.find("> tr[data-index] > td > .detail-icon").off("click").on("click",function(b){b.preventDefault();var e=a(this),g=e.parent().parent(),h=g.data("index"),i=d[h];if(g.next().is("tr.detail-view"))e.find("i").attr("class",f("%s %s",c.options.iconsPrefix,c.options.icons.detailOpen)),c.trigger("collapse-row",h,i,g.next()),g.next().remove();else{e.find("i").attr("class",f("%s %s",c.options.iconsPrefix,c.options.icons.detailClose)),g.after(f('',g.find("td").length));var k=g.next().find("td"),l=j(c.options,c.options.detailFormatter,[h,i,k],"");1===k.length&&k.append(l),c.trigger("expand-row",h,i,k)}return c.resetView(),!1}),this.$selectItem=this.$body.find(f('[name="%s"]',this.options.selectItemName)),this.$selectItem.off("click").on("click",function(b){b.stopImmediatePropagation();var d=a(this),e=d.prop("checked"),f=c.data[d.data("index")];(a(this).is(":radio")||c.options.singleSelect)&&a.each(c.options.data,function(a,b){b[c.header.stateField]=!1}),f[c.header.stateField]=e,c.options.singleSelect&&(c.$selectItem.not(this).each(function(){c.data[a(this).data("index")][c.header.stateField]=!1}),c.$selectItem.filter(":checked").not(this).prop("checked",!1)),c.updateSelected(),c.trigger(e?"check":"uncheck",f,d)}),a.each(this.header.events,function(b,d){if(d){"string"==typeof d&&(d=j(null,d));var e=c.header.fields[b],f=a.inArray(e,c.getVisibleFields());if(-1!==f){c.options.detailView&&!c.options.cardView&&(f+=1);for(var g in d)c.$body.find(">tr:not(.no-records-found)").each(function(){var b=a(this),h=b.find(c.options.cardView?".card-view":"td").eq(f),i=g.indexOf(" "),j=g.substring(0,i),k=g.substring(i+1),l=d[g];h.find(k).off(j).on(j,function(a){var d=b.data("index"),f=c.data[d],g=f[e];l.apply(this,[a,g,f,d])})})}}}),this.updateSelected(),this.resetView(),this.trigger("post-body",d)},q.prototype.initServer=function(b,c,d){var e,f=this,g={},h=a.inArray(this.options.sortName,this.header.fields),i={searchText:this.searchText,sortName:this.options.sortName,sortOrder:this.options.sortOrder};this.header.sortNames[h]&&(i.sortName=this.header.sortNames[h]),this.options.pagination&&"server"===this.options.sidePagination&&(i.pageSize=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,i.pageNumber=this.options.pageNumber),(d||this.options.url||this.options.ajax)&&("limit"===this.options.queryParamsType&&(i={search:i.searchText,sort:i.sortName,order:i.sortOrder},this.options.pagination&&"server"===this.options.sidePagination&&(i.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),i.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,0===i.limit&&delete i.limit)),a.isEmptyObject(this.filterColumnsPartial)||(i.filter=JSON.stringify(this.filterColumnsPartial,null)),g=j(this.options,this.options.queryParams,[i],g),a.extend(g,c||{}),g!==!1&&(b||this.$tableLoading.show(),e=a.extend({},j(null,this.options.ajaxOptions),{type:this.options.method,url:d||this.options.url,data:"application/json"===this.options.contentType&&"post"===this.options.method?JSON.stringify(g):g,cache:this.options.cache,contentType:this.options.contentType,dataType:this.options.dataType,success:function(a){a=j(f.options,f.options.responseHandler,[a],a),f.load(a),f.trigger("load-success",a),b||f.$tableLoading.hide()},error:function(a){var c=[];"server"===f.options.sidePagination&&(c={},c[f.options.totalField]=0,c[f.options.dataField]=[]),f.load(c),f.trigger("load-error",a.status,a),b||f.$tableLoading.hide()}}),this.options.ajax?j(this,this.options.ajax,[e],null):(this._xhr&&4!==this._xhr.readyState&&this._xhr.abort(),this._xhr=a.ajax(e))))},q.prototype.initSearchText=function(){if(this.options.search&&(this.searchText="",""!==this.options.searchText)){var a=this.$toolbar.find(".search input");a.val(this.options.searchText),this.onSearch({currentTarget:a,firedByInitSearchText:!0})}},q.prototype.getCaret=function(){var b=this;a.each(this.$header.find("th"),function(c,d){a(d).find(".sortable").removeClass("desc asc").addClass(a(d).data("field")===b.options.sortName?b.options.sortOrder:"both")})},q.prototype.updateSelected=function(){var b=this.$selectItem.filter(":enabled").length&&this.$selectItem.filter(":enabled").length===this.$selectItem.filter(":enabled").filter(":checked").length;this.$selectAll.add(this.$selectAll_).prop("checked",b),this.$selectItem.each(function(){a(this).closest("tr")[a(this).prop("checked")?"addClass":"removeClass"]("selected")})},q.prototype.updateRows=function(){var b=this;this.$selectItem.each(function(){b.data[a(this).data("index")][b.header.stateField]=a(this).prop("checked")})},q.prototype.resetRows=function(){var b=this;a.each(this.data,function(a,c){b.$selectAll.prop("checked",!1),b.$selectItem.prop("checked",!1),b.header.stateField&&(c[b.header.stateField]=!1)}),this.initHiddenRows()},q.prototype.trigger=function(b){var c=Array.prototype.slice.call(arguments,1);b+=".bs.table",this.options[q.EVENTS[b]].apply(this.options,c),this.$el.trigger(a.Event(b),c),this.options.onAll(b,c),this.$el.trigger(a.Event("all.bs.table"),[b,c])},q.prototype.resetHeader=function(){clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(a.proxy(this.fitHeader,this),this.$el.is(":hidden")?100:0)},q.prototype.fitHeader=function(){var b,c,d,e,g=this;if(g.$el.is(":hidden"))return void(g.timeoutId_=setTimeout(a.proxy(g.fitHeader,g),100));if(b=this.$tableBody.get(0),c=b.scrollWidth>b.clientWidth&&b.scrollHeight>b.clientHeight+this.$header.outerHeight()?i():0,this.$el.css("margin-top",-this.$header.outerHeight()),d=a(":focus"),d.length>0){var h=d.parents("th");if(h.length>0){var j=h.attr("data-field");if(void 0!==j){var k=this.$header.find("[data-field='"+j+"']");k.length>0&&k.find(":input").addClass("focus-temp")}}}this.$header_=this.$header.clone(!0,!0),this.$selectAll_=this.$header_.find('[name="btSelectAll"]'),this.$tableHeader.css({"margin-right":c}).find("table").css("width",this.$el.outerWidth()).html("").attr("class",this.$el.attr("class")).append(this.$header_),e=a(".focus-temp:visible:eq(0)"),e.length>0&&(e.focus(),this.$header.find(".focus-temp").removeClass("focus-temp")),this.$header.find("th[data-field]").each(function(){g.$header_.find(f('th[data-field="%s"]',a(this).data("field"))).data(a(this).data())});var l=this.getVisibleFields(),m=this.$header_.find("th");this.$body.find(">tr:first-child:not(.no-records-found) > *").each(function(b){var c=a(this),d=b;if(g.options.detailView&&!g.options.cardView&&(0===b&&g.$header_.find("th.detail").find(".fht-cell").width(c.innerWidth()),d=b-1),-1!==d){var e=g.$header_.find(f('th[data-field="%s"]',l[d]));e.length>1&&(e=a(m[c[0].cellIndex]));var h=e.width()-e.find(".fht-cell").width();e.find(".fht-cell").width(c.innerWidth()-h)}}),this.horizontalScroll(),this.trigger("post-header")},q.prototype.resetFooter=function(){var b=this,c=b.getData(),d=[];this.options.showFooter&&!this.options.cardView&&(!this.options.cardView&&this.options.detailView&&d.push('
       
      '),a.each(this.columns,function(a,e){var g,h="",i="",k=[],l={},m=f(' class="%s"',e["class"]);if(e.visible&&(!b.options.cardView||e.cardVisible)){if(h=f("text-align: %s; ",e.falign?e.falign:e.align),i=f("vertical-align: %s; ",e.valign),l=j(null,b.options.footerStyle),l&&l.css)for(g in l.css)k.push(g+": "+l.css[g]);d.push(""),d.push('
      '),d.push(j(e,e.footerFormatter,[c]," ")||" "),d.push("
      "),d.push('
      '),d.push(""),d.push("")}}),this.$tableFooter.find("tr").html(d.join("")),this.$tableFooter.show(),clearTimeout(this.timeoutFooter_),this.timeoutFooter_=setTimeout(a.proxy(this.fitFooter,this),this.$el.is(":hidden")?100:0))},q.prototype.fitFooter=function(){var b,c,d;return clearTimeout(this.timeoutFooter_),this.$el.is(":hidden")?void(this.timeoutFooter_=setTimeout(a.proxy(this.fitFooter,this),100)):(c=this.$el.css("width"),d=c>this.$tableBody.width()?i():0,this.$tableFooter.css({"margin-right":d}).find("table").css("width",c).attr("class",this.$el.attr("class")),b=this.$tableFooter.find("td"),this.$body.find(">tr:first-child:not(.no-records-found) > *").each(function(c){var d=a(this);b.eq(c).find(".fht-cell").width(d.innerWidth())}),void this.horizontalScroll())},q.prototype.horizontalScroll=function(){var b=this;b.trigger("scroll-body"),this.$tableBody.off("scroll").on("scroll",function(){b.options.showHeader&&b.options.height&&b.$tableHeader.scrollLeft(a(this).scrollLeft()),b.options.showFooter&&!b.options.cardView&&b.$tableFooter.scrollLeft(a(this).scrollLeft())})},q.prototype.toggleColumn=function(a,b,c){if(-1!==a&&(this.columns[a].visible=b,this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns)){var d=this.$toolbar.find(".keep-open input").prop("disabled",!1);c&&d.filter(f('[value="%s"]',a)).prop("checked",b),d.filter(":checked").length<=this.options.minimumCountColumns&&d.filter(":checked").prop("disabled",!0)}},q.prototype.getVisibleFields=function(){var b=this,c=[];return a.each(this.header.fields,function(a,d){var e=b.columns[b.fieldsColumnsIndex[d]];e.visible&&c.push(d)}),c},q.prototype.resetView=function(a){var b=0;if(a&&a.height&&(this.options.height=a.height),this.$selectAll.prop("checked",this.$selectItem.length>0&&this.$selectItem.length===this.$selectItem.filter(":checked").length),this.options.height){var c=this.$toolbar.outerHeight(!0),d=this.$pagination.outerHeight(!0),e=this.options.height-c-d;this.$tableContainer.css("height",e+"px")}return this.options.cardView?(this.$el.css("margin-top","0"),this.$tableContainer.css("padding-bottom","0"),void this.$tableFooter.hide()):(this.options.showHeader&&this.options.height?(this.$tableHeader.show(),this.resetHeader(),b+=this.$header.outerHeight()):(this.$tableHeader.hide(),this.trigger("post-header")),this.options.showFooter&&(this.resetFooter(),this.options.height&&(b+=this.$tableFooter.outerHeight()+1)),this.getCaret(),this.$tableContainer.css("padding-bottom",b+"px"),void this.trigger("reset-view"))},q.prototype.getData=function(b){var c=this.options.data;return(this.searchText||this.options.sortName||!a.isEmptyObject(this.filterColumns)||!a.isEmptyObject(this.filterColumnsPartial))&&(c=this.data),b?c.slice(this.pageFrom-1,this.pageTo):c},q.prototype.load=function(b){var c=!1;this.options.pagination&&"server"===this.options.sidePagination?(this.options.totalRows=b[this.options.totalField],c=b.fixedScroll,b=b[this.options.dataField]):a.isArray(b)||(c=b.fixedScroll,b=b.data),this.initData(b),this.initSearch(),this.initPagination(),this.initBody(c)},q.prototype.append=function(a){this.initData(a,"append"),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)},q.prototype.prepend=function(a){this.initData(a,"prepend"),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)},q.prototype.remove=function(b){var c,d,e=this.options.data.length;if(b.hasOwnProperty("field")&&b.hasOwnProperty("values")){for(c=e-1;c>=0;c--)d=this.options.data[c],d.hasOwnProperty(b.field)&&-1!==a.inArray(d[b.field],b.values)&&(this.options.data.splice(c,1),"server"===this.options.sidePagination&&(this.options.totalRows-=1));e!==this.options.data.length&&(this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}},q.prototype.removeAll=function(){this.options.data.length>0&&(this.options.data.splice(0,this.options.data.length),this.initSearch(),this.initPagination(),this.initBody(!0))},q.prototype.getRowByUniqueId=function(a){var b,c,d,e=this.options.uniqueId,f=this.options.data.length,g=null;for(b=f-1;b>=0;b--){if(c=this.options.data[b],c.hasOwnProperty(e))d=c[e];else{if(!c._data.hasOwnProperty(e))continue;d=c._data[e]}if("string"==typeof d?a=a.toString():"number"==typeof d&&(Number(d)===d&&d%1===0?a=parseInt(a):d===Number(d)&&0!==d&&(a=parseFloat(a))),d===a){g=c;break}}return g},q.prototype.removeByUniqueId=function(a){var b=this.options.data.length,c=this.getRowByUniqueId(a);c&&this.options.data.splice(this.options.data.indexOf(c),1),b!==this.options.data.length&&(this.initSearch(),this.initPagination(),this.initBody(!0))},q.prototype.updateByUniqueId=function(b){var c=this,d=a.isArray(b)?b:[b];a.each(d,function(b,d){var e;d.hasOwnProperty("id")&&d.hasOwnProperty("row")&&(e=a.inArray(c.getRowByUniqueId(d.id),c.options.data),-1!==e&&a.extend(c.options.data[e],d.row))}),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)},q.prototype.refreshColumnTitle=function(b){if(b.hasOwnProperty("field")&&b.hasOwnProperty("title")&&(this.columns[this.fieldsColumnsIndex[b.field]].title=this.options.escape?l(b.title):b.title,this.columns[this.fieldsColumnsIndex[b.field]].visible)){var c=void 0!==this.options.height?this.$tableHeader:this.$header;c.find("th[data-field]").each(function(){return a(this).data("field")===b.field?(a(a(this).find(".th-inner")[0]).text(b.title),!1):void 0})}},q.prototype.insertRow=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("row")&&(this.options.data.splice(a.index,0,a.row),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))},q.prototype.updateRow=function(b){var c=this,d=a.isArray(b)?b:[b];a.each(d,function(b,d){d.hasOwnProperty("index")&&d.hasOwnProperty("row")&&a.extend(c.options.data[d.index],d.row)}),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)},q.prototype.initHiddenRows=function(){this.hiddenRows=[]},q.prototype.showRow=function(a){this.toggleRow(a,!0)},q.prototype.hideRow=function(a){this.toggleRow(a,!1)},q.prototype.toggleRow=function(b,c){var d,e;b.hasOwnProperty("index")?d=this.getData()[b.index]:b.hasOwnProperty("uniqueId")&&(d=this.getRowByUniqueId(b.uniqueId)),d&&(e=a.inArray(d,this.hiddenRows),c||-1!==e?c&&e>-1&&this.hiddenRows.splice(e,1):this.hiddenRows.push(d),this.initBody(!0))},q.prototype.getHiddenRows=function(){var b=this,c=this.getData(),d=[];return a.each(c,function(c,e){a.inArray(e,b.hiddenRows)>-1&&d.push(e)}),this.hiddenRows=d,d},q.prototype.mergeCells=function(b){var c,d,e,f=b.index,g=a.inArray(b.field,this.getVisibleFields()),h=b.rowspan||1,i=b.colspan||1,j=this.$body.find(">tr");if(this.options.detailView&&!this.options.cardView&&(g+=1),e=j.eq(f).find(">td").eq(g),!(0>f||0>g||f>=this.data.length)){for(c=f;f+h>c;c++)for(d=g;g+i>d;d++)j.eq(c).find(">td").eq(d).hide();e.attr("rowspan",h).attr("colspan",i).show()}},q.prototype.updateCell=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("field")&&a.hasOwnProperty("value")&&(this.data[a.index][a.field]=a.value,a.reinit!==!1&&(this.initSort(),this.initBody(!0)))},q.prototype.updateCellById=function(b){var c=this;if(b.hasOwnProperty("id")&&b.hasOwnProperty("field")&&b.hasOwnProperty("value")){var d=a.isArray(b)?b:[b];a.each(d,function(b,d){var e;e=a.inArray(c.getRowByUniqueId(d.id),c.options.data),-1!==e&&(c.data[e][d.field]=d.value)}),b.reinit!==!1&&(this.initSort(),this.initBody(!0))}},q.prototype.getOptions=function(){return a.extend(!0,{},this.options)},q.prototype.getSelections=function(){var b=this;return a.grep(this.options.data,function(a){return a[b.header.stateField]===!0})},q.prototype.getAllSelections=function(){var b=this;return a.grep(this.options.data,function(a){return a[b.header.stateField]})},q.prototype.checkAll=function(){this.checkAll_(!0)},q.prototype.uncheckAll=function(){this.checkAll_(!1)},q.prototype.checkInvert=function(){var b=this,c=b.$selectItem.filter(":enabled"),d=c.filter(":checked");c.each(function(){a(this).prop("checked",!a(this).prop("checked"))}),b.updateRows(),b.updateSelected(),b.trigger("uncheck-some",d),d=b.getSelections(),b.trigger("check-some",d)},q.prototype.checkAll_=function(a){var b;a||(b=this.getSelections()),this.$selectAll.add(this.$selectAll_).prop("checked",a),this.$selectItem.filter(":enabled").prop("checked",a),this.updateRows(),a&&(b=this.getSelections()),this.trigger(a?"check-all":"uncheck-all",b)},q.prototype.check=function(a){this.check_(!0,a)},q.prototype.uncheck=function(a){this.check_(!1,a)},q.prototype.check_=function(a,b){var c=this.$selectItem.filter(f('[data-index="%s"]',b)).prop("checked",a);this.data[b][this.header.stateField]=a,this.updateSelected(),this.trigger(a?"check":"uncheck",this.data[b],c)},q.prototype.checkBy=function(a){this.checkBy_(!0,a)},q.prototype.uncheckBy=function(a){this.checkBy_(!1,a)},q.prototype.checkBy_=function(b,c){if(c.hasOwnProperty("field")&&c.hasOwnProperty("values")){var d=this,e=[];a.each(this.options.data,function(g,h){if(!h.hasOwnProperty(c.field))return!1;if(-1!==a.inArray(h[c.field],c.values)){var i=d.$selectItem.filter(":enabled").filter(f('[data-index="%s"]',g)).prop("checked",b);h[d.header.stateField]=b,e.push(h),d.trigger(b?"check":"uncheck",h,i)}}),this.updateSelected(),this.trigger(b?"check-some":"uncheck-some",e)}},q.prototype.destroy=function(){this.$el.insertBefore(this.$container),a(this.options.toolbar).insertBefore(this.$el),this.$container.next().remove(),this.$container.remove(),this.$el.html(this.$el_.html()).css("margin-top","0").attr("class",this.$el_.attr("class")||"")},q.prototype.showLoading=function(){this.$tableLoading.show()},q.prototype.hideLoading=function(){this.$tableLoading.hide()},q.prototype.togglePagination=function(){this.options.pagination=!this.options.pagination;var a=this.$toolbar.find('button[name="paginationSwitch"] i');this.options.pagination?a.attr("class",this.options.iconsPrefix+" "+this.options.icons.paginationSwitchDown):a.attr("class",this.options.iconsPrefix+" "+this.options.icons.paginationSwitchUp),this.updatePagination()},q.prototype.toggleFullscreen=function(){this.$el.closest(".bootstrap-table").toggleClass("fullscreen")},q.prototype.refresh=function(a){a&&a.url&&(this.options.url=a.url),a&&a.pageNumber&&(this.options.pageNumber=a.pageNumber),a&&a.pageSize&&(this.options.pageSize=a.pageSize),this.initServer(a&&a.silent,a&&a.query,a&&a.url),this.trigger("refresh",a)},q.prototype.resetWidth=function(){this.options.showHeader&&this.options.height&&this.fitHeader(),this.options.showFooter&&!this.options.cardView&&this.fitFooter()},q.prototype.showColumn=function(a){this.toggleColumn(this.fieldsColumnsIndex[a],!0,!0)},q.prototype.hideColumn=function(a){this.toggleColumn(this.fieldsColumnsIndex[a],!1,!0)},q.prototype.getHiddenColumns=function(){return a.grep(this.columns,function(a){return!a.visible})},q.prototype.getVisibleColumns=function(){return a.grep(this.columns,function(a){return a.visible})},q.prototype.toggleAllColumns=function(b){var c=this;if(a.each(this.columns,function(a){c.columns[a].visible=b}),this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns){var d=this.$toolbar.find(".keep-open input").prop("disabled",!1);d.filter(":checked").length<=this.options.minimumCountColumns&&d.filter(":checked").prop("disabled",!0)}},q.prototype.showAllColumns=function(){this.toggleAllColumns(!0)},q.prototype.hideAllColumns=function(){this.toggleAllColumns(!1)},q.prototype.filterBy=function(b){this.filterColumns=a.isEmptyObject(b)?{}:b,this.options.pageNumber=1,this.initSearch(),this.updatePagination()},q.prototype.scrollTo=function(a){return"string"==typeof a&&(a="bottom"===a?this.$tableBody[0].scrollHeight:0),"number"==typeof a&&this.$tableBody.scrollTop(a),"undefined"==typeof a?this.$tableBody.scrollTop():void 0},q.prototype.getScrollPosition=function(){return this.scrollTo()},q.prototype.selectPage=function(a){a>0&&a<=this.options.totalPages&&(this.options.pageNumber=a,this.updatePagination())},q.prototype.prevPage=function(){this.options.pageNumber>1&&(this.options.pageNumber--,this.updatePagination())},q.prototype.nextPage=function(){this.options.pageNumber tr[data-index="%s"]',b));c.next().is("tr.detail-view")===(a?!1:!0)&&c.find("> td > .detail-icon").click()},q.prototype.expandRow=function(a){this.expandRow_(!0,a)},q.prototype.collapseRow=function(a){this.expandRow_(!1,a)},q.prototype.expandAllRows=function(b){if(b){var c=this.$body.find(f('> tr[data-index="%s"]',0)),d=this,e=null,g=!1,h=-1;if(c.next().is("tr.detail-view")?c.next().next().is("tr.detail-view")||(c.next().find(".detail-icon").click(),g=!0):(c.find("> td > .detail-icon").click(),g=!0),g)try{h=setInterval(function(){e=d.$body.find("tr.detail-view").last().find(".detail-icon"),e.length>0?e.click():clearInterval(h)},1)}catch(i){clearInterval(h)}}else for(var j=this.$body.children(),k=0;k3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
      ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/view/molistar/common/js/clipboard.min.js b/view/molistar/common/js/clipboard.min.js new file mode 100644 index 00000000..90fd15b1 --- /dev/null +++ b/view/molistar/common/js/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v1.7.1 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!c&&l)return l(a,!0);if(r)return r(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n||t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function t(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function t(){var e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px";var o=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=o+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function t(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function t(){this.selectedText=(0,i.default)(this.target),this.copyText()}},{key:"copyText",value:function t(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function t(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function t(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function t(){this.removeFake()}},{key:"action",set:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function t(){return this._action}},{key:"target",set:function t(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function t(){return this._target}}]),t}();t.exports=c})},{select:5}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if(void 0!==o)r(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var a={exports:{}};r(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(t,e,n,o){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var s=i(e),u=i(n),f=i(o),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===d(e.container)?e.container:document.body}},{key:"listenClick",value:function t(e){var n=this;this.listener=(0,f.default)(e,"click",function(t){return n.onClick(t)})}},{key:"onClick",value:function t(e){var n=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new s.default({action:this.action(n),target:this.target(n),text:this.text(n),container:this.container,trigger:n,emitter:this})}},{key:"defaultAction",value:function t(e){return l("action",e)}},{key:"defaultTarget",value:function t(e){var n=l("target",e);if(n)return document.querySelector(n)}},{key:"defaultText",value:function t(e){return l("text",e)}},{key:"destroy",value:function t(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],n="string"==typeof e?[e]:e,o=!!document.queryCommandSupported;return n.forEach(function(t){o=o&&!!document.queryCommandSupported(t)}),o}}]),e}(u.default);t.exports=p})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)}); \ No newline at end of file diff --git a/view/molistar/common/js/common.js b/view/molistar/common/js/common.js new file mode 100644 index 00000000..5c1f6575 --- /dev/null +++ b/view/molistar/common/js/common.js @@ -0,0 +1,460 @@ +function render(templateId, templateData, target) { + var html = template(templateId, templateData); + target.innerHTML += html; +} +var tranUrl = 'https://api.molistar.xyz'; + +function dateFormat(date, fmt) { + date = new Date(date); + var o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'h+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds() + }; + + // 补全0 + function padLeftZero(str) { + return ('00' + str).substr(str.length); + } + + // 年份 + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); + } + + // 月日时分秒 + for (var k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + var str = o[k] + ''; + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str)); + } + } + + date = o = padLeftZero = null; + return fmt; +} + +function convert(_url) { + var patt = /\d+/; + var num = _url.match(patt); + var rs = {}; + rs.uid = num[0]; + return rs; +} + +// 传递分享信息给客户端,showUrl为分享的页面链接,为空时表示不分享 +// function shareInfo () { +// var _url = 'https://api.kawayisound.xyz/modules/bonus/fight.html'; +// var res = EnvCheck(); +// if (res == 'test'){ +// _url = 'http://apibeta.kawayisound.xyz/modules/bonus/fight.html'; +// } +// var info = { +// title: '轻寻与你一起红', +// imgUrl: 'https://img.erbanyy.com/qingxunlogo-256.png', +// desc: '登录即送20红包,每天还有分享红包,邀请红包,分成红包,四重红包大礼等你来拿', +// showUrl: _url +// }; +// return JSON.stringify(info); +// } + +// 根据域名适配环境 +function EnvCheck() { + if (window.location.href) { + var _url = window.location.href; + var res = _url.match(/uat/); + var res1 = _url.match(/120.79.211.243/); + var res2 = _url.match(/192.168.9.50/) + var res3 = _url.match(/127.0/) + if (res || res1 || res2 || res3) { + return 'test'; + } else { + return 'live'; + } + } +} + +// 根据域名判断是本地打开还是服务器打开 +function locateJudge() { + if (window.location.href) { + var _url = window.location.href; + var res = _url.match(/test|localhost/); + if (res) { + return '/api'; + } else { + return ''; + } + } +} + +// 获取地址栏参数 +function getQueryString() { + var _url = location.search; + if(_url.indexOf('%') != -1){ + _url = _url.replace(/%/g, '%25') + } + var theRequest = new Object(); + if (_url.indexOf('?') != -1) { + var str = _url.substr(1); + strs = str.split('&'); + for (var i in strs) { + theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]); + } + } + + return theRequest; +} + +// 判断浏览器内核,手机类型 +function checkVersion() { + var u = navigator.userAgent, + app = navigator.appVersion; + return { + trident: u.indexOf('Trident') > -1, //IE内核 + presto: u.indexOf('Presto') > -1, //opera内核 + webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 + gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 + mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 + ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 + android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端 + iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器 + iPad: u.indexOf('iPad') > -1, //是否iPad + webApp: u.indexOf('Safari') > -1, //是否web应该程序,没有头部与底部 + weixin: u.indexOf('MicroMessenger') > -1, //是否微信 + qq: u.match(/\sQQ/i) == " qq", //是否QQ + molistar: u.match('molistarApp'), + app: u.match('molistarApp') //是否在app内 + }; +} + +// 图片预加载 +function preloadImage(obj) { + console.log(obj) + var loadLength = 0, + newImages = []; + for (var i = 0; i < obj.imageArr.length; i++) { + newImages[i] = new Image(); + newImages[i].src = obj.imageArr[i]; + newImages[i].onload = newImages[i].onerror = function() { + loadLength++; + typeof obj.preloadPreFunc === 'function' && obj.preloadPreFunc(loadLength); + if (loadLength == obj.imageArr.length) { + typeof obj.doneFunc === 'function' && obj.doneFunc(); + } + } + } +} + +// 判断是否在App内 +function isApp() { + var androidBol = false; + var osBol = false; + if (window.androidJsObj && typeof window.androidJsObj === 'object') { + androidBol = true; + } + if (window.webkit) { + console.log(window.webkit); + osBol = true; + } + return (androidBol || osBol); + +} + +function UrlSearch() { + var name, value; + var str = location.href; + var num = str.indexOf("?") + str = str.substr(num + 1); + var arr = str.split("&"); + for (var i = 0; i < arr.length; i++) { + num = arr[i].indexOf("="); + if (num > 0) { + name = arr[i].substring(0, num); + value = arr[i].substr(num + 1); + this[name] = value; + } + } + return value; +} + +function erbanMask(channel, tags, params) { + //此函数用于一般的轻寻底层面罩 + var browser = checkVersion(); + var env = EnvCheck(); + // params = params? params:0; + var bol = $.isEmptyObject(params); + var keyId = "978cd79c98264f836450afda1228762e"; + if (browser.ios) { + if (env == 'test') { + keyId = '33f560a83c9c40d465711c0038653ca0' + } + console.log('ios_linkedme_keyId:', keyId) + } + var jsonStr = ''; + if (!bol) { + jsonStr = JSON.stringify(params); + } + if (!browser.app) { + $('#mask').css('display', 'flex'); + var linkData = { + type: env, + channel: channel, + tags: tags, + // ios_custom_url: "https://itunes.apple.com/cn/app/id1252542069?mt=8", + params: jsonStr + }; + + linkedme.init(keyId, { + type: env + }, null); + + linkedme.link(linkData, function(err, response) { + if (err) { + // 生成深度链接失败,返回错误对象err + console.log('err:', err); + } else { + console.log(response); + $('#download a').attr("href", response.url); + $('.download a').attr('href', response.url); + } + }, false); + } else { + $('#mask').hide(); + } +} + +function wxConfig() { + var wxurl = encodeURIComponent(location.href.split('#')[0]); + var data = "url=" + wxurl; + console.log(data); + $.ajax({ + type: 'GET', + url: '/wx/config', + data: data, + asyc: true, + success: function(data) { + if (data.code = 200) { + wx.config({ + debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId: 'wx009d793f92c24eec', // 必填,公众号的唯一标识 + timestamp: data.data.timestamp, // 必填,生成签名的时间戳 + nonceStr: data.data.nonceStr, // 必填,生成签名的随机串 + signature: data.data.signature, // 必填,签名,见附录1 + jsApiList: data.data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 + }); + wx.error(function(res) { + console.log('config error,msg:' + res); + }); + } + }, + error: function(res) { + console.log('config error,msg:' + res); + } + }) +} + +function refreshWeb() { + window.location.href = window.location.href; +} + +function shareInfo(urlMsg) { + if (urlMsg) { + var env = EnvCheck(); + if (env == 'test') { + return 'http://apibeta.kawayisound.xyz/' + urlMsg; + } else { + return 'https://api.kawayisound.xyz/' + urlMsg; + } + } +} + +function initNav(obj) { + if ($.isEmptyObject(obj)) { + return; + } + var browser = checkVersion(); + console.log(browser); + if (browser.app) { + if (browser.ios) { + window.webkit.messageHandlers.initNav.postMessage(obj); + } else if (browser.android) { + var json = JSON.stringify(obj); + window.androidJsObj.initNav(json); + } + } +} + +var tools = { + cookieUtils: { + set: function(key, val, time) { + var date = new Date(); + var expiresDays = time; + date.setTime(date.getTime() + expiresDays * 24 * 3600 * 1000); + document.cookie = key + '=' + val + ';expires=' + date.toGMTString(); + }, + + get: function(key) { + var getCookie = document.cookie.replace(/[ ]/g, ""); + var arrCookie = getCookie.split(';'); + var val; + for (var i = 0; i < arrCookie.length; i++) { + var arr = arrCookie[i].split('='); + if (key === arr[0]) { + val = arr[1]; + break; + } + } + return val; + }, + + delete: function(key) { + var date = new Date(); + date.setTime(date.getTime() - 10000); + document.cookie = key + "+v; expires =" + date.toGMTString(); + } + }, + + nativeUtils: { + jumpAppointPage: function(type, val) { + // routerType 跳转名称 + // routerVal 跳转需要传的参数 + + var browser = checkVersion(); + var jumpObj = {}; + jumpObj.routerType = routeTypeConstant[type]; + if (val) { + jumpObj.routerVal = val; + } + + if (browser.app) { + if (browser.ios) { + if (type.indexOf('_') > -1) { + window.webkit.messageHandlers.jumpAppointPage.postMessage(jumpObj); + } else { + if (val) { + window.webkit.messageHandlers.type.postMessage(val); + } else { + window.webkit.messageHandlers.type.postMessage(null); + } + } + } else if (browser.android) { + if (androidJsObj && typeof androidJsObj === 'object') { + if (type.indexOf('_') > -1) { + window.androidJsObj.jumpAppointPage(JSON.stringify(jumpObj)); + } else { + if (val) { + window.androidJsObj.type(val); + } else { + window.androidJsObj.type(); + } + } + } + } + } + }, + + getUid: function() { + var browser = checkVersion(); + console.log(browser); + var val; + if (browser.app) { + if (browser.ios) { + val = tools.cookieUtils.get('uid'); + } else if (browser.android) { + if (androidJsObj && typeof androidJsObj === 'object') { + val = parseInt(window.androidJsObj.getUid()); + } + } + } else { + var locate = getQueryString(); + if (!locate.uid && !locate.shareUid) { + val = 901189; + } else { + if (locate.shareUid) { + val = locate.shareUid; + } else { + val = locate.uid; + } + } + } + return val; + + }, + + getTicket: function() { + var browser = checkVersion(); + var val; + if (browser.app) { + if (browser.ios) { + val = window.webkit.messageHandlers.getTicket.postMessage(null); + } else if (browser.android) { + if (androidJsObj && typeof androidJsObj === 'object') { + val = window.androidJsObj.getTicket(); + } + } + } else { + val = 'app外' + } + return val; + } + } +} + +// 透明loading层 +var $Loading = { + count: 0, + isFadeOut: false, + show: function() { + this.count++; + if ($('#loadingToast').length >= 1) { + if (this.isFadeOut) { + this.isFadeOut = false; + $('#loadingToast').stop(true).fadeTo(0, 1); + } + } else { + $('body').append('') + $('#loadingToast').fadeIn(100); + } + }, + hide: function() { + this.count--; + if (this.count === 0) { + this.isFadeOut = true; + $('#loadingToast').fadeOut(200, function() { + $Loading.isFadeOut = false; + $(this).remove(); + }); + } + } +}; +var requestBaseUrl = locateJudge(); +// ajax +function request(type, option) { + return $.ajax({ + type: type, + url: requestBaseUrl + option.url, + data: option.data, + headers: option.headers, + beforeSend: function(xhr) { + !option.isHideLoading && $Loading.show(); + }, + success: function(res, status, xhr) { + !option.isHideLoading && $Loading.hide(); + typeof option.success === 'function' && option.success(res, status, xhr); + }, + error: function(xhr, status, error) { + !option.isHideLoading && $Loading.hide(); + typeof option.error === 'function' && option.error(xhr, status, error); + } + }) +} +// ajax get +function getJSON(option) { + request('get', option) +} +// ajax post +function postJSON(option) { + request('post', option); +} \ No newline at end of file diff --git a/view/molistar/common/js/common2.js b/view/molistar/common/js/common2.js new file mode 100644 index 00000000..e3e3491e --- /dev/null +++ b/view/molistar/common/js/common2.js @@ -0,0 +1,805 @@ +const productUrl = 'https://api.molistar.xyz'; // 正式环境 +const testUrl = 'http://beta.api.molistar.fun'; // 测试环境 + + +function render (templateId, templateData, target) { + var html = template(templateId, templateData); + target.innerHTML += html; +} +var tranUrl = 'https://api.molistar.xyz'; + +function dateFormat (date, fmt) { + date = new Date(date); + var o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'h+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds() + }; + + // 补全0 + function padLeftZero (str) { + return ('00' + str).substr(str.length); + } + + // 年份 + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); + } + + // 月日时分秒 + for (var k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + var str = o[k] + ''; + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str)); + } + } + + date = o = padLeftZero = null; + return fmt; +} + +function convert (_url) { + var patt = /\d+/; + var num = _url.match(patt); + var rs = {}; + rs.uid = num[0]; + return rs; +} + +// 传递分享信息给客户端,showUrl为分享的页面链接,为空时表示不分享 +// function shareInfo () { +// var _url = 'https://api.kawayisound.xyz/modules/bonus/fight.html'; +// var res = EnvCheck(); +// if (res == 'test'){ +// _url = 'http://apibeta.kawayisound.xyz/modules/bonus/fight.html'; +// } +// var info = { +// title: '轻寻与你一起红', +// imgUrl: 'https://img.erbanyy.com/qingxunlogo-256.png', +// desc: '登录即送20红包,每天还有分享红包,邀请红包,分成红包,四重红包大礼等你来拿', +// showUrl: _url +// }; +// return JSON.stringify(info); +// } + +// 根据域名适配环境 +function EnvCheck () { + if (window.location.href) { + var _url = window.location.href; + var res = _url.match(/uat/); + var res1 = _url.match(/120.79.211.243/); + var res2 = _url.match(/192.168./) + var res3 = _url.match(/127.0/) + var res4 = _url.match(/beta/) + if (res || res1 || res2 || res3 || res4) { + return 'test'; + } else { + return 'live'; + } + } +} + + +// 根据域名判断 正式环境(含www)/测试环境(含beta), 并返回所需url前缀 +// written by zxfxiong +function getUrlPrefix () { + if (!EnvCheck()) return undefined; + return EnvCheck() === 'live' ? productUrl : testUrl; +} + + + +// 根据域名判断是本地打开还是服务器打开 +function locateJudge () { + if (window.location.href) { + var _url = window.location.href; + var res = _url.match(/test|localhost/); + if (res) { + return '/api'; + } else { + return ''; + } + } +} + +// 获取地址栏参数 +function getQueryString () { + var _url = location.search; + var theRequest = new Object(); + if (_url.indexOf('?') != -1) { + var str = _url.substr(1); + strs = str.split('&'); + for (var i in strs) { + theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]); + } + } + return theRequest; +} + +// 判断浏览器内核,手机类型 +function checkVersion () { + var u = navigator.userAgent, + app = navigator.appVersion; + return { + trident: u.indexOf('Trident') > -1, //IE内核 + presto: u.indexOf('Presto') > -1, //opera内核 + webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 + gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 + mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 + ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 + android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端 + iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器 + iPad: u.indexOf('iPad') > -1, //是否iPad + webApp: u.indexOf('Safari') > -1, //是否web应该程序,没有头部与底部 + weixin: u.indexOf('MicroMessenger') > -1, //是否微信 + qq: u.match(/\sQQ/i) == " qq", //是否QQ + molistar: u.match('molistarApp'), + app: u.match('molistarApp') //是否在app内 + }; +} + +// 图片预加载 +function preloadImage (obj) { + console.log(obj) + var loadLength = 0, + newImages = []; + for (var i = 0; i < obj.imageArr.length; i++) { + newImages[i] = new Image(); + newImages[i].src = obj.imageArr[i]; + newImages[i].onload = newImages[i].onerror = function () { + loadLength++; + typeof obj.preloadPreFunc === 'function' && obj.preloadPreFunc(loadLength); + if (loadLength == obj.imageArr.length) { + typeof obj.doneFunc === 'function' && obj.doneFunc(); + } + } + } +} + +// 判断是否在App内 +function isApp () { + var androidBol = false; + var osBol = false; + if (window.androidJsObj && typeof window.androidJsObj === 'object') { + androidBol = true; + } + if (window.webkit) { + console.log(window.webkit); + osBol = true; + } + return (androidBol || osBol); + +} + +function UrlSearch () { + var name, value; + var str = location.href; + var num = str.indexOf("?") + str = str.substr(num + 1); + var arr = str.split("&"); + for (var i = 0; i < arr.length; i++) { + num = arr[i].indexOf("="); + if (num > 0) { + name = arr[i].substring(0, num); + value = arr[i].substr(num + 1); + this[name] = value; + } + } + return value; +} + +function erbanMask (channel, tags, params) { + //此函数用于一般的轻寻底层面罩 + var browser = checkVersion(); + var env = EnvCheck(); + // params = params? params:0; + var bol = $.isEmptyObject(params); + var keyId = "978cd79c98264f836450afda1228762e"; + if (browser.ios) { + if (env == 'test') { + keyId = '33f560a83c9c40d465711c0038653ca0' + } + console.log('ios_linkedme_keyId:', keyId) + } + var jsonStr = ''; + if (!bol) { + jsonStr = JSON.stringify(params); + } + if (!browser.app) { + $('#mask').css('display', 'flex'); + var linkData = { + type: env, + channel: channel, + tags: tags, + // ios_custom_url: "https://itunes.apple.com/cn/app/id1252542069?mt=8", + params: jsonStr + }; + + linkedme.init(keyId, { + type: env + }, null); + + linkedme.link(linkData, function (err, response) { + if (err) { + // 生成深度链接失败,返回错误对象err + console.log('err:', err); + } else { + console.log(response); + $('#download a').attr("href", response.url); + $('.download a').attr('href', response.url); + } + }, false); + } else { + $('#mask').hide(); + } +} + +function wxConfig () { + var wxurl = encodeURIComponent(location.href.split('#')[0]); + var data = "url=" + wxurl; + console.log(data); + $.ajax({ + type: 'GET', + url: '/wx/config', + data: data, + asyc: true, + success: function (data) { + if (data.code = 200) { + wx.config({ + debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId: 'wx009d793f92c24eec', // 必填,公众号的唯一标识 + timestamp: data.data.timestamp, // 必填,生成签名的时间戳 + nonceStr: data.data.nonceStr, // 必填,生成签名的随机串 + signature: data.data.signature, // 必填,签名,见附录1 + jsApiList: data.data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 + }); + wx.error(function (res) { + console.log('config error,msg:' + res); + }); + } + }, + error: function (res) { + console.log('config error,msg:' + res); + } + }) +} + +function refreshWeb () { + window.location.href = window.location.href; +} + +function shareInfo (urlMsg) { + if (urlMsg) { + var env = EnvCheck(); + if (env == 'test') { + return 'http://apibeta.kawayisound.xyz/' + urlMsg; + } else { + return 'https://api.kawayisound.xyz/' + urlMsg; + } + } +} + +function initNav (obj) { + if ($.isEmptyObject(obj)) { + return; + } + var browser = checkVersion(); + console.log(browser); + if (browser.app) { + if (browser.ios) { + window.webkit.messageHandlers.initNav.postMessage(obj); + } else if (browser.android) { + var json = JSON.stringify(obj); + window.androidJsObj.initNav(json); + } + } +} + +var tools = { + cookieUtils: { + set: function (key, val, time) { + var date = new Date(); + var expiresDays = time; + date.setTime(date.getTime() + expiresDays * 24 * 3600 * 1000); + document.cookie = key + '=' + val + ';expires=' + date.toGMTString(); + }, + + get: function (key) { + var getCookie = document.cookie.replace(/[ ]/g, ""); + var arrCookie = getCookie.split(';'); + var val; + for (var i = 0; i < arrCookie.length; i++) { + var arr = arrCookie[i].split('='); + if (key === arr[0]) { + val = arr[1]; + break; + } + } + return val; + }, + + delete: function (key) { + var date = new Date(); + date.setTime(date.getTime() - 10000); + document.cookie = key + "+v; expires =" + date.toGMTString(); + } + }, + + nativeUtils: { + jumpAppointPage: function (type, val) { + // routerType 跳转名称 + // routerVal 跳转需要传的参数 + + var browser = checkVersion(); + var jumpObj = {}; + jumpObj.routerType = routeTypeConstant[type]; + if (val) { + jumpObj.routerVal = val; + } + + if (browser.app) { + if (browser.ios) { + if (type.indexOf('_') > -1) { + window.webkit.messageHandlers.jumpAppointPage.postMessage(jumpObj); + } else { + if (val) { + window.webkit.messageHandlers.type.postMessage(val); + } else { + window.webkit.messageHandlers.type.postMessage(null); + } + } + } else if (browser.android) { + if (androidJsObj && typeof androidJsObj === 'object') { + if (type.indexOf('_') > -1) { + window.androidJsObj.jumpAppointPage(JSON.stringify(jumpObj)); + } else { + if (val) { + window.androidJsObj.type(val); + } else { + window.androidJsObj.type(); + } + } + } + } + } + }, + + getUid: function () { + var browser = checkVersion(); + console.log(browser); + var val; + if (browser.app) { + if (browser.ios) { + val = tools.cookieUtils.get('uid'); + } else if (browser.android) { + if (androidJsObj && typeof androidJsObj === 'object') { + val = parseInt(window.androidJsObj.getUid()); + } + } + } else { + var locate = getQueryString(); + if (!locate.uid && !locate.shareUid) { + val = 901189; + } else { + if (locate.shareUid) { + val = locate.shareUid; + } else { + val = locate.uid; + } + } + } + return val; + + }, + + getTicket: function () { + var browser = checkVersion(); + var val; + if (browser.app) { + if (browser.ios) { + val = window.webkit.messageHandlers.getTicket.postMessage(null); + } else if (browser.android) { + if (androidJsObj && typeof androidJsObj === 'object') { + val = window.androidJsObj.getTicket(); + } + } + } else { + val = 'app外' + } + return val; + } + } +} + +// 透明loading层 +var $Loading = { + count: 0, + isFadeOut: false, + show: function () { + this.count++; + if ($('#loadingToast').length >= 1) { + if (this.isFadeOut) { + this.isFadeOut = false; + $('#loadingToast').stop(true).fadeTo(0, 1); + } + } else { + $('body').append('') + $('#loadingToast').fadeIn(100); + } + }, + hide: function () { + this.count--; + if (this.count === 0) { + this.isFadeOut = true; + $('#loadingToast').fadeOut(200, function () { + $Loading.isFadeOut = false; + $(this).remove(); + }); + } + } +}; +var requestBaseUrl = locateJudge(); +// ajax +function request (type, option) { + return $.ajax({ + type: type, + url: requestBaseUrl + option.url, + data: option.data, + headers: option.headers, + beforeSend: function (xhr) { + !option.isHideLoading && $Loading.show(); + }, + success: function (res, status, xhr) { + !option.isHideLoading && $Loading.hide(); + typeof option.success === 'function' && option.success(res, status, xhr); + }, + error: function (xhr, status, error) { + !option.isHideLoading && $Loading.hide(); + typeof option.error === 'function' && option.error(xhr, status, error); + } + }) +} +// ajax get +function getJSON (option) { + request('get', option) +} +// ajax post +function postJSON (option) { + request('post', option); +} + + + +// 封装 获取公共参数的方法(客户端提供) +// written by zxfxiong +const methodsFromClient = { + // 注意:ios 提供的方法属异步操作 + "uid": { + android: () => window.androidJsObj.getUid(), + ios: function () { + window.webkit.messageHandlers.getUid.postMessage(null); + + // let allcookies = document.cookie; + // let $uid = allcookies.match(/\d+/); + // console.log($uid[0]); + + } + }, + "ticket": { + android: () => window.androidJsObj.getTicket(), + ios: function () { + window.webkit.messageHandlers.getTicket.postMessage(null); + } + }, + "roomUid": { + android: () => window.androidJsObj.getRoomUid(), + ios: function () { + window.webkit.messageHandlers.getRoomUid.postMessage(null); + } + }, + "deviceId": { + android: () => window.androidJsObj.getDeviceId(), + ios: function () { + window.webkit.messageHandlers.getDeviceId.postMessage(null); + } + }, + "deviceInfo": { + android: () => window.androidJsObj.getDeviceInfo(), + ios: function () { + window.webkit.messageHandlers.getDeviceInfo.postMessage(null); + } + }, + "encryptPwd": { + android: (data) => window.androidJsObj.encryptPwd(data), + ios: function (data) { + window.webkit.messageHandlers.encryptPwd.postMessage(data); + } + } + +} + +// 全局获取并配置公共参数 +// written by zxfxiong +const pubInfo = {}; +function getInfoFromClient () { + const browser = checkVersion(); + if (browser.app) { + console.log('从客户端获取了用户信息(设备信息),此信息来源:common2.js'); + if (browser.android) { + pubInfo.uid = methodsFromClient.uid.android(); + pubInfo.roomUid = methodsFromClient.roomUid.android(); + pubInfo.ticket = methodsFromClient.ticket.android(); + pubInfo.deviceId = methodsFromClient.deviceId.android(); + pubInfo.deviceInfo = methodsFromClient.deviceInfo.android(); + } else { + methodsFromClient.uid.ios(); + methodsFromClient.roomUid.ios(); + methodsFromClient.ticket.ios(); + methodsFromClient.deviceId.ios(); + methodsFromClient.deviceInfo.ios(); + } + + } else { + // 非app环境调试参数 + pubInfo.uid = sessionStorage.getItem("uid") ? sessionStorage.getItem("uid") : ''; + // pubInfo.ticket = sessionStorage.getItem("ticket") ? sessionStorage.getItem("ticket") : ''; + pubInfo.h5_token = sessionStorage.getItem("ticket") ? sessionStorage.getItem("ticket") : ''; + pubInfo.deviceId = "0"; + pubInfo.deviceInfo = { + app: 'molistarApp', + appVersion: '9.9.9', + os: '0.0.0', + osVersion: '0.0.0', + channel: 'browser', + client: 'h5' + }; + } +}; +// 繁体字转换方法 +// fontConvert(true);//调用字体转换函数 +// setTimeout(function () { +fontConvert(true);//调用字体转换函数 +// }, 1000) +function fontConvert (fontConvertBool) { + function SconvertT () {//简体转换繁体 + document.head.innerHTML = s2t(document.head.innerHTML); + document.body.innerHTML = s2t(document.body.innerHTML); + // document.body.innerHTML + } + function TconvertS () {//繁体转换简体 + document.head.innerHTML = t2s(document.head.innerHTML); + document.body.innerHTML = t2s(document.body.innerHTML); + } + if (fontConvertBool) { + SconvertT();//转换繁体字 + } else { + TconvertS()//转换简体字 + } + + //功能:转换对象,使用递归,逐层剥到文本; + function transformContent (switcherId, fobj) { + if (typeof (fobj) == "object") { + var obj = fobj.childNodes + } else { + if (parseInt(fobj) != 0) { //在页面初始化时控制不更新当前页面语言状态; + var switcherObj = document.getElementById(switcherId); + with (switcherObj) { + if (parseInt(isCurrentFt)) { + innerHTML = innerHTML.replace('简', '繁') + title = title.replace('简', '繁') + } else { + innerHTML = innerHTML.replace('繁', '简') + title = title.replace('繁', '简') + } + } + switcherObj.innerHTML = transformText(switcherObj.innerHTML, isCurrentFt) + switcherObj.title = transformText(switcherObj.title, isCurrentFt) + + if (isCurrentFt == "1") { isCurrentFt = "0" } else { isCurrentFt = "1" } + writeCookie("isCurrentFt", isCurrentFt) + } + var obj = document.body.childNodes + } + for (var i = 0; i < obj.length; i++) { + var OO = obj.item(i) + if ("||BR|HR|TEXTAREA|".indexOf("|" + OO.tagName + "|") > 0 || OO.id == switcherId) continue; + if (OO.title != "" && OO.title != null) OO.title = transformText(OO.title, isCurrentFt); + if (OO.alt != "" && OO.alt != null) OO.alt = transformText(OO.alt, isCurrentFt); + if (OO.tagName == "INPUT" && OO.value != "" && OO.type != "text" && OO.type != "hidden") OO.value = transformText(OO.value, isCurrentFt); + if (OO.nodeType == 3) { OO.data = transformText(OO.data, isCurrentFt) } + else transformContent(switcherId, OO) + } + } + //功能:转换指定字符串; + function transformText (txt, isFt) { + if (txt == null || txt == "") return "" + if (parseInt(isFt)) { return s2t(txt) } else { return t2s(txt) } + } + //功能:简体字符转为繁体字符; + function s2t (cc) { + var str = '', ss = jtpy(), tt = ftpy(); + for (var i = 0; i < cc.length; i++) { + var c = cc.charAt(i); + if (c.charCodeAt(0) > 10000 && ss.indexOf(c) != -1) str += tt.charAt(ss.indexOf(c)); + else str += c; + } + return str; + } + //功能:繁体字符转为简体字符; + function t2s (cc) { + var str = '', ss = jtpy(), tt = ftpy(); + for (var i = 0; i < cc.length; i++) { + var c = cc.charAt(i); + if (c.charCodeAt(0) > 10000 && tt.indexOf(c) != -1) str += ss.charAt(tt.indexOf(c)); + else str += c; + } + return str; + } + function jtpy () { + return '号隐爱的魔力之旅週金币榜皑蔼碍翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鼈瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲産阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍迭钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋複负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡鈎沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩彙讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞淨纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾曆沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂齧镊镍柠狞甯拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂啓气弃讫牵扦釺铅迁签谦钱钳潜浅谴堑枪呛牆蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陝赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈歎汤烫涛縧腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围爲潍维苇伟僞纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹鏽绣虚嘘须许绪续轩悬选癣绚学勳询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严顔阎豔厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃髒凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质锺终种肿衆诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组鑽緻钟么为隻凶准启闆裡雳馀鍊洩并'; + } + function ftpy () { + return '號隱愛的魔力之旅週金幣榜皚藹礙翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調疊諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麼黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰寧擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩並'; + } + //功能:获取指定名称的 Cookie 值; + function readCookie (name) { + var value = ""; + if (document.cookie.length > 0) { + var prefix = name + "="; + var begin = document.cookie.indexOf(prefix); + if (begin != -1) { + begin += prefix.length; + var end = document.cookie.indexOf(";", begin); + if (end == -1) end = document.cookie.length; + value = unescape(document.cookie.substring(begin, end)); + } + } + return value; + } + //功能:设置指定名称的 Cookie 值; + function writeCookie (name, value, days) { + var argv = writeCookie.arguments; + var argc = writeCookie.arguments.length; + var days = (argc > 2) ? argv[2] : null; + if (days != null) { + var expireDate = new Date(); + expireDate.setTime(expireDate.getTime() + (days * 1000 * 3600 * 24)); + } + document.cookie = name + "=" + escape(value) + ((days == null) ? "" : ("; expires=" + expireDate.toGMTString())) + "; path=/"; + } + + var isCurrentFt; + //功能:页面初始化函数 + // switcherId 文字链接,点击负责简繁切换,建议:繁体中文; + // isDefaultFt 当前文档默认是否为繁体中文; + // delay 页面加载后的转换延迟时间,单位毫秒; + // 使用的 Cookie 变量名称:isCurrentFt + function initPageLanguage (switcherId, isDefaultFt, delay) { + isDefaultFt = isDefaultFt ? "1" : "0"; + var switcherObj = document.getElementById(switcherId) + isCurrentFt = readCookie("isCurrentFt") + if (isCurrentFt == null || isCurrentFt == "") isCurrentFt = isDefaultFt + with (switcherObj) { + if (typeof (document.all) != "object") {//非IE浏览器 + href = "javascript:transformContent('" + switcherId + "');" + } else { + href = "#"; + onclick = new Function("transformContent('" + switcherId + "');return false;") + } + if (title == null || title == "") title = "点击以繁体中文方式浏览"; + if (parseInt(isCurrentFt)) { + innerHTML = innerHTML.replace('繁', '简') + title = title.replace('繁', '简') + } + innerHTML = transformText(innerHTML, parseInt(isCurrentFt) ? 0 : 1) + title = transformText(title, parseInt(isCurrentFt) ? 0 : 1) + } + if (isCurrentFt != isDefaultFt) { setTimeout("transformContent('" + switcherId + "',0)", delay) } + } + // 初始化调用接口 + //initPageLanguage("switcher_link", false, 50); +} +// 封装数值超过最大数位处理单位 +function unitProcessing (val, num, toFixeds, text) { //值 以什么为单位 保留几位小数 单位后最w + return val >= num ? (Math.floor(val / 1000) / 10).toFixed(toFixeds) + text : val; +} +// 封装 在ios环境中 配置公共参数的回调函数 +// 配合 methodsFromClient[infoName].ios 方法 +// written by zxfxiong +function getMessage (key, value) { + pubInfo[key] = value; +} + +function objToParam (a) { + var s = [], + rbracket = /\[\]$/, + isArray = function (obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + }, + add = function (k, v) { + v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v; + s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v); + }, + buildParams = function (prefix, obj) { + var i, len, key; + + if (prefix) { + if (isArray(obj)) { + for (i = 0, len = obj.length; i < len; i++) { + if (rbracket.test(prefix)) { + add(prefix, obj[i]); + } else { + buildParams(prefix + '[' + (typeof obj[i] === 'object' ? i : '') + ']', obj[i]); + } + } + } else if (obj && String(obj) === '[object Object]') { + for (key in obj) { + buildParams(prefix + '[' + key + ']', obj[key]); + } + } else { + add(prefix, obj); + } + } else if (isArray(obj)) { + for (i = 0, len = obj.length; i < len; i++) { + add(obj[i].name, obj[i].value); + } + } else { + for (key in obj) { + buildParams(key, obj[key]); + } + } + return s; + }; + + return buildParams('', a).join('&').replace(/%20/g, '+'); +} + +// 封装 jquery 请求 +// written by zxfxiong +function networkRequest (reqObj = {}, type) { + // 关于reqObj内部参数:与 调用原生$.ajax()时传参一致 + // 调用该函数前:须保证事先调用了 getInfoFromClient() + if (typeof pubInfo.deviceInfo === 'string') { + pubInfo.deviceInfo = JSON.parse(pubInfo.deviceInfo); + }; + var browser = checkVersion(); + const pubHeader = {}; + pubHeader.app = type != 'yinbaos' ? pubInfo.deviceInfo.app : 'yinbao' + pubHeader.appVersion = pubInfo.deviceInfo.appVersion || '' + pubHeader.os = pubInfo.deviceInfo.os || '' + pubHeader.os_version = pubInfo.deviceInfo.osVersion || '' + pubHeader.channel = pubInfo.deviceInfo.channel || '' + pubHeader.client = 'h5' + pubHeader.pub_uid = window.location.pathname.match(/login.html/) ? 0 : pubInfo.uid + if (browser.app) { + pubHeader.pub_ticket = pubInfo.ticket + } else { + pubHeader.h5_token =sessionStorage.getItem("ticket") ? sessionStorage.getItem("ticket") : ''; + } + const url = reqObj.url; + const commParams = objToParam(pubHeader); + if (url.indexOf('?') >= 0) { + reqObj.url = `${url}&${commParams}` + } else { + reqObj.url = `${url}?${commParams}` + } + + if (!reqObj.headers || typeof reqObj.headers !== 'object') { + reqObj.headers = {}; + }; + Object.assign(reqObj.headers, pubHeader); + + const response = $.ajax(reqObj); + return response; +} +// 控制body是否可以滑动 +function bodyScroolFun (bool) { + if (bool) { + $('body').css('overflow', 'hidden'); + } else { + $('body').css('overflow', 'auto'); + + } +} \ No newline at end of file diff --git a/view/molistar/common/js/crypto-js.js b/view/molistar/common/js/crypto-js.js new file mode 100644 index 00000000..27f0a620 --- /dev/null +++ b/view/molistar/common/js/crypto-js.js @@ -0,0 +1,6191 @@ +;(function (root, factory) { + if (typeof exports === "object") { + // CommonJS + module.exports = exports = factory(); + } + else if (typeof define === "function" && define.amd) { + // AMD + define([], factory); + } + else { + // Global (browser) + root.CryptoJS = factory(); + } +}(this, function () { + + /*globals window, global, require*/ + + /** + * CryptoJS core components. + */ + var CryptoJS = CryptoJS || (function (Math, undefined) { + + var crypto; + + // Native crypto from window (Browser) + if (typeof window !== 'undefined' && window.crypto) { + crypto = window.crypto; + } + + // Native crypto in web worker (Browser) + if (typeof self !== 'undefined' && self.crypto) { + crypto = self.crypto; + } + + // Native crypto from worker + if (typeof globalThis !== 'undefined' && globalThis.crypto) { + crypto = globalThis.crypto; + } + + // Native (experimental IE 11) crypto from window (Browser) + if (!crypto && typeof window !== 'undefined' && window.msCrypto) { + crypto = window.msCrypto; + } + + // Native crypto from global (NodeJS) + if (!crypto && typeof global !== 'undefined' && global.crypto) { + crypto = global.crypto; + } + + // Native crypto import via require (NodeJS) + if (!crypto && typeof require === 'function') { + try { + crypto = require('crypto'); + } catch (err) {} + } + + /* + * Cryptographically secure pseudorandom number generator + * + * As Math.random() is cryptographically not safe to use + */ + var cryptoSecureRandomInt = function () { + if (crypto) { + // Use getRandomValues method (Browser) + if (typeof crypto.getRandomValues === 'function') { + try { + return crypto.getRandomValues(new Uint32Array(1))[0]; + } catch (err) {} + } + + // Use randomBytes method (NodeJS) + if (typeof crypto.randomBytes === 'function') { + try { + return crypto.randomBytes(4).readInt32LE(); + } catch (err) {} + } + } + + throw new Error('Native crypto module could not be used to get secure random number.'); + }; + + /* + * Local polyfill of Object.create + + */ + var create = Object.create || (function () { + function F() {} + + return function (obj) { + var subtype; + + F.prototype = obj; + + subtype = new F(); + + F.prototype = null; + + return subtype; + }; + }()); + + /** + * CryptoJS namespace. + */ + var C = {}; + + /** + * Library namespace. + */ + var C_lib = C.lib = {}; + + /** + * Base object for prototypal inheritance. + */ + var Base = C_lib.Base = (function () { + + + return { + /** + * Creates a new object that inherits from this object. + * + * @param {Object} overrides Properties to copy into the new object. + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * field: 'value', + * + * method: function () { + * } + * }); + */ + extend: function (overrides) { + // Spawn + var subtype = create(this); + + // Augment + if (overrides) { + subtype.mixIn(overrides); + } + + // Create default initializer + if (!subtype.hasOwnProperty('init') || this.init === subtype.init) { + subtype.init = function () { + subtype.$super.init.apply(this, arguments); + }; + } + + // Initializer's prototype is the subtype object + subtype.init.prototype = subtype; + + // Reference supertype + subtype.$super = this; + + return subtype; + }, + + /** + * Extends this object and runs the init method. + * Arguments to create() will be passed to init(). + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var instance = MyType.create(); + */ + create: function () { + var instance = this.extend(); + instance.init.apply(instance, arguments); + + return instance; + }, + + /** + * Initializes a newly created object. + * Override this method to add some logic when your objects are created. + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * init: function () { + * // ... + * } + * }); + */ + init: function () { + }, + + /** + * Copies properties into this object. + * + * @param {Object} properties The properties to mix in. + * + * @example + * + * MyType.mixIn({ + * field: 'value' + * }); + */ + mixIn: function (properties) { + for (var propertyName in properties) { + if (properties.hasOwnProperty(propertyName)) { + this[propertyName] = properties[propertyName]; + } + } + + // IE won't copy toString using the loop above + if (properties.hasOwnProperty('toString')) { + this.toString = properties.toString; + } + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = instance.clone(); + */ + clone: function () { + return this.init.prototype.extend(this); + } + }; + }()); + + /** + * An array of 32-bit words. + * + * @property {Array} words The array of 32-bit words. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var WordArray = C_lib.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of 32-bit words. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.create(); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); + */ + init: function (words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 4; + } + }, + + /** + * Converts this word array to a string. + * + * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex + * + * @return {string} The stringified word array. + * + * @example + * + * var string = wordArray + ''; + * var string = wordArray.toString(); + * var string = wordArray.toString(CryptoJS.enc.Utf8); + */ + toString: function (encoder) { + return (encoder || Hex).stringify(this); + }, + + /** + * Concatenates a word array to this word array. + * + * @param {WordArray} wordArray The word array to append. + * + * @return {WordArray} This word array. + * + * @example + * + * wordArray1.concat(wordArray2); + */ + concat: function (wordArray) { + // Shortcuts + var thisWords = this.words; + var thatWords = wordArray.words; + var thisSigBytes = this.sigBytes; + var thatSigBytes = wordArray.sigBytes; + + // Clamp excess bits + this.clamp(); + + // Concat + if (thisSigBytes % 4) { + // Copy one byte at a time + for (var i = 0; i < thatSigBytes; i++) { + var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); + } + } else { + // Copy one word at a time + for (var j = 0; j < thatSigBytes; j += 4) { + thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2]; + } + } + this.sigBytes += thatSigBytes; + + // Chainable + return this; + }, + + /** + * Removes insignificant bits. + * + * @example + * + * wordArray.clamp(); + */ + clamp: function () { + // Shortcuts + var words = this.words; + var sigBytes = this.sigBytes; + + // Clamp + words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); + words.length = Math.ceil(sigBytes / 4); + }, + + /** + * Creates a copy of this word array. + * + * @return {WordArray} The clone. + * + * @example + * + * var clone = wordArray.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + clone.words = this.words.slice(0); + + return clone; + }, + + /** + * Creates a word array filled with random bytes. + * + * @param {number} nBytes The number of random bytes to generate. + * + * @return {WordArray} The random word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.random(16); + */ + random: function (nBytes) { + var words = []; + + for (var i = 0; i < nBytes; i += 4) { + words.push(cryptoSecureRandomInt()); + } + + return new WordArray.init(words, nBytes); + } + }); + + /** + * Encoder namespace. + */ + var C_enc = C.enc = {}; + + /** + * Hex encoding strategy. + */ + var Hex = C_enc.Hex = { + /** + * Converts a word array to a hex string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The hex string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.enc.Hex.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var hexChars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + hexChars.push((bite >>> 4).toString(16)); + hexChars.push((bite & 0x0f).toString(16)); + } + + return hexChars.join(''); + }, + + /** + * Converts a hex string to a word array. + * + * @param {string} hexStr The hex string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Hex.parse(hexString); + */ + parse: function (hexStr) { + // Shortcut + var hexStrLength = hexStr.length; + + // Convert + var words = []; + for (var i = 0; i < hexStrLength; i += 2) { + words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); + } + + return new WordArray.init(words, hexStrLength / 2); + } + }; + + /** + * Latin1 encoding strategy. + */ + var Latin1 = C_enc.Latin1 = { + /** + * Converts a word array to a Latin1 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Latin1 string. + * + * @static + * + * @example + * + * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var latin1Chars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + latin1Chars.push(String.fromCharCode(bite)); + } + + return latin1Chars.join(''); + }, + + /** + * Converts a Latin1 string to a word array. + * + * @param {string} latin1Str The Latin1 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); + */ + parse: function (latin1Str) { + // Shortcut + var latin1StrLength = latin1Str.length; + + // Convert + var words = []; + for (var i = 0; i < latin1StrLength; i++) { + words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); + } + + return new WordArray.init(words, latin1StrLength); + } + }; + + /** + * UTF-8 encoding strategy. + */ + var Utf8 = C_enc.Utf8 = { + /** + * Converts a word array to a UTF-8 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-8 string. + * + * @static + * + * @example + * + * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); + */ + stringify: function (wordArray) { + try { + return decodeURIComponent(escape(Latin1.stringify(wordArray))); + } catch (e) { + throw new Error('Malformed UTF-8 data'); + } + }, + + /** + * Converts a UTF-8 string to a word array. + * + * @param {string} utf8Str The UTF-8 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); + */ + parse: function (utf8Str) { + return Latin1.parse(unescape(encodeURIComponent(utf8Str))); + } + }; + + /** + * Abstract buffered block algorithm template. + * + * The property blockSize must be implemented in a concrete subtype. + * + * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 + */ + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ + /** + * Resets this block algorithm's data buffer to its initial state. + * + * @example + * + * bufferedBlockAlgorithm.reset(); + */ + reset: function () { + // Initial values + this._data = new WordArray.init(); + this._nDataBytes = 0; + }, + + /** + * Adds new data to this block algorithm's buffer. + * + * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. + * + * @example + * + * bufferedBlockAlgorithm._append('data'); + * bufferedBlockAlgorithm._append(wordArray); + */ + _append: function (data) { + // Convert string to WordArray, else assume WordArray already + if (typeof data == 'string') { + data = Utf8.parse(data); + } + + // Append + this._data.concat(data); + this._nDataBytes += data.sigBytes; + }, + + /** + * Processes available data blocks. + * + * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. + * + * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. + * + * @return {WordArray} The processed data. + * + * @example + * + * var processedData = bufferedBlockAlgorithm._process(); + * var processedData = bufferedBlockAlgorithm._process(!!'flush'); + */ + _process: function (doFlush) { + var processedWords; + + // Shortcuts + var data = this._data; + var dataWords = data.words; + var dataSigBytes = data.sigBytes; + var blockSize = this.blockSize; + var blockSizeBytes = blockSize * 4; + + // Count blocks ready + var nBlocksReady = dataSigBytes / blockSizeBytes; + if (doFlush) { + // Round up to include partial blocks + nBlocksReady = Math.ceil(nBlocksReady); + } else { + // Round down to include only full blocks, + // less the number of blocks that must remain in the buffer + nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); + } + + // Count words ready + var nWordsReady = nBlocksReady * blockSize; + + // Count bytes ready + var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); + + // Process blocks + if (nWordsReady) { + for (var offset = 0; offset < nWordsReady; offset += blockSize) { + // Perform concrete-algorithm logic + this._doProcessBlock(dataWords, offset); + } + + // Remove processed words + processedWords = dataWords.splice(0, nWordsReady); + data.sigBytes -= nBytesReady; + } + + // Return processed words + return new WordArray.init(processedWords, nBytesReady); + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = bufferedBlockAlgorithm.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + clone._data = this._data.clone(); + + return clone; + }, + + _minBufferSize: 0 + }); + + /** + * Abstract hasher template. + * + * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) + */ + var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + */ + cfg: Base.extend(), + + /** + * Initializes a newly created hasher. + * + * @param {Object} cfg (Optional) The configuration options to use for this hash computation. + * + * @example + * + * var hasher = CryptoJS.algo.SHA256.create(); + */ + init: function (cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Set initial values + this.reset(); + }, + + /** + * Resets this hasher to its initial state. + * + * @example + * + * hasher.reset(); + */ + reset: function () { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-hasher logic + this._doReset(); + }, + + /** + * Updates this hasher with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {Hasher} This hasher. + * + * @example + * + * hasher.update('message'); + * hasher.update(wordArray); + */ + update: function (messageUpdate) { + // Append + this._append(messageUpdate); + + // Update the hash + this._process(); + + // Chainable + return this; + }, + + /** + * Finalizes the hash computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The hash. + * + * @example + * + * var hash = hasher.finalize(); + * var hash = hasher.finalize('message'); + * var hash = hasher.finalize(wordArray); + */ + finalize: function (messageUpdate) { + // Final message update + if (messageUpdate) { + this._append(messageUpdate); + } + + // Perform concrete-hasher logic + var hash = this._doFinalize(); + + return hash; + }, + + blockSize: 512/32, + + /** + * Creates a shortcut function to a hasher's object interface. + * + * @param {Hasher} hasher The hasher to create a helper for. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); + */ + _createHelper: function (hasher) { + return function (message, cfg) { + return new hasher.init(cfg).finalize(message); + }; + }, + + /** + * Creates a shortcut function to the HMAC's object interface. + * + * @param {Hasher} hasher The hasher to use in this HMAC helper. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); + */ + _createHmacHelper: function (hasher) { + return function (message, key) { + return new C_algo.HMAC.init(hasher, key).finalize(message); + }; + } + }); + + /** + * Algorithm namespace. + */ + var C_algo = C.algo = {}; + + return C; + }(Math)); + + + (function (undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var X32WordArray = C_lib.WordArray; + + /** + * x64 namespace. + */ + var C_x64 = C.x64 = {}; + + /** + * A 64-bit word. + */ + var X64Word = C_x64.Word = Base.extend({ + /** + * Initializes a newly created 64-bit word. + * + * @param {number} high The high 32 bits. + * @param {number} low The low 32 bits. + * + * @example + * + * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607); + */ + init: function (high, low) { + this.high = high; + this.low = low; + } + + /** + * Bitwise NOTs this word. + * + * @return {X64Word} A new x64-Word object after negating. + * + * @example + * + * var negated = x64Word.not(); + */ + // not: function () { + // var high = ~this.high; + // var low = ~this.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise ANDs this word with the passed word. + * + * @param {X64Word} word The x64-Word to AND with this word. + * + * @return {X64Word} A new x64-Word object after ANDing. + * + * @example + * + * var anded = x64Word.and(anotherX64Word); + */ + // and: function (word) { + // var high = this.high & word.high; + // var low = this.low & word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise ORs this word with the passed word. + * + * @param {X64Word} word The x64-Word to OR with this word. + * + * @return {X64Word} A new x64-Word object after ORing. + * + * @example + * + * var ored = x64Word.or(anotherX64Word); + */ + // or: function (word) { + // var high = this.high | word.high; + // var low = this.low | word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise XORs this word with the passed word. + * + * @param {X64Word} word The x64-Word to XOR with this word. + * + * @return {X64Word} A new x64-Word object after XORing. + * + * @example + * + * var xored = x64Word.xor(anotherX64Word); + */ + // xor: function (word) { + // var high = this.high ^ word.high; + // var low = this.low ^ word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Shifts this word n bits to the left. + * + * @param {number} n The number of bits to shift. + * + * @return {X64Word} A new x64-Word object after shifting. + * + * @example + * + * var shifted = x64Word.shiftL(25); + */ + // shiftL: function (n) { + // if (n < 32) { + // var high = (this.high << n) | (this.low >>> (32 - n)); + // var low = this.low << n; + // } else { + // var high = this.low << (n - 32); + // var low = 0; + // } + + // return X64Word.create(high, low); + // }, + + /** + * Shifts this word n bits to the right. + * + * @param {number} n The number of bits to shift. + * + * @return {X64Word} A new x64-Word object after shifting. + * + * @example + * + * var shifted = x64Word.shiftR(7); + */ + // shiftR: function (n) { + // if (n < 32) { + // var low = (this.low >>> n) | (this.high << (32 - n)); + // var high = this.high >>> n; + // } else { + // var low = this.high >>> (n - 32); + // var high = 0; + // } + + // return X64Word.create(high, low); + // }, + + /** + * Rotates this word n bits to the left. + * + * @param {number} n The number of bits to rotate. + * + * @return {X64Word} A new x64-Word object after rotating. + * + * @example + * + * var rotated = x64Word.rotL(25); + */ + // rotL: function (n) { + // return this.shiftL(n).or(this.shiftR(64 - n)); + // }, + + /** + * Rotates this word n bits to the right. + * + * @param {number} n The number of bits to rotate. + * + * @return {X64Word} A new x64-Word object after rotating. + * + * @example + * + * var rotated = x64Word.rotR(7); + */ + // rotR: function (n) { + // return this.shiftR(n).or(this.shiftL(64 - n)); + // }, + + /** + * Adds this word with the passed word. + * + * @param {X64Word} word The x64-Word to add with this word. + * + * @return {X64Word} A new x64-Word object after adding. + * + * @example + * + * var added = x64Word.add(anotherX64Word); + */ + // add: function (word) { + // var low = (this.low + word.low) | 0; + // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0; + // var high = (this.high + word.high + carry) | 0; + + // return X64Word.create(high, low); + // } + }); + + /** + * An array of 64-bit words. + * + * @property {Array} words The array of CryptoJS.x64.Word objects. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var X64WordArray = C_x64.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.x64.WordArray.create(); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ]); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ], 10); + */ + init: function (words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 8; + } + }, + + /** + * Converts this 64-bit word array to a 32-bit word array. + * + * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array. + * + * @example + * + * var x32WordArray = x64WordArray.toX32(); + */ + toX32: function () { + // Shortcuts + var x64Words = this.words; + var x64WordsLength = x64Words.length; + + // Convert + var x32Words = []; + for (var i = 0; i < x64WordsLength; i++) { + var x64Word = x64Words[i]; + x32Words.push(x64Word.high); + x32Words.push(x64Word.low); + } + + return X32WordArray.create(x32Words, this.sigBytes); + }, + + /** + * Creates a copy of this word array. + * + * @return {X64WordArray} The clone. + * + * @example + * + * var clone = x64WordArray.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + + // Clone "words" array + var words = clone.words = this.words.slice(0); + + // Clone each X64Word object + var wordsLength = words.length; + for (var i = 0; i < wordsLength; i++) { + words[i] = words[i].clone(); + } + + return clone; + } + }); + }()); + + + (function () { + // Check if typed arrays are supported + if (typeof ArrayBuffer != 'function') { + return; + } + + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + + // Reference original init + var superInit = WordArray.init; + + // Augment WordArray.init to handle typed arrays + var subInit = WordArray.init = function (typedArray) { + // Convert buffers to uint8 + if (typedArray instanceof ArrayBuffer) { + typedArray = new Uint8Array(typedArray); + } + + // Convert other array views to uint8 + if ( + typedArray instanceof Int8Array || + (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) || + typedArray instanceof Int16Array || + typedArray instanceof Uint16Array || + typedArray instanceof Int32Array || + typedArray instanceof Uint32Array || + typedArray instanceof Float32Array || + typedArray instanceof Float64Array + ) { + typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); + } + + // Handle Uint8Array + if (typedArray instanceof Uint8Array) { + // Shortcut + var typedArrayByteLength = typedArray.byteLength; + + // Extract bytes + var words = []; + for (var i = 0; i < typedArrayByteLength; i++) { + words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8); + } + + // Initialize this word array + superInit.call(this, words, typedArrayByteLength); + } else { + // Else call normal init + superInit.apply(this, arguments); + } + }; + + subInit.prototype = WordArray; + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * UTF-16 BE encoding strategy. + */ + var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = { + /** + * Converts a word array to a UTF-16 BE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 BE string. + * + * @static + * + * @example + * + * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; + utf16Chars.push(String.fromCharCode(codePoint)); + } + + return utf16Chars.join(''); + }, + + /** + * Converts a UTF-16 BE string to a word array. + * + * @param {string} utf16Str The UTF-16 BE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16.parse(utf16String); + */ + parse: function (utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); + } + + return WordArray.create(words, utf16StrLength * 2); + } + }; + + /** + * UTF-16 LE encoding strategy. + */ + C_enc.Utf16LE = { + /** + * Converts a word array to a UTF-16 LE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 LE string. + * + * @static + * + * @example + * + * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); + utf16Chars.push(String.fromCharCode(codePoint)); + } + + return utf16Chars.join(''); + }, + + /** + * Converts a UTF-16 LE string to a word array. + * + * @param {string} utf16Str The UTF-16 LE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); + */ + parse: function (utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); + } + + return WordArray.create(words, utf16StrLength * 2); + } + }; + + function swapEndian(word) { + return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); + } + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * Base64 encoding strategy. + */ + var Base64 = C_enc.Base64 = { + /** + * Converts a word array to a Base64 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Base64 string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = this._map; + + // Clamp excess bits + wordArray.clamp(); + + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + + for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + + return base64Chars.join(''); + }, + + /** + * Converts a Base64 string to a word array. + * + * @param {string} base64Str The Base64 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64.parse(base64String); + */ + parse: function (base64Str) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = this._map; + var reverseMap = this._reverseMap; + + if (!reverseMap) { + reverseMap = this._reverseMap = []; + for (var j = 0; j < map.length; j++) { + reverseMap[map.charCodeAt(j)] = j; + } + } + + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex !== -1) { + base64StrLength = paddingIndex; + } + } + + // Convert + return parseLoop(base64Str, base64StrLength, reverseMap); + + }, + + _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' + }; + + function parseLoop(base64Str, base64StrLength, reverseMap) { + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); + var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); + var bitsCombined = bits1 | bits2; + words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + return WordArray.create(words, nBytes); + } + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * Base64url encoding strategy. + */ + var Base64url = C_enc.Base64url = { + /** + * Converts a word array to a Base64url string. + * + * @param {WordArray} wordArray The word array. + * + * @param {boolean} urlSafe Whether to use url safe + * + * @return {string} The Base64url string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64url.stringify(wordArray); + */ + stringify: function (wordArray, urlSafe=true) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = urlSafe ? this._safe_map : this._map; + + // Clamp excess bits + wordArray.clamp(); + + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + + for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + + return base64Chars.join(''); + }, + + /** + * Converts a Base64url string to a word array. + * + * @param {string} base64Str The Base64url string. + * + * @param {boolean} urlSafe Whether to use url safe + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64url.parse(base64String); + */ + parse: function (base64Str, urlSafe=true) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = urlSafe ? this._safe_map : this._map; + var reverseMap = this._reverseMap; + + if (!reverseMap) { + reverseMap = this._reverseMap = []; + for (var j = 0; j < map.length; j++) { + reverseMap[map.charCodeAt(j)] = j; + } + } + + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex !== -1) { + base64StrLength = paddingIndex; + } + } + + // Convert + return parseLoop(base64Str, base64StrLength, reverseMap); + + }, + + _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', + _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_', + }; + + function parseLoop(base64Str, base64StrLength, reverseMap) { + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); + var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); + var bitsCombined = bits1 | bits2; + words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + return WordArray.create(words, nBytes); + } + }()); + + (function (Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var T = []; + + // Compute constants + (function () { + for (var i = 0; i < 64; i++) { + T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; + } + }()); + + /** + * MD5 hash algorithm. + */ + var MD5 = C_algo.MD5 = Hasher.extend({ + _doReset: function () { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476 + ]); + }, + + _doProcessBlock: function (M, offset) { + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + + // Shortcuts + var H = this._hash.words; + + var M_offset_0 = M[offset + 0]; + var M_offset_1 = M[offset + 1]; + var M_offset_2 = M[offset + 2]; + var M_offset_3 = M[offset + 3]; + var M_offset_4 = M[offset + 4]; + var M_offset_5 = M[offset + 5]; + var M_offset_6 = M[offset + 6]; + var M_offset_7 = M[offset + 7]; + var M_offset_8 = M[offset + 8]; + var M_offset_9 = M[offset + 9]; + var M_offset_10 = M[offset + 10]; + var M_offset_11 = M[offset + 11]; + var M_offset_12 = M[offset + 12]; + var M_offset_13 = M[offset + 13]; + var M_offset_14 = M[offset + 14]; + var M_offset_15 = M[offset + 15]; + + // Working varialbes + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + + // Computation + a = FF(a, b, c, d, M_offset_0, 7, T[0]); + d = FF(d, a, b, c, M_offset_1, 12, T[1]); + c = FF(c, d, a, b, M_offset_2, 17, T[2]); + b = FF(b, c, d, a, M_offset_3, 22, T[3]); + a = FF(a, b, c, d, M_offset_4, 7, T[4]); + d = FF(d, a, b, c, M_offset_5, 12, T[5]); + c = FF(c, d, a, b, M_offset_6, 17, T[6]); + b = FF(b, c, d, a, M_offset_7, 22, T[7]); + a = FF(a, b, c, d, M_offset_8, 7, T[8]); + d = FF(d, a, b, c, M_offset_9, 12, T[9]); + c = FF(c, d, a, b, M_offset_10, 17, T[10]); + b = FF(b, c, d, a, M_offset_11, 22, T[11]); + a = FF(a, b, c, d, M_offset_12, 7, T[12]); + d = FF(d, a, b, c, M_offset_13, 12, T[13]); + c = FF(c, d, a, b, M_offset_14, 17, T[14]); + b = FF(b, c, d, a, M_offset_15, 22, T[15]); + + a = GG(a, b, c, d, M_offset_1, 5, T[16]); + d = GG(d, a, b, c, M_offset_6, 9, T[17]); + c = GG(c, d, a, b, M_offset_11, 14, T[18]); + b = GG(b, c, d, a, M_offset_0, 20, T[19]); + a = GG(a, b, c, d, M_offset_5, 5, T[20]); + d = GG(d, a, b, c, M_offset_10, 9, T[21]); + c = GG(c, d, a, b, M_offset_15, 14, T[22]); + b = GG(b, c, d, a, M_offset_4, 20, T[23]); + a = GG(a, b, c, d, M_offset_9, 5, T[24]); + d = GG(d, a, b, c, M_offset_14, 9, T[25]); + c = GG(c, d, a, b, M_offset_3, 14, T[26]); + b = GG(b, c, d, a, M_offset_8, 20, T[27]); + a = GG(a, b, c, d, M_offset_13, 5, T[28]); + d = GG(d, a, b, c, M_offset_2, 9, T[29]); + c = GG(c, d, a, b, M_offset_7, 14, T[30]); + b = GG(b, c, d, a, M_offset_12, 20, T[31]); + + a = HH(a, b, c, d, M_offset_5, 4, T[32]); + d = HH(d, a, b, c, M_offset_8, 11, T[33]); + c = HH(c, d, a, b, M_offset_11, 16, T[34]); + b = HH(b, c, d, a, M_offset_14, 23, T[35]); + a = HH(a, b, c, d, M_offset_1, 4, T[36]); + d = HH(d, a, b, c, M_offset_4, 11, T[37]); + c = HH(c, d, a, b, M_offset_7, 16, T[38]); + b = HH(b, c, d, a, M_offset_10, 23, T[39]); + a = HH(a, b, c, d, M_offset_13, 4, T[40]); + d = HH(d, a, b, c, M_offset_0, 11, T[41]); + c = HH(c, d, a, b, M_offset_3, 16, T[42]); + b = HH(b, c, d, a, M_offset_6, 23, T[43]); + a = HH(a, b, c, d, M_offset_9, 4, T[44]); + d = HH(d, a, b, c, M_offset_12, 11, T[45]); + c = HH(c, d, a, b, M_offset_15, 16, T[46]); + b = HH(b, c, d, a, M_offset_2, 23, T[47]); + + a = II(a, b, c, d, M_offset_0, 6, T[48]); + d = II(d, a, b, c, M_offset_7, 10, T[49]); + c = II(c, d, a, b, M_offset_14, 15, T[50]); + b = II(b, c, d, a, M_offset_5, 21, T[51]); + a = II(a, b, c, d, M_offset_12, 6, T[52]); + d = II(d, a, b, c, M_offset_3, 10, T[53]); + c = II(c, d, a, b, M_offset_10, 15, T[54]); + b = II(b, c, d, a, M_offset_1, 21, T[55]); + a = II(a, b, c, d, M_offset_8, 6, T[56]); + d = II(d, a, b, c, M_offset_15, 10, T[57]); + c = II(c, d, a, b, M_offset_6, 15, T[58]); + b = II(b, c, d, a, M_offset_13, 21, T[59]); + a = II(a, b, c, d, M_offset_4, 6, T[60]); + d = II(d, a, b, c, M_offset_11, 10, T[61]); + c = II(c, d, a, b, M_offset_2, 15, T[62]); + b = II(b, c, d, a, M_offset_9, 21, T[63]); + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + + var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); + var nBitsTotalL = nBitsTotal; + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( + (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | + (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) + ); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | + (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) + ); + + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 4; i++) { + // Shortcut + var H_i = H[i]; + + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + function FF(a, b, c, d, x, s, t) { + var n = a + ((b & c) | (~b & d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function GG(a, b, c, d, x, s, t) { + var n = a + ((b & d) | (c & ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function HH(a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function II(a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.MD5('message'); + * var hash = CryptoJS.MD5(wordArray); + */ + C.MD5 = Hasher._createHelper(MD5); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacMD5(message, key); + */ + C.HmacMD5 = Hasher._createHmacHelper(MD5); + }(Math)); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Reusable object + var W = []; + + /** + * SHA-1 hash algorithm. + */ + var SHA1 = C_algo.SHA1 = Hasher.extend({ + _doReset: function () { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476, + 0xc3d2e1f0 + ]); + }, + + _doProcessBlock: function (M, offset) { + // Shortcut + var H = this._hash.words; + + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + + // Computation + for (var i = 0; i < 80; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; + W[i] = (n << 1) | (n >>> 31); + } + + var t = ((a << 5) | (a >>> 27)) + e + W[i]; + if (i < 20) { + t += ((b & c) | (~b & d)) + 0x5a827999; + } else if (i < 40) { + t += (b ^ c ^ d) + 0x6ed9eba1; + } else if (i < 60) { + t += ((b & c) | (b & d) | (c & d)) - 0x70e44324; + } else /* if (i < 80) */ { + t += (b ^ c ^ d) - 0x359d3e2a; + } + + e = d; + d = c; + c = (b << 30) | (b >>> 2); + b = a; + a = t; + } + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Return final computed hash + return this._hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA1('message'); + * var hash = CryptoJS.SHA1(wordArray); + */ + C.SHA1 = Hasher._createHelper(SHA1); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA1(message, key); + */ + C.HmacSHA1 = Hasher._createHmacHelper(SHA1); + }()); + + + (function (Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Initialization and round constants tables + var H = []; + var K = []; + + // Compute constants + (function () { + function isPrime(n) { + var sqrtN = Math.sqrt(n); + for (var factor = 2; factor <= sqrtN; factor++) { + if (!(n % factor)) { + return false; + } + } + + return true; + } + + function getFractionalBits(n) { + return ((n - (n | 0)) * 0x100000000) | 0; + } + + var n = 2; + var nPrime = 0; + while (nPrime < 64) { + if (isPrime(n)) { + if (nPrime < 8) { + H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); + } + K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); + + nPrime++; + } + + n++; + } + }()); + + // Reusable object + var W = []; + + /** + * SHA-256 hash algorithm. + */ + var SHA256 = C_algo.SHA256 = Hasher.extend({ + _doReset: function () { + this._hash = new WordArray.init(H.slice(0)); + }, + + _doProcessBlock: function (M, offset) { + // Shortcut + var H = this._hash.words; + + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + var f = H[5]; + var g = H[6]; + var h = H[7]; + + // Computation + for (var i = 0; i < 64; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var gamma0x = W[i - 15]; + var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ + ((gamma0x << 14) | (gamma0x >>> 18)) ^ + (gamma0x >>> 3); + + var gamma1x = W[i - 2]; + var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ + ((gamma1x << 13) | (gamma1x >>> 19)) ^ + (gamma1x >>> 10); + + W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; + } + + var ch = (e & f) ^ (~e & g); + var maj = (a & b) ^ (a & c) ^ (b & c); + + var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); + var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); + + var t1 = h + sigma1 + ch + K[i] + W[i]; + var t2 = sigma0 + maj; + + h = g; + g = f; + f = e; + e = (d + t1) | 0; + d = c; + c = b; + b = a; + a = (t1 + t2) | 0; + } + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + H[5] = (H[5] + f) | 0; + H[6] = (H[6] + g) | 0; + H[7] = (H[7] + h) | 0; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Return final computed hash + return this._hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA256('message'); + * var hash = CryptoJS.SHA256(wordArray); + */ + C.SHA256 = Hasher._createHelper(SHA256); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA256(message, key); + */ + C.HmacSHA256 = Hasher._createHmacHelper(SHA256); + }(Math)); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA256 = C_algo.SHA256; + + /** + * SHA-224 hash algorithm. + */ + var SHA224 = C_algo.SHA224 = SHA256.extend({ + _doReset: function () { + this._hash = new WordArray.init([ + 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, + 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 + ]); + }, + + _doFinalize: function () { + var hash = SHA256._doFinalize.call(this); + + hash.sigBytes -= 4; + + return hash; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA224('message'); + * var hash = CryptoJS.SHA224(wordArray); + */ + C.SHA224 = SHA256._createHelper(SHA224); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA224(message, key); + */ + C.HmacSHA224 = SHA256._createHmacHelper(SHA224); + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + + function X64Word_create() { + return X64Word.create.apply(X64Word, arguments); + } + + // Constants + var K = [ + X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), + X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), + X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), + X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), + X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), + X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), + X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), + X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), + X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), + X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), + X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), + X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), + X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), + X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), + X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), + X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), + X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), + X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), + X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), + X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), + X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), + X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), + X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), + X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), + X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), + X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), + X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), + X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), + X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), + X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), + X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), + X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), + X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), + X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), + X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), + X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), + X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), + X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), + X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), + X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817) + ]; + + // Reusable objects + var W = []; + (function () { + for (var i = 0; i < 80; i++) { + W[i] = X64Word_create(); + } + }()); + + /** + * SHA-512 hash algorithm. + */ + var SHA512 = C_algo.SHA512 = Hasher.extend({ + _doReset: function () { + this._hash = new X64WordArray.init([ + new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), + new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), + new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), + new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179) + ]); + }, + + _doProcessBlock: function (M, offset) { + // Shortcuts + var H = this._hash.words; + + var H0 = H[0]; + var H1 = H[1]; + var H2 = H[2]; + var H3 = H[3]; + var H4 = H[4]; + var H5 = H[5]; + var H6 = H[6]; + var H7 = H[7]; + + var H0h = H0.high; + var H0l = H0.low; + var H1h = H1.high; + var H1l = H1.low; + var H2h = H2.high; + var H2l = H2.low; + var H3h = H3.high; + var H3l = H3.low; + var H4h = H4.high; + var H4l = H4.low; + var H5h = H5.high; + var H5l = H5.low; + var H6h = H6.high; + var H6l = H6.low; + var H7h = H7.high; + var H7l = H7.low; + + // Working variables + var ah = H0h; + var al = H0l; + var bh = H1h; + var bl = H1l; + var ch = H2h; + var cl = H2l; + var dh = H3h; + var dl = H3l; + var eh = H4h; + var el = H4l; + var fh = H5h; + var fl = H5l; + var gh = H6h; + var gl = H6l; + var hh = H7h; + var hl = H7l; + + // Rounds + for (var i = 0; i < 80; i++) { + var Wil; + var Wih; + + // Shortcut + var Wi = W[i]; + + // Extend message + if (i < 16) { + Wih = Wi.high = M[offset + i * 2] | 0; + Wil = Wi.low = M[offset + i * 2 + 1] | 0; + } else { + // Gamma0 + var gamma0x = W[i - 15]; + var gamma0xh = gamma0x.high; + var gamma0xl = gamma0x.low; + var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7); + var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25)); + + // Gamma1 + var gamma1x = W[i - 2]; + var gamma1xh = gamma1x.high; + var gamma1xl = gamma1x.low; + var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6); + var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26)); + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7 = W[i - 7]; + var Wi7h = Wi7.high; + var Wi7l = Wi7.low; + + var Wi16 = W[i - 16]; + var Wi16h = Wi16.high; + var Wi16l = Wi16.low; + + Wil = gamma0l + Wi7l; + Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0); + Wil = Wil + gamma1l; + Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0); + Wil = Wil + Wi16l; + Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0); + + Wi.high = Wih; + Wi.low = Wil; + } + + var chh = (eh & fh) ^ (~eh & gh); + var chl = (el & fl) ^ (~el & gl); + var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); + var majl = (al & bl) ^ (al & cl) ^ (bl & cl); + + var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); + var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); + var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9)); + var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)); + + // t1 = h + sigma1 + ch + K[i] + W[i] + var Ki = K[i]; + var Kih = Ki.high; + var Kil = Ki.low; + + var t1l = hl + sigma1l; + var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0); + var t1l = t1l + chl; + var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0); + var t1l = t1l + Kil; + var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0); + var t1l = t1l + Wil; + var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0); + + // t2 = sigma0 + maj + var t2l = sigma0l + majl; + var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0); + + // Update working variables + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = (dl + t1l) | 0; + eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = (t1l + t2l) | 0; + ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0; + } + + // Intermediate hash value + H0l = H0.low = (H0l + al); + H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0)); + H1l = H1.low = (H1l + bl); + H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0)); + H2l = H2.low = (H2l + cl); + H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0)); + H3l = H3.low = (H3l + dl); + H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0)); + H4l = H4.low = (H4l + el); + H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0)); + H5l = H5.low = (H5l + fl); + H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0)); + H6l = H6.low = (H6l + gl); + H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0)); + H7l = H7.low = (H7l + hl); + H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0)); + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Convert hash to 32-bit word array before returning + var hash = this._hash.toX32(); + + // Return final computed hash + return hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + }, + + blockSize: 1024/32 + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA512('message'); + * var hash = CryptoJS.SHA512(wordArray); + */ + C.SHA512 = Hasher._createHelper(SHA512); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA512(message, key); + */ + C.HmacSHA512 = Hasher._createHmacHelper(SHA512); + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + var SHA512 = C_algo.SHA512; + + /** + * SHA-384 hash algorithm. + */ + var SHA384 = C_algo.SHA384 = SHA512.extend({ + _doReset: function () { + this._hash = new X64WordArray.init([ + new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), + new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), + new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), + new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4) + ]); + }, + + _doFinalize: function () { + var hash = SHA512._doFinalize.call(this); + + hash.sigBytes -= 16; + + return hash; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA384('message'); + * var hash = CryptoJS.SHA384(wordArray); + */ + C.SHA384 = SHA512._createHelper(SHA384); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA384(message, key); + */ + C.HmacSHA384 = SHA512._createHmacHelper(SHA384); + }()); + + + (function (Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var C_algo = C.algo; + + // Constants tables + var RHO_OFFSETS = []; + var PI_INDEXES = []; + var ROUND_CONSTANTS = []; + + // Compute Constants + (function () { + // Compute rho offset constants + var x = 1, y = 0; + for (var t = 0; t < 24; t++) { + RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64; + + var newX = y % 5; + var newY = (2 * x + 3 * y) % 5; + x = newX; + y = newY; + } + + // Compute pi index constants + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5; + } + } + + // Compute round constants + var LFSR = 0x01; + for (var i = 0; i < 24; i++) { + var roundConstantMsw = 0; + var roundConstantLsw = 0; + + for (var j = 0; j < 7; j++) { + if (LFSR & 0x01) { + var bitPosition = (1 << j) - 1; + if (bitPosition < 32) { + roundConstantLsw ^= 1 << bitPosition; + } else /* if (bitPosition >= 32) */ { + roundConstantMsw ^= 1 << (bitPosition - 32); + } + } + + // Compute next LFSR + if (LFSR & 0x80) { + // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1 + LFSR = (LFSR << 1) ^ 0x71; + } else { + LFSR <<= 1; + } + } + + ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw); + } + }()); + + // Reusable objects for temporary values + var T = []; + (function () { + for (var i = 0; i < 25; i++) { + T[i] = X64Word.create(); + } + }()); + + /** + * SHA-3 hash algorithm. + */ + var SHA3 = C_algo.SHA3 = Hasher.extend({ + /** + * Configuration options. + * + * @property {number} outputLength + * The desired number of bits in the output hash. + * Only values permitted are: 224, 256, 384, 512. + * Default: 512 + */ + cfg: Hasher.cfg.extend({ + outputLength: 512 + }), + + _doReset: function () { + var state = this._state = [] + for (var i = 0; i < 25; i++) { + state[i] = new X64Word.init(); + } + + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + + _doProcessBlock: function (M, offset) { + // Shortcuts + var state = this._state; + var nBlockSizeLanes = this.blockSize / 2; + + // Absorb + for (var i = 0; i < nBlockSizeLanes; i++) { + // Shortcuts + var M2i = M[offset + 2 * i]; + var M2i1 = M[offset + 2 * i + 1]; + + // Swap endian + M2i = ( + (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | + (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00) + ); + M2i1 = ( + (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | + (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00) + ); + + // Absorb message into state + var lane = state[i]; + lane.high ^= M2i1; + lane.low ^= M2i; + } + + // Rounds + for (var round = 0; round < 24; round++) { + // Theta + for (var x = 0; x < 5; x++) { + // Mix column lanes + var tMsw = 0, tLsw = 0; + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + tMsw ^= lane.high; + tLsw ^= lane.low; + } + + // Temporary values + var Tx = T[x]; + Tx.high = tMsw; + Tx.low = tLsw; + } + for (var x = 0; x < 5; x++) { + // Shortcuts + var Tx4 = T[(x + 4) % 5]; + var Tx1 = T[(x + 1) % 5]; + var Tx1Msw = Tx1.high; + var Tx1Lsw = Tx1.low; + + // Mix surrounding columns + var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31)); + var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31)); + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + lane.high ^= tMsw; + lane.low ^= tLsw; + } + } + + // Rho Pi + for (var laneIndex = 1; laneIndex < 25; laneIndex++) { + var tMsw; + var tLsw; + + // Shortcuts + var lane = state[laneIndex]; + var laneMsw = lane.high; + var laneLsw = lane.low; + var rhoOffset = RHO_OFFSETS[laneIndex]; + + // Rotate lanes + if (rhoOffset < 32) { + tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset)); + tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset)); + } else /* if (rhoOffset >= 32) */ { + tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset)); + tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset)); + } + + // Transpose lanes + var TPiLane = T[PI_INDEXES[laneIndex]]; + TPiLane.high = tMsw; + TPiLane.low = tLsw; + } + + // Rho pi at x = y = 0 + var T0 = T[0]; + var state0 = state[0]; + T0.high = state0.high; + T0.low = state0.low; + + // Chi + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + // Shortcuts + var laneIndex = x + 5 * y; + var lane = state[laneIndex]; + var TLane = T[laneIndex]; + var Tx1Lane = T[((x + 1) % 5) + 5 * y]; + var Tx2Lane = T[((x + 2) % 5) + 5 * y]; + + // Mix rows + lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high); + lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low); + } + } + + // Iota + var lane = state[0]; + var roundConstant = ROUND_CONSTANTS[round]; + lane.high ^= roundConstant.high; + lane.low ^= roundConstant.low; + } + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + var blockSizeBits = this.blockSize * 32; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32); + dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var state = this._state; + var outputLengthBytes = this.cfg.outputLength / 8; + var outputLengthLanes = outputLengthBytes / 8; + + // Squeeze + var hashWords = []; + for (var i = 0; i < outputLengthLanes; i++) { + // Shortcuts + var lane = state[i]; + var laneMsw = lane.high; + var laneLsw = lane.low; + + // Swap endian + laneMsw = ( + (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | + (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00) + ); + laneLsw = ( + (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | + (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00) + ); + + // Squeeze state to retrieve hash + hashWords.push(laneLsw); + hashWords.push(laneMsw); + } + + // Return final computed hash + return new WordArray.init(hashWords, outputLengthBytes); + }, + + clone: function () { + var clone = Hasher.clone.call(this); + + var state = clone._state = this._state.slice(0); + for (var i = 0; i < 25; i++) { + state[i] = state[i].clone(); + } + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA3('message'); + * var hash = CryptoJS.SHA3(wordArray); + */ + C.SHA3 = Hasher._createHelper(SHA3); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA3(message, key); + */ + C.HmacSHA3 = Hasher._createHmacHelper(SHA3); + }(Math)); + + + /** @preserve + (c) 2012 by Cédric Mesnil. All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + (function (Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var _zl = WordArray.create([ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]); + var _zr = WordArray.create([ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]); + var _sl = WordArray.create([ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]); + var _sr = WordArray.create([ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]); + + var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]); + var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]); + + /** + * RIPEMD160 hash algorithm. + */ + var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({ + _doReset: function () { + this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]); + }, + + _doProcessBlock: function (M, offset) { + + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + // Swap + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + // Shortcut + var H = this._hash.words; + var hl = _hl.words; + var hr = _hr.words; + var zl = _zl.words; + var zr = _zr.words; + var sl = _sl.words; + var sr = _sr.words; + + // Working variables + var al, bl, cl, dl, el; + var ar, br, cr, dr, er; + + ar = al = H[0]; + br = bl = H[1]; + cr = cl = H[2]; + dr = dl = H[3]; + er = el = H[4]; + // Computation + var t; + for (var i = 0; i < 80; i += 1) { + t = (al + M[offset+zl[i]])|0; + if (i<16){ + t += f1(bl,cl,dl) + hl[0]; + } else if (i<32) { + t += f2(bl,cl,dl) + hl[1]; + } else if (i<48) { + t += f3(bl,cl,dl) + hl[2]; + } else if (i<64) { + t += f4(bl,cl,dl) + hl[3]; + } else {// if (i<80) { + t += f5(bl,cl,dl) + hl[4]; + } + t = t|0; + t = rotl(t,sl[i]); + t = (t+el)|0; + al = el; + el = dl; + dl = rotl(cl, 10); + cl = bl; + bl = t; + + t = (ar + M[offset+zr[i]])|0; + if (i<16){ + t += f5(br,cr,dr) + hr[0]; + } else if (i<32) { + t += f4(br,cr,dr) + hr[1]; + } else if (i<48) { + t += f3(br,cr,dr) + hr[2]; + } else if (i<64) { + t += f2(br,cr,dr) + hr[3]; + } else {// if (i<80) { + t += f1(br,cr,dr) + hr[4]; + } + t = t|0; + t = rotl(t,sr[i]) ; + t = (t+er)|0; + ar = er; + er = dr; + dr = rotl(cr, 10); + cr = br; + br = t; + } + // Intermediate hash value + t = (H[1] + cl + dr)|0; + H[1] = (H[2] + dl + er)|0; + H[2] = (H[3] + el + ar)|0; + H[3] = (H[4] + al + br)|0; + H[4] = (H[0] + bl + cr)|0; + H[0] = t; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) + ); + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 5; i++) { + // Shortcut + var H_i = H[i]; + + // Swap + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + + function f1(x, y, z) { + return ((x) ^ (y) ^ (z)); + + } + + function f2(x, y, z) { + return (((x)&(y)) | ((~x)&(z))); + } + + function f3(x, y, z) { + return (((x) | (~(y))) ^ (z)); + } + + function f4(x, y, z) { + return (((x) & (z)) | ((y)&(~(z)))); + } + + function f5(x, y, z) { + return ((x) ^ ((y) |(~(z)))); + + } + + function rotl(x,n) { + return (x<>>(32-n)); + } + + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.RIPEMD160('message'); + * var hash = CryptoJS.RIPEMD160(wordArray); + */ + C.RIPEMD160 = Hasher._createHelper(RIPEMD160); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacRIPEMD160(message, key); + */ + C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160); + }(Math)); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var C_algo = C.algo; + + /** + * HMAC algorithm. + */ + var HMAC = C_algo.HMAC = Base.extend({ + /** + * Initializes a newly created HMAC. + * + * @param {Hasher} hasher The hash algorithm to use. + * @param {WordArray|string} key The secret key. + * + * @example + * + * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); + */ + init: function (hasher, key) { + // Init hasher + hasher = this._hasher = new hasher.init(); + + // Convert string to WordArray, else assume WordArray already + if (typeof key == 'string') { + key = Utf8.parse(key); + } + + // Shortcuts + var hasherBlockSize = hasher.blockSize; + var hasherBlockSizeBytes = hasherBlockSize * 4; + + // Allow arbitrary length keys + if (key.sigBytes > hasherBlockSizeBytes) { + key = hasher.finalize(key); + } + + // Clamp excess bits + key.clamp(); + + // Clone key for inner and outer pads + var oKey = this._oKey = key.clone(); + var iKey = this._iKey = key.clone(); + + // Shortcuts + var oKeyWords = oKey.words; + var iKeyWords = iKey.words; + + // XOR keys with pad constants + for (var i = 0; i < hasherBlockSize; i++) { + oKeyWords[i] ^= 0x5c5c5c5c; + iKeyWords[i] ^= 0x36363636; + } + oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; + + // Set initial values + this.reset(); + }, + + /** + * Resets this HMAC to its initial state. + * + * @example + * + * hmacHasher.reset(); + */ + reset: function () { + // Shortcut + var hasher = this._hasher; + + // Reset + hasher.reset(); + hasher.update(this._iKey); + }, + + /** + * Updates this HMAC with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {HMAC} This HMAC instance. + * + * @example + * + * hmacHasher.update('message'); + * hmacHasher.update(wordArray); + */ + update: function (messageUpdate) { + this._hasher.update(messageUpdate); + + // Chainable + return this; + }, + + /** + * Finalizes the HMAC computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The HMAC. + * + * @example + * + * var hmac = hmacHasher.finalize(); + * var hmac = hmacHasher.finalize('message'); + * var hmac = hmacHasher.finalize(wordArray); + */ + finalize: function (messageUpdate) { + // Shortcut + var hasher = this._hasher; + + // Compute HMAC + var innerHash = hasher.finalize(messageUpdate); + hasher.reset(); + var hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); + + return hmac; + } + }); + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA1 = C_algo.SHA1; + var HMAC = C_algo.HMAC; + + /** + * Password-Based Key Derivation Function 2 algorithm. + */ + var PBKDF2 = C_algo.PBKDF2 = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hasher to use. Default: SHA1 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128/32, + hasher: SHA1, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.PBKDF2.create(); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 }); + */ + init: function (cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function (password, salt) { + // Shortcut + var cfg = this.cfg; + + // Init HMAC + var hmac = HMAC.create(cfg.hasher, password); + + // Initial values + var derivedKey = WordArray.create(); + var blockIndex = WordArray.create([0x00000001]); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var blockIndexWords = blockIndex.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + var block = hmac.update(salt).finalize(blockIndex); + hmac.reset(); + + // Shortcuts + var blockWords = block.words; + var blockWordsLength = blockWords.length; + + // Iterations + var intermediate = block; + for (var i = 1; i < iterations; i++) { + intermediate = hmac.finalize(intermediate); + hmac.reset(); + + // Shortcut + var intermediateWords = intermediate.words; + + // XOR intermediate with block + for (var j = 0; j < blockWordsLength; j++) { + blockWords[j] ^= intermediateWords[j]; + } + } + + derivedKey.concat(block); + blockIndexWords[0]++; + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.PBKDF2(password, salt); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 }); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.PBKDF2 = function (password, salt, cfg) { + return PBKDF2.create(cfg).compute(password, salt); + }; + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var MD5 = C_algo.MD5; + + /** + * This key derivation function is meant to conform with EVP_BytesToKey. + * www.openssl.org/docs/crypto/EVP_BytesToKey.html + */ + var EvpKDF = C_algo.EvpKDF = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hash algorithm to use. Default: MD5 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128/32, + hasher: MD5, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.EvpKDF.create(); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); + */ + init: function (cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function (password, salt) { + var block; + + // Shortcut + var cfg = this.cfg; + + // Init hasher + var hasher = cfg.hasher.create(); + + // Initial values + var derivedKey = WordArray.create(); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + if (block) { + hasher.update(block); + } + block = hasher.update(password).finalize(salt); + hasher.reset(); + + // Iterations + for (var i = 1; i < iterations; i++) { + block = hasher.finalize(block); + hasher.reset(); + } + + derivedKey.concat(block); + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.EvpKDF(password, salt); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.EvpKDF = function (password, salt, cfg) { + return EvpKDF.create(cfg).compute(password, salt); + }; + }()); + + + /** + * Cipher core components. + */ + CryptoJS.lib.Cipher || (function (undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var Base64 = C_enc.Base64; + var C_algo = C.algo; + var EvpKDF = C_algo.EvpKDF; + + /** + * Abstract base cipher template. + * + * @property {number} keySize This cipher's key size. Default: 4 (128 bits) + * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) + * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. + * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. + */ + var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + * + * @property {WordArray} iv The IV to use for this operation. + */ + cfg: Base.extend(), + + /** + * Creates this cipher in encryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); + */ + createEncryptor: function (key, cfg) { + return this.create(this._ENC_XFORM_MODE, key, cfg); + }, + + /** + * Creates this cipher in decryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); + */ + createDecryptor: function (key, cfg) { + return this.create(this._DEC_XFORM_MODE, key, cfg); + }, + + /** + * Initializes a newly created cipher. + * + * @param {number} xformMode Either the encryption or decryption transormation mode constant. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @example + * + * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); + */ + init: function (xformMode, key, cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Store transform mode and key + this._xformMode = xformMode; + this._key = key; + + // Set initial values + this.reset(); + }, + + /** + * Resets this cipher to its initial state. + * + * @example + * + * cipher.reset(); + */ + reset: function () { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-cipher logic + this._doReset(); + }, + + /** + * Adds data to be encrypted or decrypted. + * + * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. + * + * @return {WordArray} The data after processing. + * + * @example + * + * var encrypted = cipher.process('data'); + * var encrypted = cipher.process(wordArray); + */ + process: function (dataUpdate) { + // Append + this._append(dataUpdate); + + // Process available blocks + return this._process(); + }, + + /** + * Finalizes the encryption or decryption process. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. + * + * @return {WordArray} The data after final processing. + * + * @example + * + * var encrypted = cipher.finalize(); + * var encrypted = cipher.finalize('data'); + * var encrypted = cipher.finalize(wordArray); + */ + finalize: function (dataUpdate) { + // Final data update + if (dataUpdate) { + this._append(dataUpdate); + } + + // Perform concrete-cipher logic + var finalProcessedData = this._doFinalize(); + + return finalProcessedData; + }, + + keySize: 128/32, + + ivSize: 128/32, + + _ENC_XFORM_MODE: 1, + + _DEC_XFORM_MODE: 2, + + /** + * Creates shortcut functions to a cipher's object interface. + * + * @param {Cipher} cipher The cipher to create a helper for. + * + * @return {Object} An object with encrypt and decrypt shortcut functions. + * + * @static + * + * @example + * + * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); + */ + _createHelper: (function () { + function selectCipherStrategy(key) { + if (typeof key == 'string') { + return PasswordBasedCipher; + } else { + return SerializableCipher; + } + } + + return function (cipher) { + return { + encrypt: function (message, key, cfg) { + return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); + }, + + decrypt: function (ciphertext, key, cfg) { + return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); + } + }; + }; + }()) + }); + + /** + * Abstract base stream cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) + */ + var StreamCipher = C_lib.StreamCipher = Cipher.extend({ + _doFinalize: function () { + // Process partial blocks + var finalProcessedBlocks = this._process(!!'flush'); + + return finalProcessedBlocks; + }, + + blockSize: 1 + }); + + /** + * Mode namespace. + */ + var C_mode = C.mode = {}; + + /** + * Abstract base block cipher mode template. + */ + var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ + /** + * Creates this mode for encryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); + */ + createEncryptor: function (cipher, iv) { + return this.Encryptor.create(cipher, iv); + }, + + /** + * Creates this mode for decryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); + */ + createDecryptor: function (cipher, iv) { + return this.Decryptor.create(cipher, iv); + }, + + /** + * Initializes a newly created mode. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @example + * + * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); + */ + init: function (cipher, iv) { + this._cipher = cipher; + this._iv = iv; + } + }); + + /** + * Cipher Block Chaining mode. + */ + var CBC = C_mode.CBC = (function () { + /** + * Abstract base CBC mode. + */ + var CBC = BlockCipherMode.extend(); + + /** + * CBC encryptor. + */ + CBC.Encryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // XOR and encrypt + xorBlock.call(this, words, offset, blockSize); + cipher.encryptBlock(words, offset); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + /** + * CBC decryptor. + */ + CBC.Decryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + // Decrypt and XOR + cipher.decryptBlock(words, offset); + xorBlock.call(this, words, offset, blockSize); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function xorBlock(words, offset, blockSize) { + var block; + + // Shortcut + var iv = this._iv; + + // Choose mixing block + if (iv) { + block = iv; + + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + block = this._prevBlock; + } + + // XOR blocks + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= block[i]; + } + } + + return CBC; + }()); + + /** + * Padding namespace. + */ + var C_pad = C.pad = {}; + + /** + * PKCS #5/7 padding strategy. + */ + var Pkcs7 = C_pad.Pkcs7 = { + /** + * Pads data using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to pad. + * @param {number} blockSize The multiple that the data should be padded to. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.pad(wordArray, 4); + */ + pad: function (data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Create padding word + var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; + + // Create padding + var paddingWords = []; + for (var i = 0; i < nPaddingBytes; i += 4) { + paddingWords.push(paddingWord); + } + var padding = WordArray.create(paddingWords, nPaddingBytes); + + // Add padding + data.concat(padding); + }, + + /** + * Unpads data that had been padded using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to unpad. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.unpad(wordArray); + */ + unpad: function (data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + /** + * Abstract base block cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) + */ + var BlockCipher = C_lib.BlockCipher = Cipher.extend({ + /** + * Configuration options. + * + * @property {Mode} mode The block mode to use. Default: CBC + * @property {Padding} padding The padding strategy to use. Default: Pkcs7 + */ + cfg: Cipher.cfg.extend({ + mode: CBC, + padding: Pkcs7 + }), + + reset: function () { + var modeCreator; + + // Reset cipher + Cipher.reset.call(this); + + // Shortcuts + var cfg = this.cfg; + var iv = cfg.iv; + var mode = cfg.mode; + + // Reset block mode + if (this._xformMode == this._ENC_XFORM_MODE) { + modeCreator = mode.createEncryptor; + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + modeCreator = mode.createDecryptor; + // Keep at least one block in the buffer for unpadding + this._minBufferSize = 1; + } + + if (this._mode && this._mode.__creator == modeCreator) { + this._mode.init(this, iv && iv.words); + } else { + this._mode = modeCreator.call(mode, this, iv && iv.words); + this._mode.__creator = modeCreator; + } + }, + + _doProcessBlock: function (words, offset) { + this._mode.processBlock(words, offset); + }, + + _doFinalize: function () { + var finalProcessedBlocks; + + // Shortcut + var padding = this.cfg.padding; + + // Finalize + if (this._xformMode == this._ENC_XFORM_MODE) { + // Pad data + padding.pad(this._data, this.blockSize); + + // Process final blocks + finalProcessedBlocks = this._process(!!'flush'); + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + // Process final blocks + finalProcessedBlocks = this._process(!!'flush'); + + // Unpad data + padding.unpad(finalProcessedBlocks); + } + + return finalProcessedBlocks; + }, + + blockSize: 128/32 + }); + + /** + * A collection of cipher parameters. + * + * @property {WordArray} ciphertext The raw ciphertext. + * @property {WordArray} key The key to this ciphertext. + * @property {WordArray} iv The IV used in the ciphering operation. + * @property {WordArray} salt The salt used with a key derivation function. + * @property {Cipher} algorithm The cipher algorithm. + * @property {Mode} mode The block mode used in the ciphering operation. + * @property {Padding} padding The padding scheme used in the ciphering operation. + * @property {number} blockSize The block size of the cipher. + * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. + */ + var CipherParams = C_lib.CipherParams = Base.extend({ + /** + * Initializes a newly created cipher params object. + * + * @param {Object} cipherParams An object with any of the possible cipher parameters. + * + * @example + * + * var cipherParams = CryptoJS.lib.CipherParams.create({ + * ciphertext: ciphertextWordArray, + * key: keyWordArray, + * iv: ivWordArray, + * salt: saltWordArray, + * algorithm: CryptoJS.algo.AES, + * mode: CryptoJS.mode.CBC, + * padding: CryptoJS.pad.PKCS7, + * blockSize: 4, + * formatter: CryptoJS.format.OpenSSL + * }); + */ + init: function (cipherParams) { + this.mixIn(cipherParams); + }, + + /** + * Converts this cipher params object to a string. + * + * @param {Format} formatter (Optional) The formatting strategy to use. + * + * @return {string} The stringified cipher params. + * + * @throws Error If neither the formatter nor the default formatter is set. + * + * @example + * + * var string = cipherParams + ''; + * var string = cipherParams.toString(); + * var string = cipherParams.toString(CryptoJS.format.OpenSSL); + */ + toString: function (formatter) { + return (formatter || this.formatter).stringify(this); + } + }); + + /** + * Format namespace. + */ + var C_format = C.format = {}; + + /** + * OpenSSL formatting strategy. + */ + var OpenSSLFormatter = C_format.OpenSSL = { + /** + * Converts a cipher params object to an OpenSSL-compatible string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The OpenSSL-compatible string. + * + * @static + * + * @example + * + * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); + */ + stringify: function (cipherParams) { + var wordArray; + + // Shortcuts + var ciphertext = cipherParams.ciphertext; + var salt = cipherParams.salt; + + // Format + if (salt) { + wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); + } else { + wordArray = ciphertext; + } + + return wordArray.toString(Base64); + }, + + /** + * Converts an OpenSSL-compatible string to a cipher params object. + * + * @param {string} openSSLStr The OpenSSL-compatible string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); + */ + parse: function (openSSLStr) { + var salt; + + // Parse base64 + var ciphertext = Base64.parse(openSSLStr); + + // Shortcut + var ciphertextWords = ciphertext.words; + + // Test for salt + if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { + // Extract salt + salt = WordArray.create(ciphertextWords.slice(2, 4)); + + // Remove salt from ciphertext + ciphertextWords.splice(0, 4); + ciphertext.sigBytes -= 16; + } + + return CipherParams.create({ ciphertext: ciphertext, salt: salt }); + } + }; + + /** + * A cipher wrapper that returns ciphertext as a serializable cipher params object. + */ + var SerializableCipher = C_lib.SerializableCipher = Base.extend({ + /** + * Configuration options. + * + * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL + */ + cfg: Base.extend({ + format: OpenSSLFormatter + }), + + /** + * Encrypts a message. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + encrypt: function (cipher, message, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Encrypt + var encryptor = cipher.createEncryptor(key, cfg); + var ciphertext = encryptor.finalize(message); + + // Shortcut + var cipherCfg = encryptor.cfg; + + // Create and return serializable cipher params + return CipherParams.create({ + ciphertext: ciphertext, + key: key, + iv: cipherCfg.iv, + algorithm: cipher, + mode: cipherCfg.mode, + padding: cipherCfg.padding, + blockSize: cipher.blockSize, + formatter: cfg.format + }); + }, + + /** + * Decrypts serialized ciphertext. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + decrypt: function (cipher, ciphertext, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Decrypt + var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); + + return plaintext; + }, + + /** + * Converts serialized ciphertext to CipherParams, + * else assumed CipherParams already and returns ciphertext unchanged. + * + * @param {CipherParams|string} ciphertext The ciphertext. + * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. + * + * @return {CipherParams} The unserialized ciphertext. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); + */ + _parse: function (ciphertext, format) { + if (typeof ciphertext == 'string') { + return format.parse(ciphertext, this); + } else { + return ciphertext; + } + } + }); + + /** + * Key derivation function namespace. + */ + var C_kdf = C.kdf = {}; + + /** + * OpenSSL key derivation function. + */ + var OpenSSLKdf = C_kdf.OpenSSL = { + /** + * Derives a key and IV from a password. + * + * @param {string} password The password to derive from. + * @param {number} keySize The size in words of the key to generate. + * @param {number} ivSize The size in words of the IV to generate. + * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. + * + * @return {CipherParams} A cipher params object with the key, IV, and salt. + * + * @static + * + * @example + * + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); + */ + execute: function (password, keySize, ivSize, salt) { + // Generate random salt + if (!salt) { + salt = WordArray.random(64/8); + } + + // Derive key and IV + var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt); + + // Separate key and IV + var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); + key.sigBytes = keySize * 4; + + // Return params + return CipherParams.create({ key: key, iv: iv, salt: salt }); + } + }; + + /** + * A serializable cipher wrapper that derives the key from a password, + * and returns ciphertext as a serializable cipher params object. + */ + var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ + /** + * Configuration options. + * + * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL + */ + cfg: SerializableCipher.cfg.extend({ + kdf: OpenSSLKdf + }), + + /** + * Encrypts a message using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); + */ + encrypt: function (cipher, message, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Encrypt + var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); + + // Mix in derived params + ciphertext.mixIn(derivedParams); + + return ciphertext; + }, + + /** + * Decrypts serialized ciphertext using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); + */ + decrypt: function (cipher, ciphertext, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Decrypt + var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); + + return plaintext; + } + }); + }()); + + + /** + * Cipher Feedback block mode. + */ + CryptoJS.mode.CFB = (function () { + var CFB = CryptoJS.lib.BlockCipherMode.extend(); + + CFB.Encryptor = CFB.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + CFB.Decryptor = CFB.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { + var keystream; + + // Shortcut + var iv = this._iv; + + // Generate keystream + if (iv) { + keystream = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + keystream = this._prevBlock; + } + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + + return CFB; + }()); + + + /** + * Counter block mode. + */ + CryptoJS.mode.CTR = (function () { + var CTR = CryptoJS.lib.BlockCipherMode.extend(); + + var Encryptor = CTR.Encryptor = CTR.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + + // Increment counter + counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0 + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + CTR.Decryptor = Encryptor; + + return CTR; + }()); + + + /** @preserve + * Counter block mode compatible with Dr Brian Gladman fileenc.c + * derived from CryptoJS.mode.CTR + * Jan Hruby jhruby.web@gmail.com + */ + CryptoJS.mode.CTRGladman = (function () { + var CTRGladman = CryptoJS.lib.BlockCipherMode.extend(); + + function incWord(word) + { + if (((word >> 24) & 0xff) === 0xff) { //overflow + var b1 = (word >> 16)&0xff; + var b2 = (word >> 8)&0xff; + var b3 = word & 0xff; + + if (b1 === 0xff) // overflow b1 + { + b1 = 0; + if (b2 === 0xff) + { + b2 = 0; + if (b3 === 0xff) + { + b3 = 0; + } + else + { + ++b3; + } + } + else + { + ++b2; + } + } + else + { + ++b1; + } + + word = 0; + word += (b1 << 16); + word += (b2 << 8); + word += b3; + } + else + { + word += (0x01 << 24); + } + return word; + } + + function incCounter(counter) + { + if ((counter[0] = incWord(counter[0])) === 0) + { + // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 + counter[1] = incWord(counter[1]); + } + return counter; + } + + var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + + incCounter(counter); + + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + CTRGladman.Decryptor = Encryptor; + + return CTRGladman; + }()); + + + + + /** + * Output Feedback block mode. + */ + CryptoJS.mode.OFB = (function () { + var OFB = CryptoJS.lib.BlockCipherMode.extend(); + + var Encryptor = OFB.Encryptor = OFB.extend({ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var keystream = this._keystream; + + // Generate keystream + if (iv) { + keystream = this._keystream = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + OFB.Decryptor = Encryptor; + + return OFB; + }()); + + + /** + * Electronic Codebook block mode. + */ + CryptoJS.mode.ECB = (function () { + var ECB = CryptoJS.lib.BlockCipherMode.extend(); + + ECB.Encryptor = ECB.extend({ + processBlock: function (words, offset) { + this._cipher.encryptBlock(words, offset); + } + }); + + ECB.Decryptor = ECB.extend({ + processBlock: function (words, offset) { + this._cipher.decryptBlock(words, offset); + } + }); + + return ECB; + }()); + + + /** + * ANSI X.923 padding strategy. + */ + CryptoJS.pad.AnsiX923 = { + pad: function (data, blockSize) { + // Shortcuts + var dataSigBytes = data.sigBytes; + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; + + // Compute last byte position + var lastBytePos = dataSigBytes + nPaddingBytes - 1; + + // Pad + data.clamp(); + data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8); + data.sigBytes += nPaddingBytes; + }, + + unpad: function (data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + + /** + * ISO 10126 padding strategy. + */ + CryptoJS.pad.Iso10126 = { + pad: function (data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Pad + data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)). + concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1)); + }, + + unpad: function (data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + + /** + * ISO/IEC 9797-1 Padding Method 2. + */ + CryptoJS.pad.Iso97971 = { + pad: function (data, blockSize) { + // Add 0x80 byte + data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); + + // Zero pad the rest + CryptoJS.pad.ZeroPadding.pad(data, blockSize); + }, + + unpad: function (data) { + // Remove zero padding + CryptoJS.pad.ZeroPadding.unpad(data); + + // Remove one more byte -- the 0x80 byte + data.sigBytes--; + } + }; + + + /** + * Zero padding strategy. + */ + CryptoJS.pad.ZeroPadding = { + pad: function (data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Pad + data.clamp(); + data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes); + }, + + unpad: function (data) { + // Shortcut + var dataWords = data.words; + + // Unpad + var i = data.sigBytes - 1; + for (var i = data.sigBytes - 1; i >= 0; i--) { + if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) { + data.sigBytes = i + 1; + break; + } + } + } + }; + + + /** + * A noop padding strategy. + */ + CryptoJS.pad.NoPadding = { + pad: function () { + }, + + unpad: function () { + } + }; + + + (function (undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var CipherParams = C_lib.CipherParams; + var C_enc = C.enc; + var Hex = C_enc.Hex; + var C_format = C.format; + + var HexFormatter = C_format.Hex = { + /** + * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The hexadecimally encoded string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.format.Hex.stringify(cipherParams); + */ + stringify: function (cipherParams) { + return cipherParams.ciphertext.toString(Hex); + }, + + /** + * Converts a hexadecimally encoded ciphertext string to a cipher params object. + * + * @param {string} input The hexadecimally encoded string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.Hex.parse(hexString); + */ + parse: function (input) { + var ciphertext = Hex.parse(input); + return CipherParams.create({ ciphertext: ciphertext }); + } + }; + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Lookup tables + var SBOX = []; + var INV_SBOX = []; + var SUB_MIX_0 = []; + var SUB_MIX_1 = []; + var SUB_MIX_2 = []; + var SUB_MIX_3 = []; + var INV_SUB_MIX_0 = []; + var INV_SUB_MIX_1 = []; + var INV_SUB_MIX_2 = []; + var INV_SUB_MIX_3 = []; + + // Compute lookup tables + (function () { + // Compute double table + var d = []; + for (var i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = (i << 1) ^ 0x11b; + } + } + + // Walk GF(2^8) + var x = 0; + var xi = 0; + for (var i = 0; i < 256; i++) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; + SBOX[x] = sx; + INV_SBOX[sx] = x; + + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100); + SUB_MIX_0[x] = (t << 24) | (t >>> 8); + SUB_MIX_1[x] = (t << 16) | (t >>> 16); + SUB_MIX_2[x] = (t << 8) | (t >>> 24); + SUB_MIX_3[x] = t; + + // Compute inv sub bytes, inv mix columns tables + var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); + INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); + INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); + INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); + INV_SUB_MIX_3[sx] = t; + + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + }()); + + // Precomputed Rcon lookup + var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + + /** + * AES block cipher algorithm. + */ + var AES = C_algo.AES = BlockCipher.extend({ + _doReset: function () { + var t; + + // Skip reset of nRounds has been set before and key did not change + if (this._nRounds && this._keyPriorReset === this._key) { + return; + } + + // Shortcuts + var key = this._keyPriorReset = this._key; + var keyWords = key.words; + var keySize = key.sigBytes / 4; + + // Compute number of rounds + var nRounds = this._nRounds = keySize + 6; + + // Compute number of key schedule rows + var ksRows = (nRounds + 1) * 4; + + // Compute key schedule + var keySchedule = this._keySchedule = []; + for (var ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + keySchedule[ksRow] = keyWords[ksRow]; + } else { + t = keySchedule[ksRow - 1]; + + if (!(ksRow % keySize)) { + // Rot word + t = (t << 8) | (t >>> 24); + + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + + // Mix Rcon + t ^= RCON[(ksRow / keySize) | 0] << 24; + } else if (keySize > 6 && ksRow % keySize == 4) { + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + } + + keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; + } + } + + // Compute inv key schedule + var invKeySchedule = this._invKeySchedule = []; + for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { + var ksRow = ksRows - invKsRow; + + if (invKsRow % 4) { + var t = keySchedule[ksRow]; + } else { + var t = keySchedule[ksRow - 4]; + } + + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ + INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; + } + } + }, + + encryptBlock: function (M, offset) { + this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); + }, + + decryptBlock: function (M, offset) { + // Swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + + this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); + + // Inv swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + }, + + _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { + // Shortcut + var nRounds = this._nRounds; + + // Get input, add round key + var s0 = M[offset] ^ keySchedule[0]; + var s1 = M[offset + 1] ^ keySchedule[1]; + var s2 = M[offset + 2] ^ keySchedule[2]; + var s3 = M[offset + 3] ^ keySchedule[3]; + + // Key schedule row counter + var ksRow = 4; + + // Rounds + for (var round = 1; round < nRounds; round++) { + // Shift rows, sub bytes, mix columns, add round key + var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; + var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; + var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; + var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; + + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + } + + // Shift rows, sub bytes, add round key + var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; + var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; + var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; + var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; + + // Set output + M[offset] = t0; + M[offset + 1] = t1; + M[offset + 2] = t2; + M[offset + 3] = t3; + }, + + keySize: 256/32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); + */ + C.AES = BlockCipher._createHelper(AES); + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Permuted Choice 1 constants + var PC1 = [ + 57, 49, 41, 33, 25, 17, 9, 1, + 58, 50, 42, 34, 26, 18, 10, 2, + 59, 51, 43, 35, 27, 19, 11, 3, + 60, 52, 44, 36, 63, 55, 47, 39, + 31, 23, 15, 7, 62, 54, 46, 38, + 30, 22, 14, 6, 61, 53, 45, 37, + 29, 21, 13, 5, 28, 20, 12, 4 + ]; + + // Permuted Choice 2 constants + var PC2 = [ + 14, 17, 11, 24, 1, 5, + 3, 28, 15, 6, 21, 10, + 23, 19, 12, 4, 26, 8, + 16, 7, 27, 20, 13, 2, + 41, 52, 31, 37, 47, 55, + 30, 40, 51, 45, 33, 48, + 44, 49, 39, 56, 34, 53, + 46, 42, 50, 36, 29, 32 + ]; + + // Cumulative bit shift constants + var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; + + // SBOXes and round permutation constants + var SBOX_P = [ + { + 0x0: 0x808200, + 0x10000000: 0x8000, + 0x20000000: 0x808002, + 0x30000000: 0x2, + 0x40000000: 0x200, + 0x50000000: 0x808202, + 0x60000000: 0x800202, + 0x70000000: 0x800000, + 0x80000000: 0x202, + 0x90000000: 0x800200, + 0xa0000000: 0x8200, + 0xb0000000: 0x808000, + 0xc0000000: 0x8002, + 0xd0000000: 0x800002, + 0xe0000000: 0x0, + 0xf0000000: 0x8202, + 0x8000000: 0x0, + 0x18000000: 0x808202, + 0x28000000: 0x8202, + 0x38000000: 0x8000, + 0x48000000: 0x808200, + 0x58000000: 0x200, + 0x68000000: 0x808002, + 0x78000000: 0x2, + 0x88000000: 0x800200, + 0x98000000: 0x8200, + 0xa8000000: 0x808000, + 0xb8000000: 0x800202, + 0xc8000000: 0x800002, + 0xd8000000: 0x8002, + 0xe8000000: 0x202, + 0xf8000000: 0x800000, + 0x1: 0x8000, + 0x10000001: 0x2, + 0x20000001: 0x808200, + 0x30000001: 0x800000, + 0x40000001: 0x808002, + 0x50000001: 0x8200, + 0x60000001: 0x200, + 0x70000001: 0x800202, + 0x80000001: 0x808202, + 0x90000001: 0x808000, + 0xa0000001: 0x800002, + 0xb0000001: 0x8202, + 0xc0000001: 0x202, + 0xd0000001: 0x800200, + 0xe0000001: 0x8002, + 0xf0000001: 0x0, + 0x8000001: 0x808202, + 0x18000001: 0x808000, + 0x28000001: 0x800000, + 0x38000001: 0x200, + 0x48000001: 0x8000, + 0x58000001: 0x800002, + 0x68000001: 0x2, + 0x78000001: 0x8202, + 0x88000001: 0x8002, + 0x98000001: 0x800202, + 0xa8000001: 0x202, + 0xb8000001: 0x808200, + 0xc8000001: 0x800200, + 0xd8000001: 0x0, + 0xe8000001: 0x8200, + 0xf8000001: 0x808002 + }, + { + 0x0: 0x40084010, + 0x1000000: 0x4000, + 0x2000000: 0x80000, + 0x3000000: 0x40080010, + 0x4000000: 0x40000010, + 0x5000000: 0x40084000, + 0x6000000: 0x40004000, + 0x7000000: 0x10, + 0x8000000: 0x84000, + 0x9000000: 0x40004010, + 0xa000000: 0x40000000, + 0xb000000: 0x84010, + 0xc000000: 0x80010, + 0xd000000: 0x0, + 0xe000000: 0x4010, + 0xf000000: 0x40080000, + 0x800000: 0x40004000, + 0x1800000: 0x84010, + 0x2800000: 0x10, + 0x3800000: 0x40004010, + 0x4800000: 0x40084010, + 0x5800000: 0x40000000, + 0x6800000: 0x80000, + 0x7800000: 0x40080010, + 0x8800000: 0x80010, + 0x9800000: 0x0, + 0xa800000: 0x4000, + 0xb800000: 0x40080000, + 0xc800000: 0x40000010, + 0xd800000: 0x84000, + 0xe800000: 0x40084000, + 0xf800000: 0x4010, + 0x10000000: 0x0, + 0x11000000: 0x40080010, + 0x12000000: 0x40004010, + 0x13000000: 0x40084000, + 0x14000000: 0x40080000, + 0x15000000: 0x10, + 0x16000000: 0x84010, + 0x17000000: 0x4000, + 0x18000000: 0x4010, + 0x19000000: 0x80000, + 0x1a000000: 0x80010, + 0x1b000000: 0x40000010, + 0x1c000000: 0x84000, + 0x1d000000: 0x40004000, + 0x1e000000: 0x40000000, + 0x1f000000: 0x40084010, + 0x10800000: 0x84010, + 0x11800000: 0x80000, + 0x12800000: 0x40080000, + 0x13800000: 0x4000, + 0x14800000: 0x40004000, + 0x15800000: 0x40084010, + 0x16800000: 0x10, + 0x17800000: 0x40000000, + 0x18800000: 0x40084000, + 0x19800000: 0x40000010, + 0x1a800000: 0x40004010, + 0x1b800000: 0x80010, + 0x1c800000: 0x0, + 0x1d800000: 0x4010, + 0x1e800000: 0x40080010, + 0x1f800000: 0x84000 + }, + { + 0x0: 0x104, + 0x100000: 0x0, + 0x200000: 0x4000100, + 0x300000: 0x10104, + 0x400000: 0x10004, + 0x500000: 0x4000004, + 0x600000: 0x4010104, + 0x700000: 0x4010000, + 0x800000: 0x4000000, + 0x900000: 0x4010100, + 0xa00000: 0x10100, + 0xb00000: 0x4010004, + 0xc00000: 0x4000104, + 0xd00000: 0x10000, + 0xe00000: 0x4, + 0xf00000: 0x100, + 0x80000: 0x4010100, + 0x180000: 0x4010004, + 0x280000: 0x0, + 0x380000: 0x4000100, + 0x480000: 0x4000004, + 0x580000: 0x10000, + 0x680000: 0x10004, + 0x780000: 0x104, + 0x880000: 0x4, + 0x980000: 0x100, + 0xa80000: 0x4010000, + 0xb80000: 0x10104, + 0xc80000: 0x10100, + 0xd80000: 0x4000104, + 0xe80000: 0x4010104, + 0xf80000: 0x4000000, + 0x1000000: 0x4010100, + 0x1100000: 0x10004, + 0x1200000: 0x10000, + 0x1300000: 0x4000100, + 0x1400000: 0x100, + 0x1500000: 0x4010104, + 0x1600000: 0x4000004, + 0x1700000: 0x0, + 0x1800000: 0x4000104, + 0x1900000: 0x4000000, + 0x1a00000: 0x4, + 0x1b00000: 0x10100, + 0x1c00000: 0x4010000, + 0x1d00000: 0x104, + 0x1e00000: 0x10104, + 0x1f00000: 0x4010004, + 0x1080000: 0x4000000, + 0x1180000: 0x104, + 0x1280000: 0x4010100, + 0x1380000: 0x0, + 0x1480000: 0x10004, + 0x1580000: 0x4000100, + 0x1680000: 0x100, + 0x1780000: 0x4010004, + 0x1880000: 0x10000, + 0x1980000: 0x4010104, + 0x1a80000: 0x10104, + 0x1b80000: 0x4000004, + 0x1c80000: 0x4000104, + 0x1d80000: 0x4010000, + 0x1e80000: 0x4, + 0x1f80000: 0x10100 + }, + { + 0x0: 0x80401000, + 0x10000: 0x80001040, + 0x20000: 0x401040, + 0x30000: 0x80400000, + 0x40000: 0x0, + 0x50000: 0x401000, + 0x60000: 0x80000040, + 0x70000: 0x400040, + 0x80000: 0x80000000, + 0x90000: 0x400000, + 0xa0000: 0x40, + 0xb0000: 0x80001000, + 0xc0000: 0x80400040, + 0xd0000: 0x1040, + 0xe0000: 0x1000, + 0xf0000: 0x80401040, + 0x8000: 0x80001040, + 0x18000: 0x40, + 0x28000: 0x80400040, + 0x38000: 0x80001000, + 0x48000: 0x401000, + 0x58000: 0x80401040, + 0x68000: 0x0, + 0x78000: 0x80400000, + 0x88000: 0x1000, + 0x98000: 0x80401000, + 0xa8000: 0x400000, + 0xb8000: 0x1040, + 0xc8000: 0x80000000, + 0xd8000: 0x400040, + 0xe8000: 0x401040, + 0xf8000: 0x80000040, + 0x100000: 0x400040, + 0x110000: 0x401000, + 0x120000: 0x80000040, + 0x130000: 0x0, + 0x140000: 0x1040, + 0x150000: 0x80400040, + 0x160000: 0x80401000, + 0x170000: 0x80001040, + 0x180000: 0x80401040, + 0x190000: 0x80000000, + 0x1a0000: 0x80400000, + 0x1b0000: 0x401040, + 0x1c0000: 0x80001000, + 0x1d0000: 0x400000, + 0x1e0000: 0x40, + 0x1f0000: 0x1000, + 0x108000: 0x80400000, + 0x118000: 0x80401040, + 0x128000: 0x0, + 0x138000: 0x401000, + 0x148000: 0x400040, + 0x158000: 0x80000000, + 0x168000: 0x80001040, + 0x178000: 0x40, + 0x188000: 0x80000040, + 0x198000: 0x1000, + 0x1a8000: 0x80001000, + 0x1b8000: 0x80400040, + 0x1c8000: 0x1040, + 0x1d8000: 0x80401000, + 0x1e8000: 0x400000, + 0x1f8000: 0x401040 + }, + { + 0x0: 0x80, + 0x1000: 0x1040000, + 0x2000: 0x40000, + 0x3000: 0x20000000, + 0x4000: 0x20040080, + 0x5000: 0x1000080, + 0x6000: 0x21000080, + 0x7000: 0x40080, + 0x8000: 0x1000000, + 0x9000: 0x20040000, + 0xa000: 0x20000080, + 0xb000: 0x21040080, + 0xc000: 0x21040000, + 0xd000: 0x0, + 0xe000: 0x1040080, + 0xf000: 0x21000000, + 0x800: 0x1040080, + 0x1800: 0x21000080, + 0x2800: 0x80, + 0x3800: 0x1040000, + 0x4800: 0x40000, + 0x5800: 0x20040080, + 0x6800: 0x21040000, + 0x7800: 0x20000000, + 0x8800: 0x20040000, + 0x9800: 0x0, + 0xa800: 0x21040080, + 0xb800: 0x1000080, + 0xc800: 0x20000080, + 0xd800: 0x21000000, + 0xe800: 0x1000000, + 0xf800: 0x40080, + 0x10000: 0x40000, + 0x11000: 0x80, + 0x12000: 0x20000000, + 0x13000: 0x21000080, + 0x14000: 0x1000080, + 0x15000: 0x21040000, + 0x16000: 0x20040080, + 0x17000: 0x1000000, + 0x18000: 0x21040080, + 0x19000: 0x21000000, + 0x1a000: 0x1040000, + 0x1b000: 0x20040000, + 0x1c000: 0x40080, + 0x1d000: 0x20000080, + 0x1e000: 0x0, + 0x1f000: 0x1040080, + 0x10800: 0x21000080, + 0x11800: 0x1000000, + 0x12800: 0x1040000, + 0x13800: 0x20040080, + 0x14800: 0x20000000, + 0x15800: 0x1040080, + 0x16800: 0x80, + 0x17800: 0x21040000, + 0x18800: 0x40080, + 0x19800: 0x21040080, + 0x1a800: 0x0, + 0x1b800: 0x21000000, + 0x1c800: 0x1000080, + 0x1d800: 0x40000, + 0x1e800: 0x20040000, + 0x1f800: 0x20000080 + }, + { + 0x0: 0x10000008, + 0x100: 0x2000, + 0x200: 0x10200000, + 0x300: 0x10202008, + 0x400: 0x10002000, + 0x500: 0x200000, + 0x600: 0x200008, + 0x700: 0x10000000, + 0x800: 0x0, + 0x900: 0x10002008, + 0xa00: 0x202000, + 0xb00: 0x8, + 0xc00: 0x10200008, + 0xd00: 0x202008, + 0xe00: 0x2008, + 0xf00: 0x10202000, + 0x80: 0x10200000, + 0x180: 0x10202008, + 0x280: 0x8, + 0x380: 0x200000, + 0x480: 0x202008, + 0x580: 0x10000008, + 0x680: 0x10002000, + 0x780: 0x2008, + 0x880: 0x200008, + 0x980: 0x2000, + 0xa80: 0x10002008, + 0xb80: 0x10200008, + 0xc80: 0x0, + 0xd80: 0x10202000, + 0xe80: 0x202000, + 0xf80: 0x10000000, + 0x1000: 0x10002000, + 0x1100: 0x10200008, + 0x1200: 0x10202008, + 0x1300: 0x2008, + 0x1400: 0x200000, + 0x1500: 0x10000000, + 0x1600: 0x10000008, + 0x1700: 0x202000, + 0x1800: 0x202008, + 0x1900: 0x0, + 0x1a00: 0x8, + 0x1b00: 0x10200000, + 0x1c00: 0x2000, + 0x1d00: 0x10002008, + 0x1e00: 0x10202000, + 0x1f00: 0x200008, + 0x1080: 0x8, + 0x1180: 0x202000, + 0x1280: 0x200000, + 0x1380: 0x10000008, + 0x1480: 0x10002000, + 0x1580: 0x2008, + 0x1680: 0x10202008, + 0x1780: 0x10200000, + 0x1880: 0x10202000, + 0x1980: 0x10200008, + 0x1a80: 0x2000, + 0x1b80: 0x202008, + 0x1c80: 0x200008, + 0x1d80: 0x0, + 0x1e80: 0x10000000, + 0x1f80: 0x10002008 + }, + { + 0x0: 0x100000, + 0x10: 0x2000401, + 0x20: 0x400, + 0x30: 0x100401, + 0x40: 0x2100401, + 0x50: 0x0, + 0x60: 0x1, + 0x70: 0x2100001, + 0x80: 0x2000400, + 0x90: 0x100001, + 0xa0: 0x2000001, + 0xb0: 0x2100400, + 0xc0: 0x2100000, + 0xd0: 0x401, + 0xe0: 0x100400, + 0xf0: 0x2000000, + 0x8: 0x2100001, + 0x18: 0x0, + 0x28: 0x2000401, + 0x38: 0x2100400, + 0x48: 0x100000, + 0x58: 0x2000001, + 0x68: 0x2000000, + 0x78: 0x401, + 0x88: 0x100401, + 0x98: 0x2000400, + 0xa8: 0x2100000, + 0xb8: 0x100001, + 0xc8: 0x400, + 0xd8: 0x2100401, + 0xe8: 0x1, + 0xf8: 0x100400, + 0x100: 0x2000000, + 0x110: 0x100000, + 0x120: 0x2000401, + 0x130: 0x2100001, + 0x140: 0x100001, + 0x150: 0x2000400, + 0x160: 0x2100400, + 0x170: 0x100401, + 0x180: 0x401, + 0x190: 0x2100401, + 0x1a0: 0x100400, + 0x1b0: 0x1, + 0x1c0: 0x0, + 0x1d0: 0x2100000, + 0x1e0: 0x2000001, + 0x1f0: 0x400, + 0x108: 0x100400, + 0x118: 0x2000401, + 0x128: 0x2100001, + 0x138: 0x1, + 0x148: 0x2000000, + 0x158: 0x100000, + 0x168: 0x401, + 0x178: 0x2100400, + 0x188: 0x2000001, + 0x198: 0x2100000, + 0x1a8: 0x0, + 0x1b8: 0x2100401, + 0x1c8: 0x100401, + 0x1d8: 0x400, + 0x1e8: 0x2000400, + 0x1f8: 0x100001 + }, + { + 0x0: 0x8000820, + 0x1: 0x20000, + 0x2: 0x8000000, + 0x3: 0x20, + 0x4: 0x20020, + 0x5: 0x8020820, + 0x6: 0x8020800, + 0x7: 0x800, + 0x8: 0x8020000, + 0x9: 0x8000800, + 0xa: 0x20800, + 0xb: 0x8020020, + 0xc: 0x820, + 0xd: 0x0, + 0xe: 0x8000020, + 0xf: 0x20820, + 0x80000000: 0x800, + 0x80000001: 0x8020820, + 0x80000002: 0x8000820, + 0x80000003: 0x8000000, + 0x80000004: 0x8020000, + 0x80000005: 0x20800, + 0x80000006: 0x20820, + 0x80000007: 0x20, + 0x80000008: 0x8000020, + 0x80000009: 0x820, + 0x8000000a: 0x20020, + 0x8000000b: 0x8020800, + 0x8000000c: 0x0, + 0x8000000d: 0x8020020, + 0x8000000e: 0x8000800, + 0x8000000f: 0x20000, + 0x10: 0x20820, + 0x11: 0x8020800, + 0x12: 0x20, + 0x13: 0x800, + 0x14: 0x8000800, + 0x15: 0x8000020, + 0x16: 0x8020020, + 0x17: 0x20000, + 0x18: 0x0, + 0x19: 0x20020, + 0x1a: 0x8020000, + 0x1b: 0x8000820, + 0x1c: 0x8020820, + 0x1d: 0x20800, + 0x1e: 0x820, + 0x1f: 0x8000000, + 0x80000010: 0x20000, + 0x80000011: 0x800, + 0x80000012: 0x8020020, + 0x80000013: 0x20820, + 0x80000014: 0x20, + 0x80000015: 0x8020000, + 0x80000016: 0x8000000, + 0x80000017: 0x8000820, + 0x80000018: 0x8020820, + 0x80000019: 0x8000020, + 0x8000001a: 0x8000800, + 0x8000001b: 0x0, + 0x8000001c: 0x20800, + 0x8000001d: 0x820, + 0x8000001e: 0x20020, + 0x8000001f: 0x8020800 + } + ]; + + // Masks that select the SBOX input + var SBOX_MASK = [ + 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, + 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f + ]; + + /** + * DES block cipher algorithm. + */ + var DES = C_algo.DES = BlockCipher.extend({ + _doReset: function () { + // Shortcuts + var key = this._key; + var keyWords = key.words; + + // Select 56 bits according to PC1 + var keyBits = []; + for (var i = 0; i < 56; i++) { + var keyBitPos = PC1[i] - 1; + keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1; + } + + // Assemble 16 subkeys + var subKeys = this._subKeys = []; + for (var nSubKey = 0; nSubKey < 16; nSubKey++) { + // Create subkey + var subKey = subKeys[nSubKey] = []; + + // Shortcut + var bitShift = BIT_SHIFTS[nSubKey]; + + // Select 48 bits according to PC2 + for (var i = 0; i < 24; i++) { + // Select from the left 28 key bits + subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6); + + // Select from the right 28 key bits + subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6); + } + + // Since each subkey is applied to an expanded 32-bit input, + // the subkey can be broken into 8 values scaled to 32-bits, + // which allows the key to be used without expansion + subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31); + for (var i = 1; i < 7; i++) { + subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3); + } + subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27); + } + + // Compute inverse subkeys + var invSubKeys = this._invSubKeys = []; + for (var i = 0; i < 16; i++) { + invSubKeys[i] = subKeys[15 - i]; + } + }, + + encryptBlock: function (M, offset) { + this._doCryptBlock(M, offset, this._subKeys); + }, + + decryptBlock: function (M, offset) { + this._doCryptBlock(M, offset, this._invSubKeys); + }, + + _doCryptBlock: function (M, offset, subKeys) { + // Get input + this._lBlock = M[offset]; + this._rBlock = M[offset + 1]; + + // Initial permutation + exchangeLR.call(this, 4, 0x0f0f0f0f); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeRL.call(this, 2, 0x33333333); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeLR.call(this, 1, 0x55555555); + + // Rounds + for (var round = 0; round < 16; round++) { + // Shortcuts + var subKey = subKeys[round]; + var lBlock = this._lBlock; + var rBlock = this._rBlock; + + // Feistel function + var f = 0; + for (var i = 0; i < 8; i++) { + f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0]; + } + this._lBlock = rBlock; + this._rBlock = lBlock ^ f; + } + + // Undo swap from last round + var t = this._lBlock; + this._lBlock = this._rBlock; + this._rBlock = t; + + // Final permutation + exchangeLR.call(this, 1, 0x55555555); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeRL.call(this, 2, 0x33333333); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeLR.call(this, 4, 0x0f0f0f0f); + + // Set output + M[offset] = this._lBlock; + M[offset + 1] = this._rBlock; + }, + + keySize: 64/32, + + ivSize: 64/32, + + blockSize: 64/32 + }); + + // Swap bits across the left and right words + function exchangeLR(offset, mask) { + var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask; + this._rBlock ^= t; + this._lBlock ^= t << offset; + } + + function exchangeRL(offset, mask) { + var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask; + this._lBlock ^= t; + this._rBlock ^= t << offset; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); + */ + C.DES = BlockCipher._createHelper(DES); + + /** + * Triple-DES block cipher algorithm. + */ + var TripleDES = C_algo.TripleDES = BlockCipher.extend({ + _doReset: function () { + // Shortcuts + var key = this._key; + var keyWords = key.words; + // Make sure the key length is valid (64, 128 or >= 192 bit) + if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) { + throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.'); + } + + // Extend the key according to the keying options defined in 3DES standard + var key1 = keyWords.slice(0, 2); + var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4); + var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); + + // Create DES instances + this._des1 = DES.createEncryptor(WordArray.create(key1)); + this._des2 = DES.createEncryptor(WordArray.create(key2)); + this._des3 = DES.createEncryptor(WordArray.create(key3)); + }, + + encryptBlock: function (M, offset) { + this._des1.encryptBlock(M, offset); + this._des2.decryptBlock(M, offset); + this._des3.encryptBlock(M, offset); + }, + + decryptBlock: function (M, offset) { + this._des3.decryptBlock(M, offset); + this._des2.encryptBlock(M, offset); + this._des1.decryptBlock(M, offset); + }, + + keySize: 192/32, + + ivSize: 64/32, + + blockSize: 64/32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); + */ + C.TripleDES = BlockCipher._createHelper(TripleDES); + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + /** + * RC4 stream cipher algorithm. + */ + var RC4 = C_algo.RC4 = StreamCipher.extend({ + _doReset: function () { + // Shortcuts + var key = this._key; + var keyWords = key.words; + var keySigBytes = key.sigBytes; + + // Init sbox + var S = this._S = []; + for (var i = 0; i < 256; i++) { + S[i] = i; + } + + // Key setup + for (var i = 0, j = 0; i < 256; i++) { + var keyByteIndex = i % keySigBytes; + var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; + + j = (j + S[i] + keyByte) % 256; + + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + } + + // Counters + this._i = this._j = 0; + }, + + _doProcessBlock: function (M, offset) { + M[offset] ^= generateKeystreamWord.call(this); + }, + + keySize: 256/32, + + ivSize: 0 + }); + + function generateKeystreamWord() { + // Shortcuts + var S = this._S; + var i = this._i; + var j = this._j; + + // Generate keystream word + var keystreamWord = 0; + for (var n = 0; n < 4; n++) { + i = (i + 1) % 256; + j = (j + S[i]) % 256; + + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + + keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8); + } + + // Update counters + this._i = i; + this._j = j; + + return keystreamWord; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); + */ + C.RC4 = StreamCipher._createHelper(RC4); + + /** + * Modified RC4 stream cipher algorithm. + */ + var RC4Drop = C_algo.RC4Drop = RC4.extend({ + /** + * Configuration options. + * + * @property {number} drop The number of keystream words to drop. Default 192 + */ + cfg: RC4.cfg.extend({ + drop: 192 + }), + + _doReset: function () { + RC4._doReset.call(this); + + // Drop + for (var i = this.cfg.drop; i > 0; i--) { + generateKeystreamWord.call(this); + } + } + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg); + */ + C.RC4Drop = StreamCipher._createHelper(RC4Drop); + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + // Reusable objects + var S = []; + var C_ = []; + var G = []; + + /** + * Rabbit stream cipher algorithm + */ + var Rabbit = C_algo.Rabbit = StreamCipher.extend({ + _doReset: function () { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + + // Swap endian + for (var i = 0; i < 4; i++) { + K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | + (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00); + } + + // Generate initial state values + var X = this._X = [ + K[0], (K[3] << 16) | (K[2] >>> 16), + K[1], (K[0] << 16) | (K[3] >>> 16), + K[2], (K[1] << 16) | (K[0] >>> 16), + K[3], (K[2] << 16) | (K[1] >>> 16) + ]; + + // Generate initial counter values + var C = this._C = [ + (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) + ]; + + // Carry bit + this._b = 0; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + + // Generate four subvectors + var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + + _doProcessBlock: function (M, offset) { + // Shortcut + var X = this._X; + + // Iterate the system + nextState.call(this); + + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + + // Encrypt + M[offset + i] ^= S[i]; + } + }, + + blockSize: 128/32, + + ivSize: 64/32 + }); + + function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; + this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; + + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + + // High XOR low + G[i] = gh ^ gl; + } + + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg); + * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg); + */ + C.Rabbit = StreamCipher._createHelper(Rabbit); + }()); + + + (function () { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + // Reusable objects + var S = []; + var C_ = []; + var G = []; + + /** + * Rabbit stream cipher algorithm. + * + * This is a legacy version that neglected to convert the key to little-endian. + * This error doesn't affect the cipher's security, + * but it does affect its compatibility with other implementations. + */ + var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({ + _doReset: function () { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + + // Generate initial state values + var X = this._X = [ + K[0], (K[3] << 16) | (K[2] >>> 16), + K[1], (K[0] << 16) | (K[3] >>> 16), + K[2], (K[1] << 16) | (K[0] >>> 16), + K[3], (K[2] << 16) | (K[1] >>> 16) + ]; + + // Generate initial counter values + var C = this._C = [ + (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) + ]; + + // Carry bit + this._b = 0; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + + // Generate four subvectors + var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + + _doProcessBlock: function (M, offset) { + // Shortcut + var X = this._X; + + // Iterate the system + nextState.call(this); + + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + + // Encrypt + M[offset + i] ^= S[i]; + } + }, + + blockSize: 128/32, + + ivSize: 64/32 + }); + + function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; + this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; + + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + + // High XOR low + G[i] = gh ^ gl; + } + + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg); + */ + C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy); + }()); + + + return CryptoJS; + +})); \ No newline at end of file diff --git a/view/molistar/common/js/datetime.js b/view/molistar/common/js/datetime.js new file mode 100644 index 00000000..968b07bb --- /dev/null +++ b/view/molistar/common/js/datetime.js @@ -0,0 +1,2825 @@ +/*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */ +(function (window, document, Math) { +var rAF = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function (callback) { window.setTimeout(callback, 1000 / 60); }; + +var utils = (function () { + var me = {}; + + var _elementStyle = document.createElement('div').style; + var _vendor = (function () { + var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], + transform, + i = 0, + l = vendors.length; + + for ( ; i < l; i++ ) { + transform = vendors[i] + 'ransform'; + if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); + } + + return false; + })(); + + function _prefixStyle (style) { + if ( _vendor === false ) return false; + if ( _vendor === '' ) return style; + return _vendor + style.charAt(0).toUpperCase() + style.substr(1); + } + + me.getTime = Date.now || function getTime () { return new Date().getTime(); }; + + me.extend = function (target, obj) { + for ( var i in obj ) { + target[i] = obj[i]; + } + }; + + me.addEvent = function (el, type, fn, capture) { + el.addEventListener(type, fn, !!capture); + }; + + me.removeEvent = function (el, type, fn, capture) { + el.removeEventListener(type, fn, !!capture); + }; + + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): + pointerEvent; + }; + + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { + var distance = current - start, + speed = Math.abs(distance) / time, + destination, + duration; + + deceleration = deceleration === undefined ? 0.0006 : deceleration; + + destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); + duration = speed / deceleration; + + if ( destination < lowerMargin ) { + destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; + distance = Math.abs(destination - current); + duration = distance / speed; + } else if ( destination > 0 ) { + destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; + distance = Math.abs(current) + destination; + duration = distance / speed; + } + + return { + destination: Math.round(destination), + duration: duration + }; + }; + + var _transform = _prefixStyle('transform'); + + me.extend(me, { + hasTransform: _transform !== false, + hasPerspective: _prefixStyle('perspective') in _elementStyle, + hasTouch: 'ontouchstart' in window, + hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed + hasTransition: _prefixStyle('transition') in _elementStyle + }); + + /* + This should find all Android browsers lower than build 535.19 (both stock browser and webview) + - galaxy S2 is ok + - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` + - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S3 is badAndroid (stock brower, webview) + `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S4 is badAndroid (stock brower, webview) + `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S5 is OK + `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` + - galaxy S6 is OK + `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` + */ + me.isBadAndroid = (function() { + var appVersion = window.navigator.appVersion; + // Android browser is not a chrome browser. + if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { + var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); + if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { + return parseFloat(safariVersion[1]) < 535.19; + } else { + return true; + } + } else { + return false; + } + })(); + + me.extend(me.style = {}, { + transform: _transform, + transitionTimingFunction: _prefixStyle('transitionTimingFunction'), + transitionDuration: _prefixStyle('transitionDuration'), + transitionDelay: _prefixStyle('transitionDelay'), + transformOrigin: _prefixStyle('transformOrigin') + }); + + me.hasClass = function (e, c) { + var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); + return re.test(e.className); + }; + + me.addClass = function (e, c) { + if ( me.hasClass(e, c) ) { + return; + } + + var newclass = e.className.split(' '); + newclass.push(c); + e.className = newclass.join(' '); + }; + + me.removeClass = function (e, c) { + if ( !me.hasClass(e, c) ) { + return; + } + + var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); + e.className = e.className.replace(re, ' '); + }; + + me.offset = function (el) { + var left = -el.offsetLeft, + top = -el.offsetTop; + + // jshint -W084 + while (el = el.offsetParent) { + left -= el.offsetLeft; + top -= el.offsetTop; + } + // jshint +W084 + + return { + left: left, + top: top + }; + }; + + me.preventDefaultException = function (el, exceptions) { + for ( var i in exceptions ) { + if ( exceptions[i].test(el[i]) ) { + return true; + } + } + + return false; + }; + + me.extend(me.eventType = {}, { + touchstart: 1, + touchmove: 1, + touchend: 1, + + mousedown: 2, + mousemove: 2, + mouseup: 2, + + pointerdown: 3, + pointermove: 3, + pointerup: 3, + + MSPointerDown: 3, + MSPointerMove: 3, + MSPointerUp: 3 + }); + + me.extend(me.ease = {}, { + quadratic: { + style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', + fn: function (k) { + return k * ( 2 - k ); + } + }, + circular: { + style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) + fn: function (k) { + return Math.sqrt( 1 - ( --k * k ) ); + } + }, + back: { + style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', + fn: function (k) { + var b = 4; + return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; + } + }, + bounce: { + style: '', + fn: function (k) { + if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { + return 7.5625 * k * k; + } else if ( k < ( 2 / 2.75 ) ) { + return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; + } else if ( k < ( 2.5 / 2.75 ) ) { + return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; + } else { + return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; + } + } + }, + elastic: { + style: '', + fn: function (k) { + var f = 0.22, + e = 0.4; + + if ( k === 0 ) { return 0; } + if ( k == 1 ) { return 1; } + + return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); + } + } + }); + + me.tap = function (e, eventName) { + var ev = document.createEvent('Event'); + ev.initEvent(eventName, true, true); + ev.pageX = e.pageX; + ev.pageY = e.pageY; + e.target.dispatchEvent(ev); + }; + + me.click = function (e) { + var target = e.target, + ev; + + if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { + // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent + // initMouseEvent is deprecated. + ev = document.createEvent(window.MouseEvent ? 'MouseEvents' : 'Event'); + ev.initEvent('click', true, true); + ev.view = e.view || window; + ev.detail = 1; + ev.screenX = target.screenX || 0; + ev.screenY = target.screenY || 0; + ev.clientX = target.clientX || 0; + ev.clientY = target.clientY || 0; + ev.ctrlKey = !!e.ctrlKey; + ev.altKey = !!e.altKey; + ev.shiftKey = !!e.shiftKey; + ev.metaKey = !!e.metaKey; + ev.button = 0; + ev.relatedTarget = null; + ev._constructed = true; + target.dispatchEvent(ev); + } + }; + + return me; +})(); +function IScroll (el, options) { + this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; + this.scroller = this.wrapper.children[0]; + this.scrollerStyle = this.scroller.style; // cache style for better performance + + this.options = { + + resizeScrollbars: true, + + mouseWheelSpeed: 20, + + snapThreshold: 0.334, + +// INSERT POINT: OPTIONS + disablePointer : !utils.hasPointer, + disableTouch : utils.hasPointer || !utils.hasTouch, + disableMouse : utils.hasPointer || utils.hasTouch, + startX: 0, + startY: 0, + scrollY: true, + directionLockThreshold: 5, + momentum: true, + + bounce: true, + bounceTime: 600, + bounceEasing: '', + + preventDefault: true, + preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, + + HWCompositing: true, + useTransition: true, + useTransform: true, + bindToWrapper: typeof window.onmousedown === "undefined" + }; + + for ( var i in options ) { + this.options[i] = options[i]; + } + + // Normalize options + this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; + + this.options.useTransition = utils.hasTransition && this.options.useTransition; + this.options.useTransform = utils.hasTransform && this.options.useTransform; + + this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; + this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; + + // If you want eventPassthrough I have to lock one of the axes + this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; + this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; + + // With eventPassthrough we also need lockDirection mechanism + this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; + this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; + + this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; + + this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; + + if ( this.options.tap === true ) { + this.options.tap = 'tap'; + } + + // https://github.com/cubiq/iscroll/issues/1029 + if (!this.options.useTransition && !this.options.useTransform) { + if(!(/relative|absolute/i).test(this.scrollerStyle.position)) { + this.scrollerStyle.position = "relative"; + } + } + + if ( this.options.shrinkScrollbars == 'scale' ) { + this.options.useTransition = false; + } + + this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; + +// INSERT POINT: NORMALIZATION + + // Some defaults + this.x = 0; + this.y = 0; + this.directionX = 0; + this.directionY = 0; + this._events = {}; + +// INSERT POINT: DEFAULTS + + this._init(); + this.refresh(); + + this.scrollTo(this.options.startX, this.options.startY); + this.enable(); +} + +IScroll.prototype = { + version: '5.2.0', + + _init: function () { + this._initEvents(); + + if ( this.options.scrollbars || this.options.indicators ) { + this._initIndicators(); + } + + if ( this.options.mouseWheel ) { + this._initWheel(); + } + + if ( this.options.snap ) { + this._initSnap(); + } + + if ( this.options.keyBindings ) { + this._initKeys(); + } + +// INSERT POINT: _init + + }, + + destroy: function () { + this._initEvents(true); + clearTimeout(this.resizeTimeout); + this.resizeTimeout = null; + this._execEvent('destroy'); + }, + + _transitionEnd: function (e) { + if ( e.target != this.scroller || !this.isInTransition ) { + return; + } + + this._transitionTime(); + if ( !this.resetPosition(this.options.bounceTime) ) { + this.isInTransition = false; + this._execEvent('scrollEnd'); + } + }, + + _start: function (e) { + // React to left mouse button only + if ( utils.eventType[e.type] != 1 ) { + // for button property + // http://unixpapa.com/js/mouse.html + var button; + if (!e.which) { + /* IE case */ + button = (e.button < 2) ? 0 : + ((e.button == 4) ? 1 : 2); + } else { + /* All others */ + button = e.button; + } + if ( button !== 0 ) { + return; + } + } + + if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { + return; + } + + if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { + e.preventDefault(); + } + + var point = e.touches ? e.touches[0] : e, + pos; + + this.initiated = utils.eventType[e.type]; + this.moved = false; + this.distX = 0; + this.distY = 0; + this.directionX = 0; + this.directionY = 0; + this.directionLocked = 0; + + this.startTime = utils.getTime(); + + if ( this.options.useTransition && this.isInTransition ) { + this._transitionTime(); + this.isInTransition = false; + pos = this.getComputedPosition(); + this._translate(Math.round(pos.x), Math.round(pos.y)); + this._execEvent('scrollEnd'); + } else if ( !this.options.useTransition && this.isAnimating ) { + this.isAnimating = false; + this._execEvent('scrollEnd'); + } + + this.startX = this.x; + this.startY = this.y; + this.absStartX = this.x; + this.absStartY = this.y; + this.pointX = point.pageX; + this.pointY = point.pageY; + + this._execEvent('beforeScrollStart'); + }, + + _move: function (e) { + if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { + return; + } + + if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! + e.preventDefault(); + } + + var point = e.touches ? e.touches[0] : e, + deltaX = point.pageX - this.pointX, + deltaY = point.pageY - this.pointY, + timestamp = utils.getTime(), + newX, newY, + absDistX, absDistY; + + this.pointX = point.pageX; + this.pointY = point.pageY; + + this.distX += deltaX; + this.distY += deltaY; + absDistX = Math.abs(this.distX); + absDistY = Math.abs(this.distY); + + // We need to move at least 10 pixels for the scrolling to initiate + if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { + return; + } + + // If you are scrolling in one direction lock the other + if ( !this.directionLocked && !this.options.freeScroll ) { + if ( absDistX > absDistY + this.options.directionLockThreshold ) { + this.directionLocked = 'h'; // lock horizontally + } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { + this.directionLocked = 'v'; // lock vertically + } else { + this.directionLocked = 'n'; // no lock + } + } + + if ( this.directionLocked == 'h' ) { + if ( this.options.eventPassthrough == 'vertical' ) { + e.preventDefault(); + } else if ( this.options.eventPassthrough == 'horizontal' ) { + this.initiated = false; + return; + } + + deltaY = 0; + } else if ( this.directionLocked == 'v' ) { + if ( this.options.eventPassthrough == 'horizontal' ) { + e.preventDefault(); + } else if ( this.options.eventPassthrough == 'vertical' ) { + this.initiated = false; + return; + } + + deltaX = 0; + } + + deltaX = this.hasHorizontalScroll ? deltaX : 0; + deltaY = this.hasVerticalScroll ? deltaY : 0; + + newX = this.x + deltaX; + newY = this.y + deltaY; + + // Slow down if outside of the boundaries + if ( newX > 0 || newX < this.maxScrollX ) { + newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; + } + if ( newY > 0 || newY < this.maxScrollY ) { + newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; + } + + this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; + this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; + + if ( !this.moved ) { + this._execEvent('scrollStart'); + } + + this.moved = true; + + this._translate(newX, newY); + +/* REPLACE START: _move */ + + if ( timestamp - this.startTime > 300 ) { + this.startTime = timestamp; + this.startX = this.x; + this.startY = this.y; + } + +/* REPLACE END: _move */ + + }, + + _end: function (e) { + if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { + return; + } + + if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { + e.preventDefault(); + } + + var point = e.changedTouches ? e.changedTouches[0] : e, + momentumX, + momentumY, + duration = utils.getTime() - this.startTime, + newX = Math.round(this.x), + newY = Math.round(this.y), + distanceX = Math.abs(newX - this.startX), + distanceY = Math.abs(newY - this.startY), + time = 0, + easing = ''; + + this.isInTransition = 0; + this.initiated = 0; + this.endTime = utils.getTime(); + + // reset if we are outside of the boundaries + if ( this.resetPosition(this.options.bounceTime) ) { + return; + } + + this.scrollTo(newX, newY); // ensures that the last position is rounded + + // we scrolled less than 10 pixels + if ( !this.moved ) { + if ( this.options.tap ) { + utils.tap(e, this.options.tap); + } + + if ( this.options.click ) { + utils.click(e); + } + + this._execEvent('scrollCancel'); + return; + } + + if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { + this._execEvent('flick'); + return; + } + + // start momentum animation if needed + if ( this.options.momentum && duration < 300 ) { + momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; + momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; + newX = momentumX.destination; + newY = momentumY.destination; + time = Math.max(momentumX.duration, momentumY.duration); + this.isInTransition = 1; + } + + + if ( this.options.snap ) { + var snap = this._nearestSnap(newX, newY); + this.currentPage = snap; + time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(newX - snap.x), 1000), + Math.min(Math.abs(newY - snap.y), 1000) + ), 300); + newX = snap.x; + newY = snap.y; + + this.directionX = 0; + this.directionY = 0; + easing = this.options.bounceEasing; + } + +// INSERT POINT: _end + + if ( newX != this.x || newY != this.y ) { + // change easing function when scroller goes out of the boundaries + if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { + easing = utils.ease.quadratic; + } + + this.scrollTo(newX, newY, time, easing); + return; + } + + this._execEvent('scrollEnd'); + }, + + _resize: function () { + var that = this; + + clearTimeout(this.resizeTimeout); + + this.resizeTimeout = setTimeout(function () { + that.refresh(); + }, this.options.resizePolling); + }, + + resetPosition: function (time) { + var x = this.x, + y = this.y; + + time = time || 0; + + if ( !this.hasHorizontalScroll || this.x > 0 ) { + x = 0; + } else if ( this.x < this.maxScrollX ) { + x = this.maxScrollX; + } + + if ( !this.hasVerticalScroll || this.y > 0 ) { + y = 0; + } else if ( this.y < this.maxScrollY ) { + y = this.maxScrollY; + } + + if ( x == this.x && y == this.y ) { + return false; + } + + this.scrollTo(x, y, time, this.options.bounceEasing); + + return true; + }, + + disable: function () { + this.enabled = false; + }, + + enable: function () { + this.enabled = true; + }, + + refresh: function () { + var rf = this.wrapper.offsetHeight; // Force reflow + + this.wrapperWidth = this.wrapper.clientWidth; + this.wrapperHeight = this.wrapper.clientHeight; + +/* REPLACE START: refresh */ + + this.scrollerWidth = this.scroller.offsetWidth; + this.scrollerHeight = this.scroller.offsetHeight; + + this.maxScrollX = this.wrapperWidth - this.scrollerWidth; + this.maxScrollY = this.wrapperHeight - this.scrollerHeight; + +/* REPLACE END: refresh */ + + this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; + this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; + + if ( !this.hasHorizontalScroll ) { + this.maxScrollX = 0; + this.scrollerWidth = this.wrapperWidth; + } + + if ( !this.hasVerticalScroll ) { + this.maxScrollY = 0; + this.scrollerHeight = this.wrapperHeight; + } + + this.endTime = 0; + this.directionX = 0; + this.directionY = 0; + + this.wrapperOffset = utils.offset(this.wrapper); + + this._execEvent('refresh'); + + this.resetPosition(); + +// INSERT POINT: _refresh + + }, + + on: function (type, fn) { + if ( !this._events[type] ) { + this._events[type] = []; + } + + this._events[type].push(fn); + }, + + off: function (type, fn) { + if ( !this._events[type] ) { + return; + } + + var index = this._events[type].indexOf(fn); + + if ( index > -1 ) { + this._events[type].splice(index, 1); + } + }, + + _execEvent: function (type) { + if ( !this._events[type] ) { + return; + } + + var i = 0, + l = this._events[type].length; + + if ( !l ) { + return; + } + + for ( ; i < l; i++ ) { + this._events[type][i].apply(this, [].slice.call(arguments, 1)); + } + }, + + scrollBy: function (x, y, time, easing) { + x = this.x + x; + y = this.y + y; + time = time || 0; + + this.scrollTo(x, y, time, easing); + }, + + scrollTo: function (x, y, time, easing) { + easing = easing || utils.ease.circular; + + this.isInTransition = this.options.useTransition && time > 0; + var transitionType = this.options.useTransition && easing.style; + if ( !time || transitionType ) { + if(transitionType) { + this._transitionTimingFunction(easing.style); + this._transitionTime(time); + } + this._translate(x, y); + } else { + this._animate(x, y, time, easing.fn); + } + }, + + scrollToElement: function (el, time, offsetX, offsetY, easing) { + el = el.nodeType ? el : this.scroller.querySelector(el); + + if ( !el ) { + return; + } + + var pos = utils.offset(el); + + pos.left -= this.wrapperOffset.left; + pos.top -= this.wrapperOffset.top; + + // if offsetX/Y are true we center the element to the screen + if ( offsetX === true ) { + offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2); + } + if ( offsetY === true ) { + offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2); + } + + pos.left -= offsetX || 0; + pos.top -= offsetY || 0; + + pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; + pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; + + time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; + + this.scrollTo(pos.left, pos.top, time, easing); + }, + + _transitionTime: function (time) { + if (!this.options.useTransition) { + return; + } + time = time || 0; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + + this.scrollerStyle[durationProp] = time + 'ms'; + + if ( !time && utils.isBadAndroid ) { + this.scrollerStyle[durationProp] = '0.0001ms'; + // remove 0.0001ms + var self = this; + rAF(function() { + if(self.scrollerStyle[durationProp] === '0.0001ms') { + self.scrollerStyle[durationProp] = '0s'; + } + }); + } + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].transitionTime(time); + } + } + + +// INSERT POINT: _transitionTime + + }, + + _transitionTimingFunction: function (easing) { + this.scrollerStyle[utils.style.transitionTimingFunction] = easing; + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].transitionTimingFunction(easing); + } + } + + +// INSERT POINT: _transitionTimingFunction + + }, + + _translate: function (x, y) { + if ( this.options.useTransform ) { + +/* REPLACE START: _translate */ + + this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ; + +/* REPLACE END: _translate */ + + } else { + x = Math.round(x); + y = Math.round(y); + this.scrollerStyle.left = x + 'px'; + this.scrollerStyle.top = y + 'px'; + } + + this.x = x; + this.y = y; + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].updatePosition(); + } + } + + +// INSERT POINT: _translate + + }, + + _initEvents: function (remove) { + var eventType = remove ? utils.removeEvent : utils.addEvent, + target = this.options.bindToWrapper ? this.wrapper : window; + + eventType(window, 'orientationchange', this); + eventType(window, 'resize', this); + + if ( this.options.click ) { + eventType(this.wrapper, 'click', this, true); + } + + if ( !this.options.disableMouse ) { + eventType(this.wrapper, 'mousedown', this); + eventType(target, 'mousemove', this); + eventType(target, 'mousecancel', this); + eventType(target, 'mouseup', this); + } + + if ( utils.hasPointer && !this.options.disablePointer ) { + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); + } + + if ( utils.hasTouch && !this.options.disableTouch ) { + eventType(this.wrapper, 'touchstart', this); + eventType(target, 'touchmove', this); + eventType(target, 'touchcancel', this); + eventType(target, 'touchend', this); + } + + eventType(this.scroller, 'transitionend', this); + eventType(this.scroller, 'webkitTransitionEnd', this); + eventType(this.scroller, 'oTransitionEnd', this); + eventType(this.scroller, 'MSTransitionEnd', this); + }, + + getComputedPosition: function () { + var matrix = window.getComputedStyle(this.scroller, null), + x, y; + + if ( this.options.useTransform ) { + matrix = matrix[utils.style.transform].split(')')[0].split(', '); + x = +(matrix[12] || matrix[4]); + y = +(matrix[13] || matrix[5]); + } else { + x = +matrix.left.replace(/[^-\d.]/g, ''); + y = +matrix.top.replace(/[^-\d.]/g, ''); + } + + return { x: x, y: y }; + }, + _initIndicators: function () { + var interactive = this.options.interactiveScrollbars, + customStyle = typeof this.options.scrollbars != 'string', + indicators = [], + indicator; + + var that = this; + + this.indicators = []; + + if ( this.options.scrollbars ) { + // Vertical scrollbar + if ( this.options.scrollY ) { + indicator = { + el: createDefaultScrollbar('v', interactive, this.options.scrollbars), + interactive: interactive, + defaultScrollbars: true, + customStyle: customStyle, + resize: this.options.resizeScrollbars, + shrink: this.options.shrinkScrollbars, + fade: this.options.fadeScrollbars, + listenX: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + + // Horizontal scrollbar + if ( this.options.scrollX ) { + indicator = { + el: createDefaultScrollbar('h', interactive, this.options.scrollbars), + interactive: interactive, + defaultScrollbars: true, + customStyle: customStyle, + resize: this.options.resizeScrollbars, + shrink: this.options.shrinkScrollbars, + fade: this.options.fadeScrollbars, + listenY: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + } + + if ( this.options.indicators ) { + // TODO: check concat compatibility + indicators = indicators.concat(this.options.indicators); + } + + for ( var i = indicators.length; i--; ) { + this.indicators.push( new Indicator(this, indicators[i]) ); + } + + // TODO: check if we can use array.map (wide compatibility and performance issues) + function _indicatorsMap (fn) { + if (that.indicators) { + for ( var i = that.indicators.length; i--; ) { + fn.call(that.indicators[i]); + } + } + } + + if ( this.options.fadeScrollbars ) { + this.on('scrollEnd', function () { + _indicatorsMap(function () { + this.fade(); + }); + }); + + this.on('scrollCancel', function () { + _indicatorsMap(function () { + this.fade(); + }); + }); + + this.on('scrollStart', function () { + _indicatorsMap(function () { + this.fade(1); + }); + }); + + this.on('beforeScrollStart', function () { + _indicatorsMap(function () { + this.fade(1, true); + }); + }); + } + + + this.on('refresh', function () { + _indicatorsMap(function () { + this.refresh(); + }); + }); + + this.on('destroy', function () { + _indicatorsMap(function () { + this.destroy(); + }); + + delete this.indicators; + }); + }, + + _initWheel: function () { + utils.addEvent(this.wrapper, 'wheel', this); + utils.addEvent(this.wrapper, 'mousewheel', this); + utils.addEvent(this.wrapper, 'DOMMouseScroll', this); + + this.on('destroy', function () { + clearTimeout(this.wheelTimeout); + this.wheelTimeout = null; + utils.removeEvent(this.wrapper, 'wheel', this); + utils.removeEvent(this.wrapper, 'mousewheel', this); + utils.removeEvent(this.wrapper, 'DOMMouseScroll', this); + }); + }, + + _wheel: function (e) { + if ( !this.enabled ) { + return; + } + + e.preventDefault(); + + var wheelDeltaX, wheelDeltaY, + newX, newY, + that = this; + + if ( this.wheelTimeout === undefined ) { + that._execEvent('scrollStart'); + } + + // Execute the scrollEnd event after 400ms the wheel stopped scrolling + clearTimeout(this.wheelTimeout); + this.wheelTimeout = setTimeout(function () { + if(!that.options.snap) { + that._execEvent('scrollEnd'); + } + that.wheelTimeout = undefined; + }, 400); + + if ( 'deltaX' in e ) { + if (e.deltaMode === 1) { + wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed; + wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed; + } else { + wheelDeltaX = -e.deltaX; + wheelDeltaY = -e.deltaY; + } + } else if ( 'wheelDeltaX' in e ) { + wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed; + wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed; + } else if ( 'wheelDelta' in e ) { + wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed; + } else if ( 'detail' in e ) { + wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed; + } else { + return; + } + + wheelDeltaX *= this.options.invertWheelDirection; + wheelDeltaY *= this.options.invertWheelDirection; + + if ( !this.hasVerticalScroll ) { + wheelDeltaX = wheelDeltaY; + wheelDeltaY = 0; + } + + if ( this.options.snap ) { + newX = this.currentPage.pageX; + newY = this.currentPage.pageY; + + if ( wheelDeltaX > 0 ) { + newX--; + } else if ( wheelDeltaX < 0 ) { + newX++; + } + + if ( wheelDeltaY > 0 ) { + newY--; + } else if ( wheelDeltaY < 0 ) { + newY++; + } + + this.goToPage(newX, newY); + + return; + } + + newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0); + newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0); + + this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0; + this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0; + + if ( newX > 0 ) { + newX = 0; + } else if ( newX < this.maxScrollX ) { + newX = this.maxScrollX; + } + + if ( newY > 0 ) { + newY = 0; + } else if ( newY < this.maxScrollY ) { + newY = this.maxScrollY; + } + + this.scrollTo(newX, newY, 0); + +// INSERT POINT: _wheel + }, + + _initSnap: function () { + this.currentPage = {}; + + if ( typeof this.options.snap == 'string' ) { + this.options.snap = this.scroller.querySelectorAll(this.options.snap); + } + + this.on('refresh', function () { + var i = 0, l, + m = 0, n, + cx, cy, + x = 0, y, + stepX = this.options.snapStepX || this.wrapperWidth, + stepY = this.options.snapStepY || this.wrapperHeight, + el; + + this.pages = []; + + if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) { + return; + } + + if ( this.options.snap === true ) { + cx = Math.round( stepX / 2 ); + cy = Math.round( stepY / 2 ); + + while ( x > -this.scrollerWidth ) { + this.pages[i] = []; + l = 0; + y = 0; + + while ( y > -this.scrollerHeight ) { + this.pages[i][l] = { + x: Math.max(x, this.maxScrollX), + y: Math.max(y, this.maxScrollY), + width: stepX, + height: stepY, + cx: x - cx, + cy: y - cy + }; + + y -= stepY; + l++; + } + + x -= stepX; + i++; + } + } else { + el = this.options.snap; + l = el.length; + n = -1; + + for ( ; i < l; i++ ) { + if ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) { + m = 0; + n++; + } + + if ( !this.pages[m] ) { + this.pages[m] = []; + } + + x = Math.max(-el[i].offsetLeft, this.maxScrollX); + y = Math.max(-el[i].offsetTop, this.maxScrollY); + cx = x - Math.round(el[i].offsetWidth / 2); + cy = y - Math.round(el[i].offsetHeight / 2); + + this.pages[m][n] = { + x: x, + y: y, + width: el[i].offsetWidth, + height: el[i].offsetHeight, + cx: cx, + cy: cy + }; + + if ( x > this.maxScrollX ) { + m++; + } + } + } + + this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); + + // Update snap threshold if needed + if ( this.options.snapThreshold % 1 === 0 ) { + this.snapThresholdX = this.options.snapThreshold; + this.snapThresholdY = this.options.snapThreshold; + } else { + this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold); + this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold); + } + }); + + this.on('flick', function () { + var time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(this.x - this.startX), 1000), + Math.min(Math.abs(this.y - this.startY), 1000) + ), 300); + + this.goToPage( + this.currentPage.pageX + this.directionX, + this.currentPage.pageY + this.directionY, + time + ); + }); + }, + + _nearestSnap: function (x, y) { + if ( !this.pages.length ) { + return { x: 0, y: 0, pageX: 0, pageY: 0 }; + } + + var i = 0, + l = this.pages.length, + m = 0; + + // Check if we exceeded the snap threshold + if ( Math.abs(x - this.absStartX) < this.snapThresholdX && + Math.abs(y - this.absStartY) < this.snapThresholdY ) { + return this.currentPage; + } + + if ( x > 0 ) { + x = 0; + } else if ( x < this.maxScrollX ) { + x = this.maxScrollX; + } + + if ( y > 0 ) { + y = 0; + } else if ( y < this.maxScrollY ) { + y = this.maxScrollY; + } + + for ( ; i < l; i++ ) { + if ( x >= this.pages[i][0].cx ) { + x = this.pages[i][0].x; + break; + } + } + + l = this.pages[i].length; + + for ( ; m < l; m++ ) { + if ( y >= this.pages[0][m].cy ) { + y = this.pages[0][m].y; + break; + } + } + + if ( i == this.currentPage.pageX ) { + i += this.directionX; + + if ( i < 0 ) { + i = 0; + } else if ( i >= this.pages.length ) { + i = this.pages.length - 1; + } + + x = this.pages[i][0].x; + } + + if ( m == this.currentPage.pageY ) { + m += this.directionY; + + if ( m < 0 ) { + m = 0; + } else if ( m >= this.pages[0].length ) { + m = this.pages[0].length - 1; + } + + y = this.pages[0][m].y; + } + + return { + x: x, + y: y, + pageX: i, + pageY: m + }; + }, + + goToPage: function (x, y, time, easing) { + easing = easing || this.options.bounceEasing; + + if ( x >= this.pages.length ) { + x = this.pages.length - 1; + } else if ( x < 0 ) { + x = 0; + } + + if ( y >= this.pages[x].length ) { + y = this.pages[x].length - 1; + } else if ( y < 0 ) { + y = 0; + } + + var posX = this.pages[x][y].x, + posY = this.pages[x][y].y; + + time = time === undefined ? this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(posX - this.x), 1000), + Math.min(Math.abs(posY - this.y), 1000) + ), 300) : time; + + this.currentPage = { + x: posX, + y: posY, + pageX: x, + pageY: y + }; + + this.scrollTo(posX, posY, time, easing); + }, + + next: function (time, easing) { + var x = this.currentPage.pageX, + y = this.currentPage.pageY; + + x++; + + if ( x >= this.pages.length && this.hasVerticalScroll ) { + x = 0; + y++; + } + + this.goToPage(x, y, time, easing); + }, + + prev: function (time, easing) { + var x = this.currentPage.pageX, + y = this.currentPage.pageY; + + x--; + + if ( x < 0 && this.hasVerticalScroll ) { + x = 0; + y--; + } + + this.goToPage(x, y, time, easing); + }, + + _initKeys: function (e) { + // default key bindings + var keys = { + pageUp: 33, + pageDown: 34, + end: 35, + home: 36, + left: 37, + up: 38, + right: 39, + down: 40 + }; + var i; + + // if you give me characters I give you keycode + if ( typeof this.options.keyBindings == 'object' ) { + for ( i in this.options.keyBindings ) { + if ( typeof this.options.keyBindings[i] == 'string' ) { + this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0); + } + } + } else { + this.options.keyBindings = {}; + } + + for ( i in keys ) { + this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i]; + } + + utils.addEvent(window, 'keydown', this); + + this.on('destroy', function () { + utils.removeEvent(window, 'keydown', this); + }); + }, + + _key: function (e) { + if ( !this.enabled ) { + return; + } + + var snap = this.options.snap, // we are using this alot, better to cache it + newX = snap ? this.currentPage.pageX : this.x, + newY = snap ? this.currentPage.pageY : this.y, + now = utils.getTime(), + prevTime = this.keyTime || 0, + acceleration = 0.250, + pos; + + if ( this.options.useTransition && this.isInTransition ) { + pos = this.getComputedPosition(); + + this._translate(Math.round(pos.x), Math.round(pos.y)); + this.isInTransition = false; + } + + this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0; + + switch ( e.keyCode ) { + case this.options.keyBindings.pageUp: + if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { + newX += snap ? 1 : this.wrapperWidth; + } else { + newY += snap ? 1 : this.wrapperHeight; + } + break; + case this.options.keyBindings.pageDown: + if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { + newX -= snap ? 1 : this.wrapperWidth; + } else { + newY -= snap ? 1 : this.wrapperHeight; + } + break; + case this.options.keyBindings.end: + newX = snap ? this.pages.length-1 : this.maxScrollX; + newY = snap ? this.pages[0].length-1 : this.maxScrollY; + break; + case this.options.keyBindings.home: + newX = 0; + newY = 0; + break; + case this.options.keyBindings.left: + newX += snap ? -1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.up: + newY += snap ? 1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.right: + newX -= snap ? -1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.down: + newY -= snap ? 1 : 5 + this.keyAcceleration>>0; + break; + default: + return; + } + + if ( snap ) { + this.goToPage(newX, newY); + return; + } + + if ( newX > 0 ) { + newX = 0; + this.keyAcceleration = 0; + } else if ( newX < this.maxScrollX ) { + newX = this.maxScrollX; + this.keyAcceleration = 0; + } + + if ( newY > 0 ) { + newY = 0; + this.keyAcceleration = 0; + } else if ( newY < this.maxScrollY ) { + newY = this.maxScrollY; + this.keyAcceleration = 0; + } + + this.scrollTo(newX, newY, 0); + + this.keyTime = now; + }, + + _animate: function (destX, destY, duration, easingFn) { + var that = this, + startX = this.x, + startY = this.y, + startTime = utils.getTime(), + destTime = startTime + duration; + + function step () { + var now = utils.getTime(), + newX, newY, + easing; + + if ( now >= destTime ) { + that.isAnimating = false; + that._translate(destX, destY); + + if ( !that.resetPosition(that.options.bounceTime) ) { + that._execEvent('scrollEnd'); + } + + return; + } + + now = ( now - startTime ) / duration; + easing = easingFn(now); + newX = ( destX - startX ) * easing + startX; + newY = ( destY - startY ) * easing + startY; + that._translate(newX, newY); + + if ( that.isAnimating ) { + rAF(step); + } + } + + this.isAnimating = true; + step(); + }, + handleEvent: function (e) { + switch ( e.type ) { + case 'touchstart': + case 'pointerdown': + case 'MSPointerDown': + case 'mousedown': + this._start(e); + break; + case 'touchmove': + case 'pointermove': + case 'MSPointerMove': + case 'mousemove': + this._move(e); + break; + case 'touchend': + case 'pointerup': + case 'MSPointerUp': + case 'mouseup': + case 'touchcancel': + case 'pointercancel': + case 'MSPointerCancel': + case 'mousecancel': + this._end(e); + break; + case 'orientationchange': + case 'resize': + this._resize(); + break; + case 'transitionend': + case 'webkitTransitionEnd': + case 'oTransitionEnd': + case 'MSTransitionEnd': + this._transitionEnd(e); + break; + case 'wheel': + case 'DOMMouseScroll': + case 'mousewheel': + this._wheel(e); + break; + case 'keydown': + this._key(e); + break; + case 'click': + if ( this.enabled && !e._constructed ) { + e.preventDefault(); + e.stopPropagation(); + } + break; + } + } +}; +function createDefaultScrollbar (direction, interactive, type) { + var scrollbar = document.createElement('div'), + indicator = document.createElement('div'); + + if ( type === true ) { + scrollbar.style.cssText = 'position:absolute;z-index:9999'; + indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px'; + } + + indicator.className = 'iScrollIndicator'; + + if ( direction == 'h' ) { + if ( type === true ) { + scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0'; + indicator.style.height = '100%'; + } + scrollbar.className = 'iScrollHorizontalScrollbar'; + } else { + if ( type === true ) { + scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px'; + indicator.style.width = '100%'; + } + scrollbar.className = 'iScrollVerticalScrollbar'; + } + + scrollbar.style.cssText += ';overflow:hidden'; + + if ( !interactive ) { + scrollbar.style.pointerEvents = 'none'; + } + + scrollbar.appendChild(indicator); + + return scrollbar; +} + +function Indicator (scroller, options) { + this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el; + this.wrapperStyle = this.wrapper.style; + this.indicator = this.wrapper.children[0]; + this.indicatorStyle = this.indicator.style; + this.scroller = scroller; + + this.options = { + listenX: true, + listenY: true, + interactive: false, + resize: true, + defaultScrollbars: false, + shrink: false, + fade: false, + speedRatioX: 0, + speedRatioY: 0 + }; + + for ( var i in options ) { + this.options[i] = options[i]; + } + + this.sizeRatioX = 1; + this.sizeRatioY = 1; + this.maxPosX = 0; + this.maxPosY = 0; + + if ( this.options.interactive ) { + if ( !this.options.disableTouch ) { + utils.addEvent(this.indicator, 'touchstart', this); + utils.addEvent(window, 'touchend', this); + } + if ( !this.options.disablePointer ) { + utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); + } + if ( !this.options.disableMouse ) { + utils.addEvent(this.indicator, 'mousedown', this); + utils.addEvent(window, 'mouseup', this); + } + } + + if ( this.options.fade ) { + this.wrapperStyle[utils.style.transform] = this.scroller.translateZ; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms'; + // remove 0.0001ms + var self = this; + if(utils.isBadAndroid) { + rAF(function() { + if(self.wrapperStyle[durationProp] === '0.0001ms') { + self.wrapperStyle[durationProp] = '0s'; + } + }); + } + this.wrapperStyle.opacity = '0'; + } +} + +Indicator.prototype = { + handleEvent: function (e) { + switch ( e.type ) { + case 'touchstart': + case 'pointerdown': + case 'MSPointerDown': + case 'mousedown': + this._start(e); + break; + case 'touchmove': + case 'pointermove': + case 'MSPointerMove': + case 'mousemove': + this._move(e); + break; + case 'touchend': + case 'pointerup': + case 'MSPointerUp': + case 'mouseup': + case 'touchcancel': + case 'pointercancel': + case 'MSPointerCancel': + case 'mousecancel': + this._end(e); + break; + } + }, + + destroy: function () { + if ( this.options.fadeScrollbars ) { + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + } + if ( this.options.interactive ) { + utils.removeEvent(this.indicator, 'touchstart', this); + utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.removeEvent(this.indicator, 'mousedown', this); + + utils.removeEvent(window, 'touchmove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); + utils.removeEvent(window, 'mousemove', this); + + utils.removeEvent(window, 'touchend', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); + utils.removeEvent(window, 'mouseup', this); + } + + if ( this.options.defaultScrollbars ) { + this.wrapper.parentNode.removeChild(this.wrapper); + } + }, + + _start: function (e) { + var point = e.touches ? e.touches[0] : e; + + e.preventDefault(); + e.stopPropagation(); + + this.transitionTime(); + + this.initiated = true; + this.moved = false; + this.lastPointX = point.pageX; + this.lastPointY = point.pageY; + + this.startTime = utils.getTime(); + + if ( !this.options.disableTouch ) { + utils.addEvent(window, 'touchmove', this); + } + if ( !this.options.disablePointer ) { + utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); + } + if ( !this.options.disableMouse ) { + utils.addEvent(window, 'mousemove', this); + } + + this.scroller._execEvent('beforeScrollStart'); + }, + + _move: function (e) { + var point = e.touches ? e.touches[0] : e, + deltaX, deltaY, + newX, newY, + timestamp = utils.getTime(); + + if ( !this.moved ) { + this.scroller._execEvent('scrollStart'); + } + + this.moved = true; + + deltaX = point.pageX - this.lastPointX; + this.lastPointX = point.pageX; + + deltaY = point.pageY - this.lastPointY; + this.lastPointY = point.pageY; + + newX = this.x + deltaX; + newY = this.y + deltaY; + + this._pos(newX, newY); + +// INSERT POINT: indicator._move + + e.preventDefault(); + e.stopPropagation(); + }, + + _end: function (e) { + if ( !this.initiated ) { + return; + } + + this.initiated = false; + + e.preventDefault(); + e.stopPropagation(); + + utils.removeEvent(window, 'touchmove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); + utils.removeEvent(window, 'mousemove', this); + + if ( this.scroller.options.snap ) { + var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y); + + var time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(this.scroller.x - snap.x), 1000), + Math.min(Math.abs(this.scroller.y - snap.y), 1000) + ), 300); + + if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) { + this.scroller.directionX = 0; + this.scroller.directionY = 0; + this.scroller.currentPage = snap; + this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing); + } + } + + if ( this.moved ) { + this.scroller._execEvent('scrollEnd'); + } + }, + + transitionTime: function (time) { + time = time || 0; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + + this.indicatorStyle[durationProp] = time + 'ms'; + + if ( !time && utils.isBadAndroid ) { + this.indicatorStyle[durationProp] = '0.0001ms'; + // remove 0.0001ms + var self = this; + rAF(function() { + if(self.indicatorStyle[durationProp] === '0.0001ms') { + self.indicatorStyle[durationProp] = '0s'; + } + }); + } + }, + + transitionTimingFunction: function (easing) { + this.indicatorStyle[utils.style.transitionTimingFunction] = easing; + }, + + refresh: function () { + this.transitionTime(); + + if ( this.options.listenX && !this.options.listenY ) { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none'; + } else if ( this.options.listenY && !this.options.listenX ) { + this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none'; + } else { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none'; + } + + if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) { + utils.addClass(this.wrapper, 'iScrollBothScrollbars'); + utils.removeClass(this.wrapper, 'iScrollLoneScrollbar'); + + if ( this.options.defaultScrollbars && this.options.customStyle ) { + if ( this.options.listenX ) { + this.wrapper.style.right = '8px'; + } else { + this.wrapper.style.bottom = '8px'; + } + } + } else { + utils.removeClass(this.wrapper, 'iScrollBothScrollbars'); + utils.addClass(this.wrapper, 'iScrollLoneScrollbar'); + + if ( this.options.defaultScrollbars && this.options.customStyle ) { + if ( this.options.listenX ) { + this.wrapper.style.right = '2px'; + } else { + this.wrapper.style.bottom = '2px'; + } + } + } + + var r = this.wrapper.offsetHeight; // force refresh + + if ( this.options.listenX ) { + this.wrapperWidth = this.wrapper.clientWidth; + if ( this.options.resize ) { + this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8); + this.indicatorStyle.width = this.indicatorWidth + 'px'; + } else { + this.indicatorWidth = this.indicator.clientWidth; + } + + this.maxPosX = this.wrapperWidth - this.indicatorWidth; + + if ( this.options.shrink == 'clip' ) { + this.minBoundaryX = -this.indicatorWidth + 8; + this.maxBoundaryX = this.wrapperWidth - 8; + } else { + this.minBoundaryX = 0; + this.maxBoundaryX = this.maxPosX; + } + + this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX)); + } + + if ( this.options.listenY ) { + this.wrapperHeight = this.wrapper.clientHeight; + if ( this.options.resize ) { + this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8); + this.indicatorStyle.height = this.indicatorHeight + 'px'; + } else { + this.indicatorHeight = this.indicator.clientHeight; + } + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + + if ( this.options.shrink == 'clip' ) { + this.minBoundaryY = -this.indicatorHeight + 8; + this.maxBoundaryY = this.wrapperHeight - 8; + } else { + this.minBoundaryY = 0; + this.maxBoundaryY = this.maxPosY; + } + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY)); + } + + this.updatePosition(); + }, + + updatePosition: function () { + var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0, + y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0; + + if ( !this.options.ignoreBoundaries ) { + if ( x < this.minBoundaryX ) { + if ( this.options.shrink == 'scale' ) { + this.width = Math.max(this.indicatorWidth + x, 8); + this.indicatorStyle.width = this.width + 'px'; + } + x = this.minBoundaryX; + } else if ( x > this.maxBoundaryX ) { + if ( this.options.shrink == 'scale' ) { + this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8); + this.indicatorStyle.width = this.width + 'px'; + x = this.maxPosX + this.indicatorWidth - this.width; + } else { + x = this.maxBoundaryX; + } + } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) { + this.width = this.indicatorWidth; + this.indicatorStyle.width = this.width + 'px'; + } + + if ( y < this.minBoundaryY ) { + if ( this.options.shrink == 'scale' ) { + this.height = Math.max(this.indicatorHeight + y * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + } + y = this.minBoundaryY; + } else if ( y > this.maxBoundaryY ) { + if ( this.options.shrink == 'scale' ) { + this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + y = this.maxPosY + this.indicatorHeight - this.height; + } else { + y = this.maxBoundaryY; + } + } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) { + this.height = this.indicatorHeight; + this.indicatorStyle.height = this.height + 'px'; + } + } + + this.x = x; + this.y = y; + + if ( this.scroller.options.useTransform ) { + this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ; + } else { + this.indicatorStyle.left = x + 'px'; + this.indicatorStyle.top = y + 'px'; + } + }, + + _pos: function (x, y) { + if ( x < 0 ) { + x = 0; + } else if ( x > this.maxPosX ) { + x = this.maxPosX; + } + + if ( y < 0 ) { + y = 0; + } else if ( y > this.maxPosY ) { + y = this.maxPosY; + } + + x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x; + y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y; + + this.scroller.scrollTo(x, y); + }, + + fade: function (val, hold) { + if ( hold && !this.visible ) { + return; + } + + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + + var time = val ? 250 : 500, + delay = val ? 0 : 300; + + val = val ? '1' : '0'; + + this.wrapperStyle[utils.style.transitionDuration] = time + 'ms'; + + this.fadeTimeout = setTimeout((function (val) { + this.wrapperStyle.opacity = val; + this.visible = +val; + }).bind(this, val), delay); + } +}; + +IScroll.utils = utils; + +if ( typeof module != 'undefined' && module.exports ) { + module.exports = IScroll; +} else if ( typeof define == 'function' && define.amd ) { + define( function () { return IScroll; } ); +} else { + window.IScroll = IScroll; +} + +})(window, document, Math); + +/** + * Created by xty on 2016/8/4. + */ +var LogUtils = (function () { + var debug = false; + return { + log: function (msg) { + if (debug) { + console.log(msg); + } + }, error: function (msg) { + console.error(msg); + }, + enable: function () { + debug = true; + }, + disable: function () { + debug = false; + } + }; +})(); + +var DateUtils = (function () { + return { + _y: function (date) { + return date.getFullYear() + }, _m: function (date) { + return date.getMonth() + }, _rm: function (date) { + return date.getMonth() + 1 + }, _d: function (date) { + return date.getDate() + }, _h: function (date) { + return date.getHours() + }, _i: function (date) { + return date.getMinutes() + }, _s: function (date) { + return date.getSeconds() + } + + } +})(); + +var ComponentCountProvider = (function () { + var _dateTimeComponentCount = 0; + return { + incrementAndGet: function () { + return ++_dateTimeComponentCount; + } + } +})(); + +var ComponentDefine = (function () { + var define = {}; + define.dateLabels = { + year: "年", month: "月", day: "日", + hour: "时", minute: "分", second: "秒" + }; + define.presetType = ["time", "date", "datetime", "diy"]; + /** + * 验证类型是否支持 + * @param type 类型 + * @returns {boolean} 支持的类型返回true,不支持返回false. + * @see #presetType + */ + define.validateSupportType = function (type) { + + var support = false; + this.presetType.forEach(function (internalType) { + if (internalType === type) { + support = true; + } + + }); + + return support; + }; + return define; +})(); + +var ComponentUtils = (function () { + return { + /** + * 获取选中的值在数组中的索引 + * @param arr 数组 + * @param value 选中的值 + * @returns {number} 如果选中的值在数组中存在则返回在数组中的位置,不存在返回-1. + */ + getSelectedValueIndex: function (arr, value) { + var selectedValue = -1; + arr.forEach(function (arrValue, index) { + if (value === arrValue) { + selectedValue = index; + } + }); + + return selectedValue; + }, + /** + * 填充数组 + * @param start 开始值 + * @param count 填充数量 + * @returns {Array} 数组. + */ + fillArr: function (start, count) { + + var arr = []; + + for (var index = start; count >= index; index++) { + arr.push(index); + } + + return arr; + }, + /** + * 获取距离顶部的距离 + * @param lineHeight item的高度 + * @param position 位置 + * @returns {number} 距离顶部的距离 + */ + getTop: function (lineHeight, position) { + //lineHeight为item的高度. + return 0 - lineHeight * position; + }, + /** + * 将date转换为指定格式的json对象. + * @param date date对象 + * @returns {{h: *, i: *, s: *}} + *
      +         *     {
      +                h: DateUtils._h(date),
      +                i: DateUtils._i(date),
      +                s: DateUtils._s(date)
      +                }
      +         * 
      + */ + getDisplayedTime: function (date) { + + return { + h: DateUtils._h(date), + i: DateUtils._i(date), + s: DateUtils._s(date) + }; + + }, + /** + * 判断对象是否为date类型 + * @param date date对象 + * @returns {boolean} 为date对象返回true.否则返回false + */ + isDate: function (date) { + return "object" === typeof date && date instanceof Date + }, + getDayOfMonth: function (y, m) { + return 32 - new Date(y, m - 1, 32).getDate(); + } + }; + +})(); + +var DateTime = function (ele, options) { + + var picker = {}, currentDate = new Date(); + + var pickerArgs = {}; + pickerArgs.opts = options || DateTime.defaultOpts; + pickerArgs.domHook = ele; + + var render = { + /** + * 创建一个dom节点 + * @param html html内容 + * @returns {Node} dom节点 + */ + _createDomElement: function (html) { + var element = document.createElement("div"); + element.innerHTML = html; + return element.firstChild; + }, + _createWrapContainer: function (height) { + return this._createDomElement('
      ') + }, + _createWrapLine: function (top) { + return this._createDomElement('
      '); + }, + _createWrapItem: function (guid, key, height) { + return this._createDomElement('
      '); + }, + _createItemList: function (itemWidth) { + return this._createDomElement('
        '); + }, + _createItem: function (selected, value, unit) { + if (selected) { + return this._createDomElement('
      • ' + value + ' ' + unit + '
      • '); + } + return this._createDomElement("
      • " + value + " " + unit + "
      • "); + }, + _resetItems: function (itemList) { + var itemWidth = pickerArgs.opts.itemWidth | 80; + + var screenWidth = window.screen.width; + var calculatedWidth = screenWidth / itemList.length; + + if (calculatedWidth < itemWidth) { + itemList.pop(); + return this._resetItems(itemList); + } + return itemList; + }, + _render: function () { + var height = pickerArgs.height; + var lineHeight = pickerArgs.lineHeight; + + var container = this._createWrapContainer(height); + var top = (height / lineHeight - 1) / 2 * lineHeight; + var line = this._createWrapLine(top); + + container.appendChild(line); + LogUtils.log(pickerArgs.itemList); + var itemList = this._resetItems(pickerArgs.itemList); + LogUtils.log(itemList); + var itemWidth = 80, guid = picker.guid; + var renderObj = this; + itemList.forEach(function (key) { + + var item = picker[key]; + LogUtils.log(item); + var wrapItem = renderObj._createWrapItem(guid, key, height); + var domItemList = renderObj._createItemList(itemWidth); + var selectIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + var itemUnit = ComponentDefine.dateLabels[key]; + + domItemList.appendChild(renderObj._createDomElement("
      • ")); + domItemList.appendChild(renderObj._createDomElement("
      • ")); + + item.valueMap.forEach(function (value, index) { + var domItem = renderObj._createItem(selectIndex === index, value, itemUnit); + item.htmlList.push(domItem); + domItemList.appendChild(domItem); + }); + var emptyLiHook = renderObj._createDomElement("
      • "); + item.emptyLiHook = emptyLiHook; + item.listHook = domItemList; + domItemList.appendChild(emptyLiHook); + domItemList.appendChild(renderObj._createDomElement("
      • ")); + + wrapItem.appendChild(domItemList); + container.appendChild(wrapItem); + }); + + + pickerArgs.domHook.innerHTML = ""; + + pickerArgs.domHook.appendChild(container); + + + }, + _init: function (type) { + switch (type) { + case"date": + this._initDateConfig(); + break; + case"time": + this._initTimeConfig(); + break; + case"diy": + this._initDiyConfig(); + break; + case "datetime": + this._initDateTimeConfig(); + break; + } + }, + _getYearConfig: function (year, min, max) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, year - min), + value: year, + oldValue: year, + minValue: min, + maxValue: max, + htmlList: [], + valueMap: ComponentUtils.fillArr(min, max) + }; + }, + _getMonthConfig: function (month) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, month - 1), + value: month, + oldValue: month, + minValue: 1, + maxValue: 12, + htmlList: [], + valueMap: ComponentUtils.fillArr(1, 12) + }; + }, + _getDayConfig: function (day, dayOfMonth) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, day - 1), + value: day, + oldValue: day, + minValue: 1, + maxValue: dayOfMonth, + htmlList: [], + valueMap: ComponentUtils.fillArr(1, dayOfMonth) + }; + }, + _getHourConfig: function (hour) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, hour), + value: hour, + oldValue: hour, + htmlList: [], + valueMap: ComponentUtils.fillArr(0, 23) + }; + }, + _getMinuteConfig: function (minute) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, minute), + value: minute, + oldValue: minute, + htmlList: [], + valueMap: ComponentUtils.fillArr(0, 59) + }; + }, + _getSecondConfig: function (second) { + return { + top: ComponentUtils.getTop(pickerArgs.lineHeight, second), + value: second, + oldValue: second, + htmlList: [], + valueMap: ComponentUtils.fillArr(0, 59) + }; + }, + _getDiyConfig: function (key, value, valueMap) { + var diy = { + key: key, + value: value, + htmlList: [], + valueMap: valueMap + }; + + diy.index = ComponentUtils.getSelectedValueIndex(valueMap, value); + diy.top = ComponentUtils.getTop(pickerArgs.lineHeight, diy.index); + return diy; + }, + _initDateConfig: function () { + var config = pickerArgs.opts; + + var minYear = config.minDate.getFullYear(); + var maxYear = config.maxDate.getFullYear(); + + var date = ComponentUtils.isDate(config.date) ? config.date : currentDate; + + var displayConfig = { + y: DateUtils._y(date), + m: DateUtils._rm(date), + d: DateUtils._d(date) + }; + LogUtils.log(displayConfig); + + pickerArgs.itemList = ["year", "month", "day"]; + + var dayOfMonth = ComponentUtils.getDayOfMonth(displayConfig.y, displayConfig.m); + LogUtils.log("dayOfMonth= " + dayOfMonth); + + pickerArgs.dayOfMonth = dayOfMonth; + picker.year = { + top: ComponentUtils.getTop(pickerArgs.lineHeight, displayConfig.y - minYear), + value: displayConfig.y, + oldValue: displayConfig.y, + minValue: minYear, + maxValue: maxYear, + htmlList: [], + valueMap: ComponentUtils.fillArr(minYear, maxYear) + }; + + picker.month = { + top: ComponentUtils.getTop(pickerArgs.lineHeight, displayConfig.m - 1), + value: displayConfig.m, + oldValue: displayConfig.m, + minValue: 1, + maxValue: 12, + htmlList: [], + valueMap: ComponentUtils.fillArr(1, 12) + }; + + picker.day = { + top: ComponentUtils.getTop(pickerArgs.lineHeight, displayConfig.d - 1), + value: displayConfig.d, + oldValue: displayConfig.d, + minValue: 1, + maxValue: dayOfMonth, + htmlList: [], + valueMap: ComponentUtils.fillArr(1, dayOfMonth) + }; + + }, + _initTimeConfig: function () { + var config = pickerArgs.opts; + + var date = ComponentUtils.isDate(config.date) ? config.date : currentDate; + var displayConfig = { + h: DateUtils._h(date), + i: DateUtils._i(date), + s: DateUtils._s(date) + + }; + LogUtils.log(displayConfig); + + pickerArgs.itemList = ["hour", "minute", "second"]; + + var dayOfMonth = ComponentUtils.getDayOfMonth(displayConfig.y, displayConfig.m); + LogUtils.log("dayOfMonth= " + dayOfMonth); + + pickerArgs.dayOfMonth = dayOfMonth; + picker.hour = this._getHourConfig(displayConfig.h); + picker.minute = this._getMinuteConfig(displayConfig.i); + picker.second = this._getSecondConfig(displayConfig.s); + }, + _initDiyConfig: function () { + var config = pickerArgs.opts; + //数据不为空 + if (config.data) { + pickerArgs.itemList = []; + config.data.forEach(function (dataItem) { + picker[dataItem.key] = render._getDiyConfig(dataItem.key, dataItem.value, dataItem.resource); + ComponentDefine.dateLabels[dataItem.key] = dataItem.unit; + pickerArgs.itemList.push(dataItem.key); + }); + } + }, + _initDateTimeConfig: function () { + var config = pickerArgs.opts; + + var minYear = config.minDate.getFullYear(); + var maxYear = config.maxDate.getFullYear(); + + var date = ComponentUtils.isDate(config.date) ? config.date : currentDate; + + var displayConfig = { + y: DateUtils._y(date), + m: DateUtils._rm(date), + d: DateUtils._d(date), + h: DateUtils._h(date), + i: DateUtils._i(date), + s: DateUtils._s(date) + + }; + LogUtils.log(displayConfig); + + pickerArgs.itemList = ["year", "month", "day", "hour", "minute", "second"]; + + var dayOfMonth = ComponentUtils.getDayOfMonth(displayConfig.y, displayConfig.m); + LogUtils.log("dayOfMonth= " + dayOfMonth); + + pickerArgs.dayOfMonth = dayOfMonth; + picker.year = this._getYearConfig(displayConfig.y, minYear, maxYear); + picker.month = this._getMonthConfig(displayConfig.m); + picker.day = this._getDayConfig(displayConfig.d, dayOfMonth); + picker.hour = this._getHourConfig(displayConfig.h); + picker.minute = this._getMinuteConfig(displayConfig.i); + picker.second = this._getSecondConfig(displayConfig.s); + } + }; + + var valueHolder = { + _getSelectValue: function () { + var valueObject = {}; + + pickerArgs.itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + var top = item.top; + valueObject[key] = item.valueMap[Math.abs(top) / pickerArgs.lineHeight]; + } + + }); + + return valueObject; + } + }; + + var eventBinder = { + _init: function () { + var itemList = pickerArgs.itemList; + var binderObj = this; + itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + binderObj._bindItemEvent(item, key); + } + }) + }, + _destroy: function () { + var itemList = pickerArgs.itemList; + itemList.forEach(function (key) { + var item = picker[key]; + if (item && item.scroller) { + item.scroller.destroy(); + item.scroller = null; + } + }) + }, + _syncValue: function () { + var selectValue = valueHolder._getSelectValue(); + var itemList = pickerArgs.itemList; + itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + item.oldValue = item.value; + item.value = selectValue[key]; + + item.index = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + item.top = ComponentUtils.getTop(pickerArgs.lineHeight, item.index); + } + }); + + }, + _syncStatus: function () { + var itemList = pickerArgs.itemList; + itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + var oldIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.oldValue); + var currentIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + LogUtils.log("old index=" + oldIndex + ";current index=" + currentIndex); + //改变选中状态 + if (oldIndex !== currentIndex) { + item.htmlList[oldIndex].className = "item"; + item.htmlList[currentIndex].className = "item selected"; + } + } + + }); + + }, + _syncScroll: function () { + var itemList = pickerArgs.itemList; + itemList.forEach(function (key) { + var item = picker[key]; + if (item) { + var selectedIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + var _top = ComponentUtils.getTop(pickerArgs.lineHeight, selectedIndex); + item.scroller.scrollToIng = true; + item.scroller.scrollTo(0, _top, 300, IScroll.utils.ease.circular); + } + }); + + }, + _callChangeCallback: function () { + var changeCallback = pickerArgs.opts.onChange; + if (changeCallback && "function" === typeof changeCallback) { + setTimeout(function () { + changeCallback.call(this, valueHolder._getSelectValue()); + }, 0) + } + }, + _fixDayOfMonth: function (syncKey) { + if ("month" === syncKey) { + var selectValue = valueHolder._getSelectValue(); + var dayOfMonth = ComponentUtils.getDayOfMonth(selectValue.year, selectValue.month - 1); + LogUtils.log("day of month = " + dayOfMonth); + var currentDayOfMonth = pickerArgs.dayOfMonth; + LogUtils.log("current day of month = " + currentDayOfMonth); + if (currentDayOfMonth !== dayOfMonth) { + var item = picker.day; + item.valueMap = ComponentUtils.fillArr(1, dayOfMonth); + if (dayOfMonth > currentDayOfMonth) { + var selectIndex = ComponentUtils.getSelectedValueIndex(item.valueMap, item.value); + var itemUnit = ComponentDefine.dateLabels["day"]; + + for (var index = currentDayOfMonth; dayOfMonth > index; index++) { + var newItem = render._createItem(selectIndex === index, item.valueMap[index], itemUnit); + item.htmlList.push(newItem); + item.listHook.insertBefore(newItem, item.emptyLiHook); + } + } else if (currentDayOfMonth > dayOfMonth) { + var offset = currentDayOfMonth - dayOfMonth; + for (var count = 0; count < offset; count++) { + item.htmlList.pop().remove(); + } + if (item.value > dayOfMonth) { + item.oldValue = dayOfMonth - 1; + item.value = dayOfMonth; + } + } + + pickerArgs.dayOfMonth = dayOfMonth; + } + picker.day.scroller.refresh(); + } + }, + _bindItemEvent: function (item, key) { + var scroller = this._createScroller(picker.guid, key); + scroller.key = key; + scroller.scrollToIng = true; + scroller.scrollTo(0, item.top, 0, IScroll.utils.ease.circular); + var lineHeight = pickerArgs.lineHeight; + var eventBinderObj = this; + scroller.on("scrollEnd", function () { + var y = this.y; + var offset = Math.round(y / lineHeight); + if (item.top !== y) { + item.top = lineHeight * offset; + + eventBinderObj._syncValue(); + eventBinderObj._fixDayOfMonth(key); + eventBinderObj._syncStatus(); + eventBinderObj._syncScroll(); + eventBinderObj._callChangeCallback(); + + } + }); + item.scroller = scroller; + }, + _createScroller: function (guid, key) { + return new IScroll("#ui-datetime-" + guid + "-ad-" + key, { + bounceEasing: "ease", + bounceTime: 600 + }); + } + }; + + picker.init = function () { + //生成id + picker.guid = ComponentCountProvider.incrementAndGet(); + var opts = pickerArgs.opts; + //如果没有提供高度则默认取200 + pickerArgs.height = opts.height || 200; + pickerArgs.lineHeight = opts.lineHeight || 40; + //判断类型是否支持 + var isSupport = ComponentDefine.validateSupportType(opts.type); + + if (!isSupport) { + LogUtils.error("unSupport type!"); + return; + } + //根据类型初始化组件 + render._init(opts.type); + //渲染html内容 + render._render(); + //绑定事件 + eventBinder._init(); + }; + + /** + * 显示组件 + */ + picker.show = function () { + if (pickerArgs.domHook) { + pickerArgs.domHook.style.display = "block"; + } + }; + + /** + * 隐藏组件 + */ + picker.hide = function () { + if (pickerArgs.domHook) { + pickerArgs.domHook.style.display = "none"; + } + }; + + picker.refreshEventBinder = function () { + eventBinder._destroy(); + eventBinder._init(); + }; + + return picker; + +}; + +/** + * 默认选项 + * @type {{type: string, date: Date, minDate: Date, maxDate: Date, data: *[], onChange: DateTime.defaultOpts.onChange}} + */ +DateTime.defaultOpts = { + type: 'date',//date,time,diy + date: new Date(), + minDate: new Date(), + maxDate: new Date(), + data: [{ + key: 'day', + resource: ["上午", "下午"], + value: "上午", + unit: '' + }, { + key: 'hour', + resource: ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"], + value: "09", + unit: '' + }, { + key: 'minute', + resource: ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10"], + value: "05", + unit: '' + }], + onChange: function (data) { + console.log("call back", data); + } +}; + diff --git a/view/molistar/common/js/datetime.min.js b/view/molistar/common/js/datetime.min.js new file mode 100644 index 00000000..0f5ff8af --- /dev/null +++ b/view/molistar/common/js/datetime.min.js @@ -0,0 +1 @@ +!function(a,b,c){function d(c,d){this.wrapper="string"==typeof c?b.querySelector(c):c,this.scroller=this.wrapper.children[0],this.scrollerStyle=this.scroller.style,this.options={resizeScrollbars:!0,mouseWheelSpeed:20,snapThreshold:.334,disablePointer:!h.hasPointer,disableTouch:h.hasPointer||!h.hasTouch,disableMouse:h.hasPointer||h.hasTouch,startX:0,startY:0,scrollY:!0,directionLockThreshold:5,momentum:!0,bounce:!0,bounceTime:600,bounceEasing:"",preventDefault:!0,preventDefaultException:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT)$/},HWCompositing:!0,useTransition:!0,useTransform:!0,bindToWrapper:void 0===a.onmousedown};for(var e in d)this.options[e]=d[e];this.translateZ=this.options.HWCompositing&&h.hasPerspective?" translateZ(0)":"",this.options.useTransition=h.hasTransition&&this.options.useTransition,this.options.useTransform=h.hasTransform&&this.options.useTransform,this.options.eventPassthrough=!0===this.options.eventPassthrough?"vertical":this.options.eventPassthrough,this.options.preventDefault=!this.options.eventPassthrough&&this.options.preventDefault,this.options.scrollY="vertical"!=this.options.eventPassthrough&&this.options.scrollY,this.options.scrollX="horizontal"!=this.options.eventPassthrough&&this.options.scrollX,this.options.freeScroll=this.options.freeScroll&&!this.options.eventPassthrough,this.options.directionLockThreshold=this.options.eventPassthrough?0:this.options.directionLockThreshold,this.options.bounceEasing="string"==typeof this.options.bounceEasing?h.ease[this.options.bounceEasing]||h.ease.circular:this.options.bounceEasing,this.options.resizePolling=void 0===this.options.resizePolling?60:this.options.resizePolling,!0===this.options.tap&&(this.options.tap="tap"),this.options.useTransition||this.options.useTransform||/relative|absolute/i.test(this.scrollerStyle.position)||(this.scrollerStyle.position="relative"),"scale"==this.options.shrinkScrollbars&&(this.options.useTransition=!1),this.options.invertWheelDirection=this.options.invertWheelDirection?-1:1,this.x=0,this.y=0,this.directionX=0,this.directionY=0,this._events={},this._init(),this.refresh(),this.scrollTo(this.options.startX,this.options.startY),this.enable()}function e(a,c,d){var e=b.createElement("div"),f=b.createElement("div");return!0===d&&(e.style.cssText="position:absolute;z-index:9999",f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px"),f.className="iScrollIndicator","h"==a?(!0===d&&(e.style.cssText+=";height:7px;left:2px;right:2px;bottom:0",f.style.height="100%"),e.className="iScrollHorizontalScrollbar"):(!0===d&&(e.style.cssText+=";width:7px;bottom:2px;top:2px;right:1px",f.style.width="100%"),e.className="iScrollVerticalScrollbar"),e.style.cssText+=";overflow:hidden",c||(e.style.pointerEvents="none"),e.appendChild(f),e}function f(c,d){this.wrapper="string"==typeof d.el?b.querySelector(d.el):d.el,this.wrapperStyle=this.wrapper.style,this.indicator=this.wrapper.children[0],this.indicatorStyle=this.indicator.style,this.scroller=c,this.options={listenX:!0,listenY:!0,interactive:!1,resize:!0,defaultScrollbars:!1,shrink:!1,fade:!1,speedRatioX:0,speedRatioY:0};for(var e in d)this.options[e]=d[e];if(this.sizeRatioX=1,this.sizeRatioY=1,this.maxPosX=0,this.maxPosY=0,this.options.interactive&&(this.options.disableTouch||(h.addEvent(this.indicator,"touchstart",this),h.addEvent(a,"touchend",this)),this.options.disablePointer||(h.addEvent(this.indicator,h.prefixPointerEvent("pointerdown"),this),h.addEvent(a,h.prefixPointerEvent("pointerup"),this)),this.options.disableMouse||(h.addEvent(this.indicator,"mousedown",this),h.addEvent(a,"mouseup",this))),this.options.fade){this.wrapperStyle[h.style.transform]=this.scroller.translateZ;var f=h.style.transitionDuration;if(!f)return;this.wrapperStyle[f]=h.isBadAndroid?"0.0001ms":"0ms";var i=this;h.isBadAndroid&&g(function(){"0.0001ms"===i.wrapperStyle[f]&&(i.wrapperStyle[f]="0s")}),this.wrapperStyle.opacity="0"}}var g=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(b){a.setTimeout(b,1e3/60)},h=function(){function d(a){return!1!==g&&(""===g?a:g+a.charAt(0).toUpperCase()+a.substr(1))}var e={},f=b.createElement("div").style,g=function(){for(var a=["t","webkitT","MozT","msT","OT"],b=0,c=a.length;b0&&(h=f?f/2.5*(k/8):0,j=c.abs(a)+h,i=j/k),{destination:c.round(h),duration:i}};var h=d("transform");return e.extend(e,{hasTransform:!1!==h,hasPerspective:d("perspective")in f,hasTouch:"ontouchstart"in a,hasPointer:!(!a.PointerEvent&&!a.MSPointerEvent),hasTransition:d("transition")in f}),e.isBadAndroid=function(){var b=a.navigator.appVersion;if(/Android/.test(b)&&!/Chrome\/\d/.test(b)){var c=b.match(/Safari\/(\d+.\d)/);return!(c&&"object"==typeof c&&c.length>=2)||parseFloat(c[1])<535.19}return!1}(),e.extend(e.style={},{transform:h,transitionTimingFunction:d("transitionTimingFunction"),transitionDuration:d("transitionDuration"),transitionDelay:d("transitionDelay"),transformOrigin:d("transformOrigin")}),e.hasClass=function(a,b){return new RegExp("(^|\\s)"+b+"(\\s|$)").test(a.className)},e.addClass=function(a,b){if(!e.hasClass(a,b)){var c=a.className.split(" ");c.push(b),a.className=c.join(" ")}},e.removeClass=function(a,b){if(e.hasClass(a,b)){var c=new RegExp("(^|\\s)"+b+"(\\s|$)","g");a.className=a.className.replace(c," ")}},e.offset=function(a){for(var b=-a.offsetLeft,c=-a.offsetTop;a=a.offsetParent;)b-=a.offsetLeft,c-=a.offsetTop;return{left:b,top:c}},e.preventDefaultException=function(a,b){for(var c in b)if(b[c].test(a[c]))return!0;return!1},e.extend(e.eventType={},{touchstart:1,touchmove:1,touchend:1,mousedown:2,mousemove:2,mouseup:2,pointerdown:3,pointermove:3,pointerup:3,MSPointerDown:3,MSPointerMove:3,MSPointerUp:3}),e.extend(e.ease={},{quadratic:{style:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",fn:function(a){return a*(2-a)}},circular:{style:"cubic-bezier(0.1, 0.57, 0.1, 1)",fn:function(a){return c.sqrt(1- --a*a)}},back:{style:"cubic-bezier(0.175, 0.885, 0.32, 1.275)",fn:function(a){var b=4;return(a-=1)*a*((b+1)*a+b)+1}},bounce:{style:"",fn:function(a){return(a/=1)<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}},elastic:{style:"",fn:function(a){var b=.22;return 0===a?0:1==a?1:.4*c.pow(2,-10*a)*c.sin((a-b/4)*(2*c.PI)/b)+1}}}),e.tap=function(a,c){var d=b.createEvent("Event");d.initEvent(c,!0,!0),d.pageX=a.pageX,d.pageY=a.pageY,a.target.dispatchEvent(d)},e.click=function(c){var d,e=c.target;/(SELECT|INPUT|TEXTAREA)/i.test(e.tagName)||(d=b.createEvent(a.MouseEvent?"MouseEvents":"Event"),d.initEvent("click",!0,!0),d.view=c.view||a,d.detail=1,d.screenX=e.screenX||0,d.screenY=e.screenY||0,d.clientX=e.clientX||0,d.clientY=e.clientY||0,d.ctrlKey=!!c.ctrlKey,d.altKey=!!c.altKey,d.shiftKey=!!c.shiftKey,d.metaKey=!!c.metaKey,d.button=0,d.relatedTarget=null,d._constructed=!0,e.dispatchEvent(d))},e}();d.prototype={version:"5.2.0",_init:function(){this._initEvents(),(this.options.scrollbars||this.options.indicators)&&this._initIndicators(),this.options.mouseWheel&&this._initWheel(),this.options.snap&&this._initSnap(),this.options.keyBindings&&this._initKeys()},destroy:function(){this._initEvents(!0),clearTimeout(this.resizeTimeout),this.resizeTimeout=null,this._execEvent("destroy")},_transitionEnd:function(a){a.target==this.scroller&&this.isInTransition&&(this._transitionTime(),this.resetPosition(this.options.bounceTime)||(this.isInTransition=!1,this._execEvent("scrollEnd")))},_start:function(a){if(1!=h.eventType[a.type]){if(0!==(a.which?a.button:a.button<2?0:4==a.button?1:2))return}if(this.enabled&&(!this.initiated||h.eventType[a.type]===this.initiated)){!this.options.preventDefault||h.isBadAndroid||h.preventDefaultException(a.target,this.options.preventDefaultException)||a.preventDefault();var b,d=a.touches?a.touches[0]:a;this.initiated=h.eventType[a.type],this.moved=!1,this.distX=0,this.distY=0,this.directionX=0,this.directionY=0,this.directionLocked=0,this.startTime=h.getTime(),this.options.useTransition&&this.isInTransition?(this._transitionTime(),this.isInTransition=!1,b=this.getComputedPosition(),this._translate(c.round(b.x),c.round(b.y)),this._execEvent("scrollEnd")):!this.options.useTransition&&this.isAnimating&&(this.isAnimating=!1,this._execEvent("scrollEnd")),this.startX=this.x,this.startY=this.y,this.absStartX=this.x,this.absStartY=this.y,this.pointX=d.pageX,this.pointY=d.pageY,this._execEvent("beforeScrollStart")}},_move:function(a){if(this.enabled&&h.eventType[a.type]===this.initiated){this.options.preventDefault&&a.preventDefault();var b,d,e,f,g=a.touches?a.touches[0]:a,i=g.pageX-this.pointX,j=g.pageY-this.pointY,k=h.getTime();if(this.pointX=g.pageX,this.pointY=g.pageY,this.distX+=i,this.distY+=j,e=c.abs(this.distX),f=c.abs(this.distY),!(k-this.endTime>300&&e<10&&f<10)){if(this.directionLocked||this.options.freeScroll||(e>f+this.options.directionLockThreshold?this.directionLocked="h":f>=e+this.options.directionLockThreshold?this.directionLocked="v":this.directionLocked="n"),"h"==this.directionLocked){if("vertical"==this.options.eventPassthrough)a.preventDefault();else if("horizontal"==this.options.eventPassthrough)return void(this.initiated=!1);j=0}else if("v"==this.directionLocked){if("horizontal"==this.options.eventPassthrough)a.preventDefault();else if("vertical"==this.options.eventPassthrough)return void(this.initiated=!1);i=0}i=this.hasHorizontalScroll?i:0,j=this.hasVerticalScroll?j:0,b=this.x+i,d=this.y+j,(b>0||b0?0:this.maxScrollX),(d>0||d0?0:this.maxScrollY),this.directionX=i>0?-1:i<0?1:0,this.directionY=j>0?-1:j<0?1:0,this.moved||this._execEvent("scrollStart"),this.moved=!0,this._translate(b,d),k-this.startTime>300&&(this.startTime=k,this.startX=this.x,this.startY=this.y)}}},_end:function(a){if(this.enabled&&h.eventType[a.type]===this.initiated){this.options.preventDefault&&!h.preventDefaultException(a.target,this.options.preventDefaultException)&&a.preventDefault();var b,d,e=(a.changedTouches&&a.changedTouches[0],h.getTime()-this.startTime),f=c.round(this.x),g=c.round(this.y),i=c.abs(f-this.startX),j=c.abs(g-this.startY),k=0,l="";if(this.isInTransition=0,this.initiated=0,this.endTime=h.getTime(),!this.resetPosition(this.options.bounceTime)){if(this.scrollTo(f,g),!this.moved)return this.options.tap&&h.tap(a,this.options.tap),this.options.click&&h.click(a),void this._execEvent("scrollCancel");if(this._events.flick&&e<200&&i<100&&j<100)return void this._execEvent("flick");if(this.options.momentum&&e<300&&(b=this.hasHorizontalScroll?h.momentum(this.x,this.startX,e,this.maxScrollX,this.options.bounce?this.wrapperWidth:0,this.options.deceleration):{destination:f,duration:0},d=this.hasVerticalScroll?h.momentum(this.y,this.startY,e,this.maxScrollY,this.options.bounce?this.wrapperHeight:0,this.options.deceleration):{destination:g,duration:0},f=b.destination,g=d.destination,k=c.max(b.duration,d.duration),this.isInTransition=1),this.options.snap){var m=this._nearestSnap(f,g);this.currentPage=m,k=this.options.snapSpeed||c.max(c.max(c.min(c.abs(f-m.x),1e3),c.min(c.abs(g-m.y),1e3)),300),f=m.x,g=m.y,this.directionX=0,this.directionY=0,l=this.options.bounceEasing}if(f!=this.x||g!=this.y)return(f>0||f0||g0?b=0:this.x0?c=0:this.y-1&&this._events[a].splice(c,1)}},_execEvent:function(a){if(this._events[a]){var b=0,c=this._events[a].length;if(c)for(;b0;var e=this.options.useTransition&&d.style;!c||e?(e&&(this._transitionTimingFunction(d.style),this._transitionTime(c)),this._translate(a,b)):this._animate(a,b,c,d.fn)},scrollToElement:function(a,b,d,e,f){if(a=a.nodeType?a:this.scroller.querySelector(a)){var g=h.offset(a);g.left-=this.wrapperOffset.left,g.top-=this.wrapperOffset.top,!0===d&&(d=c.round(a.offsetWidth/2-this.wrapper.offsetWidth/2)),!0===e&&(e=c.round(a.offsetHeight/2-this.wrapper.offsetHeight/2)),g.left-=d||0,g.top-=e||0,g.left=g.left>0?0:g.left0?0:g.top0?e--:b<0&&e++,d>0?f--:d<0&&f++,void this.goToPage(e,f);e=this.x+c.round(this.hasHorizontalScroll?b:0),f=this.y+c.round(this.hasVerticalScroll?d:0),this.directionX=b>0?-1:b<0?1:0,this.directionY=d>0?-1:d<0?1:0,e>0?e=0:e0?f=0:f-this.scrollerWidth;){for(this.pages[h]=[],a=0,f=0;f>-this.scrollerHeight;)this.pages[h][a]={x:c.max(j,this.maxScrollX),y:c.max(f,this.maxScrollY),width:k,height:l,cx:j-d,cy:f-e},f-=l,a++;j-=k,h++}else for(g=this.options.snap,a=g.length,b=-1;hthis.maxScrollX&&i++;this.goToPage(this.currentPage.pageX||0,this.currentPage.pageY||0,0),this.options.snapThreshold%1==0?(this.snapThresholdX=this.options.snapThreshold,this.snapThresholdY=this.options.snapThreshold):(this.snapThresholdX=c.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width*this.options.snapThreshold),this.snapThresholdY=c.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height*this.options.snapThreshold))}}),this.on("flick",function(){var a=this.options.snapSpeed||c.max(c.max(c.min(c.abs(this.x-this.startX),1e3),c.min(c.abs(this.y-this.startY),1e3)),300);this.goToPage(this.currentPage.pageX+this.directionX,this.currentPage.pageY+this.directionY,a)})},_nearestSnap:function(a,b){if(!this.pages.length)return{x:0,y:0,pageX:0,pageY:0};var d=0,e=this.pages.length,f=0;if(c.abs(a-this.absStartX)0?a=0:a0?b=0:b=this.pages[d][0].cx){a=this.pages[d][0].x;break}for(e=this.pages[d].length;f=this.pages[0][f].cy){b=this.pages[0][f].y;break}return d==this.currentPage.pageX&&(d+=this.directionX,d<0?d=0:d>=this.pages.length&&(d=this.pages.length-1),a=this.pages[d][0].x),f==this.currentPage.pageY&&(f+=this.directionY,f<0?f=0:f>=this.pages[0].length&&(f=this.pages[0].length-1),b=this.pages[0][f].y),{x:a,y:b,pageX:d,pageY:f}},goToPage:function(a,b,d,e){e=e||this.options.bounceEasing,a>=this.pages.length?a=this.pages.length-1:a<0&&(a=0),b>=this.pages[a].length?b=this.pages[a].length-1:b<0&&(b=0);var f=this.pages[a][b].x,g=this.pages[a][b].y;d=void 0===d?this.options.snapSpeed||c.max(c.max(c.min(c.abs(f-this.x),1e3),c.min(c.abs(g-this.y),1e3)),300):d,this.currentPage={x:f,y:g,pageX:a,pageY:b},this.scrollTo(f,g,d,e)},next:function(a,b){var c=this.currentPage.pageX,d=this.currentPage.pageY;c++,c>=this.pages.length&&this.hasVerticalScroll&&(c=0,d++),this.goToPage(c,d,a,b)},prev:function(a,b){var c=this.currentPage.pageX,d=this.currentPage.pageY;c--,c<0&&this.hasVerticalScroll&&(c=0,d--),this.goToPage(c,d,a,b)},_initKeys:function(b){var c,d={pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40};if("object"==typeof this.options.keyBindings)for(c in this.options.keyBindings)"string"==typeof this.options.keyBindings[c]&&(this.options.keyBindings[c]=this.options.keyBindings[c].toUpperCase().charCodeAt(0));else this.options.keyBindings={};for(c in d)this.options.keyBindings[c]=this.options.keyBindings[c]||d[c];h.addEvent(a,"keydown",this),this.on("destroy",function(){h.removeEvent(a,"keydown",this)})},_key:function(a){if(this.enabled){var b,d=this.options.snap,e=d?this.currentPage.pageX:this.x,f=d?this.currentPage.pageY:this.y,g=h.getTime(),i=this.keyTime||0,j=.25;switch(this.options.useTransition&&this.isInTransition&&(b=this.getComputedPosition(),this._translate(c.round(b.x),c.round(b.y)),this.isInTransition=!1),this.keyAcceleration=g-i<200?c.min(this.keyAcceleration+j,50):0,a.keyCode){case this.options.keyBindings.pageUp:this.hasHorizontalScroll&&!this.hasVerticalScroll?e+=d?1:this.wrapperWidth:f+=d?1:this.wrapperHeight;break;case this.options.keyBindings.pageDown:this.hasHorizontalScroll&&!this.hasVerticalScroll?e-=d?1:this.wrapperWidth:f-=d?1:this.wrapperHeight;break;case this.options.keyBindings.end:e=d?this.pages.length-1:this.maxScrollX,f=d?this.pages[0].length-1:this.maxScrollY;break;case this.options.keyBindings.home:e=0,f=0;break;case this.options.keyBindings.left:e+=d?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.up:f+=d?1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.right:e-=d?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.down:f-=d?1:5+this.keyAcceleration>>0;break;default:return}if(d)return void this.goToPage(e,f);e>0?(e=0,this.keyAcceleration=0):e0?(f=0,this.keyAcceleration=0):f=l)return f.isAnimating=!1,f._translate(a,b),void(f.resetPosition(f.options.bounceTime)||f._execEvent("scrollEnd"));p=(p-k)/c,o=d(p),m=(a-i)*o+i,n=(b-j)*o+j,f._translate(m,n),f.isAnimating&&g(e)}var f=this,i=this.x,j=this.y,k=h.getTime(),l=k+c;this.isAnimating=!0,e()},handleEvent:function(a){switch(a.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(a);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(a);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(a);break;case"orientationchange":case"resize":this._resize();break;case"transitionend":case"webkitTransitionEnd":case"oTransitionEnd":case"MSTransitionEnd":this._transitionEnd(a);break;case"wheel":case"DOMMouseScroll":case"mousewheel":this._wheel(a);break;case"keydown":this._key(a);break;case"click":this.enabled&&!a._constructed&&(a.preventDefault(),a.stopPropagation())}}},f.prototype={handleEvent:function(a){switch(a.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(a);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(a);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(a)}},destroy:function(){this.options.fadeScrollbars&&(clearTimeout(this.fadeTimeout),this.fadeTimeout=null),this.options.interactive&&(h.removeEvent(this.indicator,"touchstart",this),h.removeEvent(this.indicator,h.prefixPointerEvent("pointerdown"),this),h.removeEvent(this.indicator,"mousedown",this),h.removeEvent(a,"touchmove",this),h.removeEvent(a,h.prefixPointerEvent("pointermove"),this),h.removeEvent(a,"mousemove",this),h.removeEvent(a,"touchend",this),h.removeEvent(a,h.prefixPointerEvent("pointerup"),this),h.removeEvent(a,"mouseup",this)),this.options.defaultScrollbars&&this.wrapper.parentNode.removeChild(this.wrapper)},_start:function(b){var c=b.touches?b.touches[0]:b;b.preventDefault(),b.stopPropagation(),this.transitionTime(),this.initiated=!0,this.moved=!1,this.lastPointX=c.pageX,this.lastPointY=c.pageY,this.startTime=h.getTime(),this.options.disableTouch||h.addEvent(a,"touchmove",this),this.options.disablePointer||h.addEvent(a,h.prefixPointerEvent("pointermove"),this),this.options.disableMouse||h.addEvent(a,"mousemove",this),this.scroller._execEvent("beforeScrollStart")},_move:function(a){var b,c,d,e,f=a.touches?a.touches[0]:a;h.getTime();this.moved||this.scroller._execEvent("scrollStart"),this.moved=!0,b=f.pageX-this.lastPointX,this.lastPointX=f.pageX,c=f.pageY-this.lastPointY,this.lastPointY=f.pageY,d=this.x+b,e=this.y+c,this._pos(d,e),a.preventDefault(),a.stopPropagation()},_end:function(b){if(this.initiated){if(this.initiated=!1,b.preventDefault(),b.stopPropagation(),h.removeEvent(a,"touchmove",this),h.removeEvent(a,h.prefixPointerEvent("pointermove"),this),h.removeEvent(a,"mousemove",this),this.scroller.options.snap){var d=this.scroller._nearestSnap(this.scroller.x,this.scroller.y),e=this.options.snapSpeed||c.max(c.max(c.min(c.abs(this.scroller.x-d.x),1e3),c.min(c.abs(this.scroller.y-d.y),1e3)),300);this.scroller.x==d.x&&this.scroller.y==d.y||(this.scroller.directionX=0,this.scroller.directionY=0,this.scroller.currentPage=d,this.scroller.scrollTo(d.x,d.y,e,this.scroller.options.bounceEasing))}this.moved&&this.scroller._execEvent("scrollEnd")}},transitionTime:function(a){a=a||0;var b=h.style.transitionDuration;if(b&&(this.indicatorStyle[b]=a+"ms",!a&&h.isBadAndroid)){this.indicatorStyle[b]="0.0001ms";var c=this;g(function(){"0.0001ms"===c.indicatorStyle[b]&&(c.indicatorStyle[b]="0s")})}},transitionTimingFunction:function(a){this.indicatorStyle[h.style.transitionTimingFunction]=a},refresh:function(){this.transitionTime(),this.options.listenX&&!this.options.listenY?this.indicatorStyle.display=this.scroller.hasHorizontalScroll?"block":"none":this.options.listenY&&!this.options.listenX?this.indicatorStyle.display=this.scroller.hasVerticalScroll?"block":"none":this.indicatorStyle.display=this.scroller.hasHorizontalScroll||this.scroller.hasVerticalScroll?"block":"none",this.scroller.hasHorizontalScroll&&this.scroller.hasVerticalScroll?(h.addClass(this.wrapper,"iScrollBothScrollbars"),h.removeClass(this.wrapper,"iScrollLoneScrollbar"),this.options.defaultScrollbars&&this.options.customStyle&&(this.options.listenX?this.wrapper.style.right="8px":this.wrapper.style.bottom="8px")):(h.removeClass(this.wrapper,"iScrollBothScrollbars"),h.addClass(this.wrapper,"iScrollLoneScrollbar"),this.options.defaultScrollbars&&this.options.customStyle&&(this.options.listenX?this.wrapper.style.right="2px":this.wrapper.style.bottom="2px"));this.wrapper.offsetHeight;this.options.listenX&&(this.wrapperWidth=this.wrapper.clientWidth,this.options.resize?(this.indicatorWidth=c.max(c.round(this.wrapperWidth*this.wrapperWidth/(this.scroller.scrollerWidth||this.wrapperWidth||1)),8),this.indicatorStyle.width=this.indicatorWidth+"px"):this.indicatorWidth=this.indicator.clientWidth,this.maxPosX=this.wrapperWidth-this.indicatorWidth,"clip"==this.options.shrink?(this.minBoundaryX=8-this.indicatorWidth,this.maxBoundaryX=this.wrapperWidth-8):(this.minBoundaryX=0,this.maxBoundaryX=this.maxPosX),this.sizeRatioX=this.options.speedRatioX||this.scroller.maxScrollX&&this.maxPosX/this.scroller.maxScrollX),this.options.listenY&&(this.wrapperHeight=this.wrapper.clientHeight,this.options.resize?(this.indicatorHeight=c.max(c.round(this.wrapperHeight*this.wrapperHeight/(this.scroller.scrollerHeight||this.wrapperHeight||1)),8),this.indicatorStyle.height=this.indicatorHeight+"px"):this.indicatorHeight=this.indicator.clientHeight,this.maxPosY=this.wrapperHeight-this.indicatorHeight,"clip"==this.options.shrink?(this.minBoundaryY=8-this.indicatorHeight,this.maxBoundaryY=this.wrapperHeight-8):(this.minBoundaryY=0,this.maxBoundaryY=this.maxPosY),this.maxPosY=this.wrapperHeight-this.indicatorHeight,this.sizeRatioY=this.options.speedRatioY||this.scroller.maxScrollY&&this.maxPosY/this.scroller.maxScrollY),this.updatePosition()},updatePosition:function(){var a=this.options.listenX&&c.round(this.sizeRatioX*this.scroller.x)||0,b=this.options.listenY&&c.round(this.sizeRatioY*this.scroller.y)||0;this.options.ignoreBoundaries||(athis.maxBoundaryX?"scale"==this.options.shrink?(this.width=c.max(this.indicatorWidth-(a-this.maxPosX),8),this.indicatorStyle.width=this.width+"px",a=this.maxPosX+this.indicatorWidth-this.width):a=this.maxBoundaryX:"scale"==this.options.shrink&&this.width!=this.indicatorWidth&&(this.width=this.indicatorWidth,this.indicatorStyle.width=this.width+"px"),bthis.maxBoundaryY?"scale"==this.options.shrink?(this.height=c.max(this.indicatorHeight-3*(b-this.maxPosY),8),this.indicatorStyle.height=this.height+"px",b=this.maxPosY+this.indicatorHeight-this.height):b=this.maxBoundaryY:"scale"==this.options.shrink&&this.height!=this.indicatorHeight&&(this.height=this.indicatorHeight,this.indicatorStyle.height=this.height+"px")),this.x=a,this.y=b,this.scroller.options.useTransform?this.indicatorStyle[h.style.transform]="translate("+a+"px,"+b+"px)"+this.scroller.translateZ:(this.indicatorStyle.left=a+"px",this.indicatorStyle.top=b+"px")},_pos:function(a,b){a<0?a=0:a>this.maxPosX&&(a=this.maxPosX),b<0?b=0:b>this.maxPosY&&(b=this.maxPosY),a=this.options.listenX?c.round(a/this.sizeRatioX):this.scroller.x,b=this.options.listenY?c.round(b/this.sizeRatioY):this.scroller.y,this.scroller.scrollTo(a,b)},fade:function(a,b){if(!b||this.visible){clearTimeout(this.fadeTimeout),this.fadeTimeout=null;var c=a?250:500,d=a?0:300;a=a?"1":"0",this.wrapperStyle[h.style.transitionDuration]=c+"ms",this.fadeTimeout=setTimeout(function(a){this.wrapperStyle.opacity=a,this.visible=+a}.bind(this,a),d)}}},d.utils=h,"undefined"!=typeof module&&module.exports?module.exports=d:"function"==typeof define&&define.amd?define(function(){return d}):a.IScroll=d}(window,document,Math);var LogUtils=function(){var a=!1;return{log:function(b){a&&console.log(b)},error:function(a){console.error(a)},enable:function(){a=!0},disable:function(){a=!1}}}(),DateUtils=function(){return{_y:function(a){return a.getFullYear()},_m:function(a){return a.getMonth()},_rm:function(a){return a.getMonth()+1},_d:function(a){return a.getDate()},_h:function(a){return a.getHours()},_i:function(a){return a.getMinutes()},_s:function(a){return a.getSeconds()}}}(),ComponentCountProvider=function(){var a=0;return{incrementAndGet:function(){return++a}}}(),ComponentDefine=function(){var a={};return a.dateLabels={year:"年",month:"月",day:"日",hour:"时",minute:"分",second:"秒"},a.presetType=["time","date","datetime","diy"],a.validateSupportType=function(a){var b=!1;return this.presetType.forEach(function(c){c===a&&(b=!0)}),b},a}(),ComponentUtils=function(){return{getSelectedValueIndex:function(a,b){var c=-1;return a.forEach(function(a,d){b===a&&(c=d)}),c},fillArr:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},getTop:function(a,b){return 0-a*b},getDisplayedTime:function(a){return{h:DateUtils._h(a),i:DateUtils._i(a),s:DateUtils._s(a)}},isDate:function(a){return"object"==typeof a&&a instanceof Date},getDayOfMonth:function(a,b){return 32-new Date(a,b-1,32).getDate()}}}(),DateTime=function(a,b){var c={},d=new Date,e={};e.opts=b||DateTime.defaultOpts,e.domHook=a;var f={_createDomElement:function(a){var b=document.createElement("div");return b.innerHTML=a,b.firstChild},_createWrapContainer:function(a){return this._createDomElement('
        ')},_createWrapLine:function(a){return this._createDomElement('
        ')},_createWrapItem:function(a,b,c){return this._createDomElement('
        ')},_createItemList:function(a){return this._createDomElement('
          ')},_createItem:function(a,b,c){return a?this._createDomElement('
        • '+b+" "+c+"
        • "):this._createDomElement("
        • "+b+" "+c+"
        • ")},_resetItems:function(a){var b=80|e.opts.itemWidth;return window.screen.width/a.length")),g.appendChild(j._createDomElement("
        • ")),e.valueMap.forEach(function(a,b){var c=j._createItem(h===b,a,k);e.htmlList.push(c),g.appendChild(c)});var l=j._createDomElement("
        • ");e.emptyLiHook=l,e.listHook=g,g.appendChild(l),g.appendChild(j._createDomElement("
        • ")),f.appendChild(g),d.appendChild(f)}),e.domHook.innerHTML="",e.domHook.appendChild(d)},_init:function(a){switch(a){case"date":this._initDateConfig();break;case"time":this._initTimeConfig();break;case"diy":this._initDiyConfig();break;case"datetime":this._initDateTimeConfig()}},_getYearConfig:function(a,b,c){return{top:ComponentUtils.getTop(e.lineHeight,a-b),value:a,oldValue:a,minValue:b,maxValue:c,htmlList:[],valueMap:ComponentUtils.fillArr(b,c)}},_getMonthConfig:function(a){return{top:ComponentUtils.getTop(e.lineHeight,a-1),value:a,oldValue:a,minValue:1,maxValue:12,htmlList:[],valueMap:ComponentUtils.fillArr(1,12)}},_getDayConfig:function(a,b){return{top:ComponentUtils.getTop(e.lineHeight,a-1),value:a,oldValue:a,minValue:1,maxValue:b,htmlList:[],valueMap:ComponentUtils.fillArr(1,b)}},_getHourConfig:function(a){return{top:ComponentUtils.getTop(e.lineHeight,a),value:a,oldValue:a,htmlList:[],valueMap:ComponentUtils.fillArr(0,23)}},_getMinuteConfig:function(a){return{top:ComponentUtils.getTop(e.lineHeight,a),value:a,oldValue:a,htmlList:[],valueMap:ComponentUtils.fillArr(0,59)}},_getSecondConfig:function(a){return{top:ComponentUtils.getTop(e.lineHeight,a),value:a,oldValue:a,htmlList:[],valueMap:ComponentUtils.fillArr(0,59)}},_getDiyConfig:function(a,b,c){var d={key:a,value:b,htmlList:[],valueMap:c};return d.index=ComponentUtils.getSelectedValueIndex(c,b),d.top=ComponentUtils.getTop(e.lineHeight,d.index),d},_initDateConfig:function(){var a=e.opts,b=a.minDate.getFullYear(),f=a.maxDate.getFullYear(),g=ComponentUtils.isDate(a.date)?a.date:d,h={y:DateUtils._y(g),m:DateUtils._rm(g),d:DateUtils._d(g)};LogUtils.log(h),e.itemList=["year","month","day"];var i=ComponentUtils.getDayOfMonth(h.y,h.m);LogUtils.log("dayOfMonth= "+i),e.dayOfMonth=i,c.year={top:ComponentUtils.getTop(e.lineHeight,h.y-b),value:h.y,oldValue:h.y,minValue:b,maxValue:f,htmlList:[],valueMap:ComponentUtils.fillArr(b,f)},c.month={top:ComponentUtils.getTop(e.lineHeight,h.m-1),value:h.m,oldValue:h.m,minValue:1,maxValue:12,htmlList:[],valueMap:ComponentUtils.fillArr(1,12)},c.day={top:ComponentUtils.getTop(e.lineHeight,h.d-1),value:h.d,oldValue:h.d,minValue:1,maxValue:i,htmlList:[],valueMap:ComponentUtils.fillArr(1,i)}},_initTimeConfig:function(){var a=e.opts,b=ComponentUtils.isDate(a.date)?a.date:d,f={h:DateUtils._h(b),i:DateUtils._i(b),s:DateUtils._s(b)};LogUtils.log(f),e.itemList=["hour","minute","second"];var g=ComponentUtils.getDayOfMonth(f.y,f.m);LogUtils.log("dayOfMonth= "+g),e.dayOfMonth=g,c.hour=this._getHourConfig(f.h),c.minute=this._getMinuteConfig(f.i),c.second=this._getSecondConfig(f.s)},_initDiyConfig:function(){var a=e.opts;a.data&&(e.itemList=[],a.data.forEach(function(a){c[a.key]=f._getDiyConfig(a.key,a.value,a.resource),ComponentDefine.dateLabels[a.key]=a.unit,e.itemList.push(a.key)}))},_initDateTimeConfig:function(){var a=e.opts,b=a.minDate.getFullYear(),f=a.maxDate.getFullYear(),g=ComponentUtils.isDate(a.date)?a.date:d,h={y:DateUtils._y(g),m:DateUtils._rm(g),d:DateUtils._d(g),h:DateUtils._h(g),i:DateUtils._i(g),s:DateUtils._s(g)};LogUtils.log(h),e.itemList=["year","month","day","hour","minute","second"];var i=ComponentUtils.getDayOfMonth(h.y,h.m);LogUtils.log("dayOfMonth= "+i),e.dayOfMonth=i,c.year=this._getYearConfig(h.y,b,f),c.month=this._getMonthConfig(h.m),c.day=this._getDayConfig(h.d,i),c.hour=this._getHourConfig(h.h),c.minute=this._getMinuteConfig(h.i),c.second=this._getSecondConfig(h.s)}},g={_getSelectValue:function(){var a={};return e.itemList.forEach(function(b){var d=c[b];if(d){var f=d.top;a[b]=d.valueMap[Math.abs(f)/e.lineHeight]}}),a}},h={_init:function(){var a=this;e.itemList.forEach(function(b){var d=c[b];d&&a._bindItemEvent(d,b)})},_destroy:function(){e.itemList.forEach(function(a){var b=c[a];b&&b.scroller&&(b.scroller.destroy(),b.scroller=null)})},_syncValue:function(){var a=g._getSelectValue();e.itemList.forEach(function(b){var d=c[b];d&&(d.oldValue=d.value,d.value=a[b],d.index=ComponentUtils.getSelectedValueIndex(d.valueMap,d.value),d.top=ComponentUtils.getTop(e.lineHeight,d.index))})},_syncStatus:function(){e.itemList.forEach(function(a){var b=c[a];if(b){var d=ComponentUtils.getSelectedValueIndex(b.valueMap,b.oldValue),e=ComponentUtils.getSelectedValueIndex(b.valueMap,b.value);LogUtils.log("old index="+d+";current index="+e),d!==e&&(b.htmlList[d].className="item",b.htmlList[e].className="item selected")}})},_syncScroll:function(){e.itemList.forEach(function(a){var b=c[a];if(b){var d=ComponentUtils.getSelectedValueIndex(b.valueMap,b.value),f=ComponentUtils.getTop(e.lineHeight,d);b.scroller.scrollToIng=!0,b.scroller.scrollTo(0,f,300,IScroll.utils.ease.circular)}})},_callChangeCallback:function(){var a=e.opts.onChange;a&&"function"==typeof a&&setTimeout(function(){a.call(this,g._getSelectValue())},0)},_fixDayOfMonth:function(a){if("month"===a){var b=g._getSelectValue(),d=ComponentUtils.getDayOfMonth(b.year,b.month-1);LogUtils.log("day of month = "+d);var h=e.dayOfMonth;if(LogUtils.log("current day of month = "+h),h!==d){var i=c.day;if(i.valueMap=ComponentUtils.fillArr(1,d),d>h)for(var j=ComponentUtils.getSelectedValueIndex(i.valueMap,i.value),k=ComponentDefine.dateLabels.day,l=h;d>l;l++){var m=f._createItem(j===l,i.valueMap[l],k);i.htmlList.push(m),i.listHook.insertBefore(m,i.emptyLiHook)}else if(h>d){for(var n=h-d,o=0;od&&(i.oldValue=d-1,i.value=d)}e.dayOfMonth=d}c.day.scroller.refresh()}},_bindItemEvent:function(a,b){var d=this._createScroller(c.guid,b);d.key=b,d.scrollToIng=!0,d.scrollTo(0,a.top,0,IScroll.utils.ease.circular);var f=e.lineHeight,g=this;d.on("scrollEnd",function(){var c=this.y,d=Math.round(c/f);a.top!==c&&(a.top=f*d,g._syncValue(),g._fixDayOfMonth(b),g._syncStatus(),g._syncScroll(),g._callChangeCallback())}),a.scroller=d},_createScroller:function(a,b){return new IScroll("#ui-datetime-"+a+"-ad-"+b,{bounceEasing:"ease",bounceTime:600})}};return c.init=function(){c.guid=ComponentCountProvider.incrementAndGet();var a=e.opts;if(e.height=a.height||200,e.lineHeight=a.lineHeight||40,!ComponentDefine.validateSupportType(a.type))return void LogUtils.error("unSupport type!");f._init(a.type),f._render(),h._init()},c.show=function(){e.domHook&&(e.domHook.style.display="block")},c.hide=function(){e.domHook&&(e.domHook.style.display="none")},c.refreshEventBinder=function(){h._destroy(),h._init()},c};DateTime.defaultOpts={type:"date",date:new Date,minDate:new Date,maxDate:new Date,data:[{key:"day",resource:["上午","下午"],value:"上午",unit:""},{key:"hour",resource:["01","02","03","04","05","06","07","08","09","10","11","12"],value:"09",unit:""},{key:"minute",resource:["01","02","03","04","05","06","07","08","09","10"],value:"05",unit:""}],onChange:function(a){console.log("call back",a)}}; \ No newline at end of file diff --git a/view/molistar/common/js/flexible.js b/view/molistar/common/js/flexible.js new file mode 100644 index 00000000..8f6f2170 --- /dev/null +++ b/view/molistar/common/js/flexible.js @@ -0,0 +1,109 @@ +;(function(win, lib) { + var doc = win.document; + var docEl = doc.documentElement; + var metaEl = doc.querySelector('meta[name="viewport"]'); + var flexibleEl = doc.querySelector('meta[name="flexible"]'); + var dpr = 0; + var scale = 0; + var tid; + var flexible = lib.flexible || (lib.flexible = {}); + + if (metaEl) { + console.warn('将根据已有的meta标签来设置缩放比例'); + var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/); + if (match) { + scale = parseFloat(match[1]); + dpr = parseInt(1 / scale); + } + } else if (flexibleEl) { + var content = flexibleEl.getAttribute('content'); + if (content) { + var initialDpr = content.match(/initial\-dpr=([\d\.]+)/); + var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/); + if (initialDpr) { + dpr = parseFloat(initialDpr[1]); + scale = parseFloat((1 / dpr).toFixed(2)); + } + if (maximumDpr) { + dpr = parseFloat(maximumDpr[1]); + scale = parseFloat((1 / dpr).toFixed(2)); + } + } + } + if (!dpr && !scale) { + var isAndroid = win.navigator.appVersion.match(/android/gi); + var isIPhone = win.navigator.appVersion.match(/iphone/gi); + var devicePixelRatio = win.devicePixelRatio; + if (isIPhone) { + // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案 + if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) { + dpr = 3; + } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){ + dpr = 2; + } else { + dpr = 1; + } + } else { + // 其他设备下,仍旧使用1倍的方案 + dpr = 1; + } + scale = 1 / dpr; + } + docEl.setAttribute('data-dpr', dpr); + if (!metaEl) { + metaEl = doc.createElement('meta'); + metaEl.setAttribute('name', 'viewport'); + metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no'); + if (docEl.firstElementChild) { + docEl.firstElementChild.appendChild(metaEl); + } else { + var wrap = doc.createElement('div'); + wrap.appendChild(metaEl); + doc.write(wrap.innerHTML); + } + } + function refreshRem(){ + var width = docEl.getBoundingClientRect().width; + if (width / dpr > 540) { + width = 540 * dpr; + } + var rem = width / 10; + docEl.style.fontSize = rem + 'px'; + flexible.rem = win.rem = rem; + } + win.addEventListener('resize', function() { + clearTimeout(tid); + tid = setTimeout(refreshRem, 300); + }, false); + win.addEventListener('pageshow', function(e) { + if (e.persisted) { + clearTimeout(tid); + tid = setTimeout(refreshRem, 300); + } + }, false); + if (doc.readyState === 'complete') { + doc.body.style.fontSize = 12 * dpr + 'px'; + } else { + doc.addEventListener('DOMContentLoaded', function(e) { + doc.body.style.fontSize = 12 * dpr + 'px'; + }, false); + } + + refreshRem(); + flexible.dpr = win.dpr = dpr; + flexible.refreshRem = refreshRem; + flexible.rem2px = function(d) { + var val = parseFloat(d) * this.rem; + if (typeof d === 'string' && d.match(/rem$/)) { + val += 'px'; + } + return val; + } + flexible.px2rem = function(d) { + var val = parseFloat(d) / this.rem; + if (typeof d === 'string' && d.match(/px$/)) { + val += 'rem'; + } + return val; + } +})(window, window['lib'] || (window['lib'] = {})); diff --git a/view/molistar/common/js/iscroll-probe.js b/view/molistar/common/js/iscroll-probe.js new file mode 100644 index 00000000..68e9e43a --- /dev/null +++ b/view/molistar/common/js/iscroll-probe.js @@ -0,0 +1,2197 @@ +/*! iScroll v5.2.0-snapshot ~ (c) 2008-2017 Matteo Spinelli ~ http://cubiq.org/license */ +(function (window, document, Math) { +var rAF = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function (callback) { window.setTimeout(callback, 1000 / 60); }; + +var utils = (function () { + var me = {}; + + var _elementStyle = document.createElement('div').style; + var _vendor = (function () { + var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], + transform, + i = 0, + l = vendors.length; + + for ( ; i < l; i++ ) { + transform = vendors[i] + 'ransform'; + if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); + } + + return false; + })(); + + function _prefixStyle (style) { + if ( _vendor === false ) return false; + if ( _vendor === '' ) return style; + return _vendor + style.charAt(0).toUpperCase() + style.substr(1); + } + + me.getTime = Date.now || function getTime () { return new Date().getTime(); }; + + me.extend = function (target, obj) { + for ( var i in obj ) { + target[i] = obj[i]; + } + }; + + me.addEvent = function (el, type, fn, capture) { + el.addEventListener(type, fn, !!capture); + }; + + me.removeEvent = function (el, type, fn, capture) { + el.removeEventListener(type, fn, !!capture); + }; + + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): + pointerEvent; + }; + + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { + var distance = current - start, + speed = Math.abs(distance) / time, + destination, + duration; + + deceleration = deceleration === undefined ? 0.0006 : deceleration; + + destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); + duration = speed / deceleration; + + if ( destination < lowerMargin ) { + destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; + distance = Math.abs(destination - current); + duration = distance / speed; + } else if ( destination > 0 ) { + destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; + distance = Math.abs(current) + destination; + duration = distance / speed; + } + + return { + destination: Math.round(destination), + duration: duration + }; + }; + + var _transform = _prefixStyle('transform'); + + me.extend(me, { + hasTransform: _transform !== false, + hasPerspective: _prefixStyle('perspective') in _elementStyle, + hasTouch: 'ontouchstart' in window, + hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed + hasTransition: _prefixStyle('transition') in _elementStyle + }); + + /* + This should find all Android browsers lower than build 535.19 (both stock browser and webview) + - galaxy S2 is ok + - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` + - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S3 is badAndroid (stock brower, webview) + `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S4 is badAndroid (stock brower, webview) + `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S5 is OK + `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` + - galaxy S6 is OK + `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` + */ + me.isBadAndroid = (function() { + var appVersion = window.navigator.appVersion; + // Android browser is not a chrome browser. + if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { + var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); + if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { + return parseFloat(safariVersion[1]) < 535.19; + } else { + return true; + } + } else { + return false; + } + })(); + + me.extend(me.style = {}, { + transform: _transform, + transitionTimingFunction: _prefixStyle('transitionTimingFunction'), + transitionDuration: _prefixStyle('transitionDuration'), + transitionDelay: _prefixStyle('transitionDelay'), + transformOrigin: _prefixStyle('transformOrigin'), + touchAction: _prefixStyle('touchAction') + }); + + me.hasClass = function (e, c) { + var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); + return re.test(e.className); + }; + + me.addClass = function (e, c) { + if ( me.hasClass(e, c) ) { + return; + } + + var newclass = e.className.split(' '); + newclass.push(c); + e.className = newclass.join(' '); + }; + + me.removeClass = function (e, c) { + if ( !me.hasClass(e, c) ) { + return; + } + + var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); + e.className = e.className.replace(re, ' '); + }; + + me.offset = function (el) { + var left = -el.offsetLeft, + top = -el.offsetTop; + + // jshint -W084 + while (el = el.offsetParent) { + left -= el.offsetLeft; + top -= el.offsetTop; + } + // jshint +W084 + + return { + left: left, + top: top + }; + }; + + me.preventDefaultException = function (el, exceptions) { + for ( var i in exceptions ) { + if ( exceptions[i].test(el[i]) ) { + return true; + } + } + + return false; + }; + + me.extend(me.eventType = {}, { + touchstart: 1, + touchmove: 1, + touchend: 1, + + mousedown: 2, + mousemove: 2, + mouseup: 2, + + pointerdown: 3, + pointermove: 3, + pointerup: 3, + + MSPointerDown: 3, + MSPointerMove: 3, + MSPointerUp: 3 + }); + + me.extend(me.ease = {}, { + quadratic: { + style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', + fn: function (k) { + return k * ( 2 - k ); + } + }, + circular: { + style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) + fn: function (k) { + return Math.sqrt( 1 - ( --k * k ) ); + } + }, + back: { + style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', + fn: function (k) { + var b = 4; + return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; + } + }, + bounce: { + style: '', + fn: function (k) { + if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { + return 7.5625 * k * k; + } else if ( k < ( 2 / 2.75 ) ) { + return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; + } else if ( k < ( 2.5 / 2.75 ) ) { + return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; + } else { + return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; + } + } + }, + elastic: { + style: '', + fn: function (k) { + var f = 0.22, + e = 0.4; + + if ( k === 0 ) { return 0; } + if ( k == 1 ) { return 1; } + + return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); + } + } + }); + + me.tap = function (e, eventName) { + var ev = document.createEvent('Event'); + ev.initEvent(eventName, true, true); + ev.pageX = e.pageX; + ev.pageY = e.pageY; + e.target.dispatchEvent(ev); + }; + + me.click = function (e) { + var target = e.target, + ev; + + if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { + // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent + // initMouseEvent is deprecated. + ev = document.createEvent(window.MouseEvent ? 'MouseEvents' : 'Event'); + ev.initEvent('click', true, true); + ev.view = e.view || window; + ev.detail = 1; + ev.screenX = target.screenX || 0; + ev.screenY = target.screenY || 0; + ev.clientX = target.clientX || 0; + ev.clientY = target.clientY || 0; + ev.ctrlKey = !!e.ctrlKey; + ev.altKey = !!e.altKey; + ev.shiftKey = !!e.shiftKey; + ev.metaKey = !!e.metaKey; + ev.button = 0; + ev.relatedTarget = null; + ev._constructed = true; + target.dispatchEvent(ev); + } + }; + + me.getTouchAction = function(eventPassthrough, addPinch) { + var touchAction = 'none'; + if ( eventPassthrough === 'vertical' ) { + touchAction = 'pan-y'; + } else if (eventPassthrough === 'horizontal' ) { + touchAction = 'pan-x'; + } + if (addPinch && touchAction != 'none') { + // add pinch-zoom support if the browser supports it, but if not (eg. Chrome <55) do nothing + touchAction += ' pinch-zoom'; + } + return touchAction; + }; + + me.getRect = function(el) { + if (el instanceof SVGElement) { + var rect = el.getBoundingClientRect(); + return { + top : rect.top, + left : rect.left, + width : rect.width, + height : rect.height + }; + } else { + return { + top : el.offsetTop, + left : el.offsetLeft, + width : el.offsetWidth, + height : el.offsetHeight + }; + } + }; + + return me; +})(); +function IScroll (el, options) { + this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; + this.scroller = this.wrapper.children[0]; + this.scrollerStyle = this.scroller.style; // cache style for better performance + + this.options = { + + resizeScrollbars: true, + + mouseWheelSpeed: 20, + + snapThreshold: 0.334, + +// INSERT POINT: OPTIONS + disablePointer : !utils.hasPointer, + disableTouch : utils.hasPointer || !utils.hasTouch, + disableMouse : utils.hasPointer || utils.hasTouch, + startX: 0, + startY: 0, + scrollY: true, + directionLockThreshold: 5, + momentum: true, + + bounce: true, + bounceTime: 600, + bounceEasing: '', + + preventDefault: true, + preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, + + HWCompositing: true, + useTransition: true, + useTransform: true, + bindToWrapper: typeof window.onmousedown === "undefined" + }; + + for ( var i in options ) { + this.options[i] = options[i]; + } + + // Normalize options + this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; + + this.options.useTransition = utils.hasTransition && this.options.useTransition; + this.options.useTransform = utils.hasTransform && this.options.useTransform; + + this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; + this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; + + // If you want eventPassthrough I have to lock one of the axes + this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; + this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; + + // With eventPassthrough we also need lockDirection mechanism + this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; + this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; + + this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; + + this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; + + if ( this.options.tap === true ) { + this.options.tap = 'tap'; + } + + // https://github.com/cubiq/iscroll/issues/1029 + if (!this.options.useTransition && !this.options.useTransform) { + if(!(/relative|absolute/i).test(this.scrollerStyle.position)) { + this.scrollerStyle.position = "relative"; + } + } + + if ( this.options.shrinkScrollbars == 'scale' ) { + this.options.useTransition = false; + } + + this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; + + if ( this.options.probeType == 3 ) { + this.options.useTransition = false; } + +// INSERT POINT: NORMALIZATION + + // Some defaults + this.x = 0; + this.y = 0; + this.directionX = 0; + this.directionY = 0; + this._events = {}; + +// INSERT POINT: DEFAULTS + + this._init(); + this.refresh(); + + this.scrollTo(this.options.startX, this.options.startY); + this.enable(); +} + +IScroll.prototype = { + version: '5.2.0-snapshot', + + _init: function () { + this._initEvents(); + + if ( this.options.scrollbars || this.options.indicators ) { + this._initIndicators(); + } + + if ( this.options.mouseWheel ) { + this._initWheel(); + } + + if ( this.options.snap ) { + this._initSnap(); + } + + if ( this.options.keyBindings ) { + this._initKeys(); + } + +// INSERT POINT: _init + + }, + + destroy: function () { + this._initEvents(true); + clearTimeout(this.resizeTimeout); + this.resizeTimeout = null; + this._execEvent('destroy'); + }, + + _transitionEnd: function (e) { + if ( e.target != this.scroller || !this.isInTransition ) { + return; + } + + this._transitionTime(); + if ( !this.resetPosition(this.options.bounceTime) ) { + this.isInTransition = false; + this._execEvent('scrollEnd'); + } + }, + + _start: function (e) { + // React to left mouse button only + if ( utils.eventType[e.type] != 1 ) { + // for button property + // http://unixpapa.com/js/mouse.html + var button; + if (!e.which) { + /* IE case */ + button = (e.button < 2) ? 0 : + ((e.button == 4) ? 1 : 2); + } else { + /* All others */ + button = e.button; + } + if ( button !== 0 ) { + return; + } + } + + if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { + return; + } + + if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { + e.preventDefault(); + } + + var point = e.touches ? e.touches[0] : e, + pos; + + this.initiated = utils.eventType[e.type]; + this.moved = false; + this.distX = 0; + this.distY = 0; + this.directionX = 0; + this.directionY = 0; + this.directionLocked = 0; + + this.startTime = utils.getTime(); + + if ( this.options.useTransition && this.isInTransition ) { + this._transitionTime(); + this.isInTransition = false; + pos = this.getComputedPosition(); + this._translate(Math.round(pos.x), Math.round(pos.y)); + this._execEvent('scrollEnd'); + } else if ( !this.options.useTransition && this.isAnimating ) { + this.isAnimating = false; + this._execEvent('scrollEnd'); + } + + this.startX = this.x; + this.startY = this.y; + this.absStartX = this.x; + this.absStartY = this.y; + this.pointX = point.pageX; + this.pointY = point.pageY; + + this._execEvent('beforeScrollStart'); + }, + + _move: function (e) { + if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { + return; + } + + if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! + e.preventDefault(); + } + + var point = e.touches ? e.touches[0] : e, + deltaX = point.pageX - this.pointX, + deltaY = point.pageY - this.pointY, + timestamp = utils.getTime(), + newX, newY, + absDistX, absDistY; + + this.pointX = point.pageX; + this.pointY = point.pageY; + + this.distX += deltaX; + this.distY += deltaY; + absDistX = Math.abs(this.distX); + absDistY = Math.abs(this.distY); + + // We need to move at least 10 pixels for the scrolling to initiate + if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { + return; + } + + // If you are scrolling in one direction lock the other + if ( !this.directionLocked && !this.options.freeScroll ) { + if ( absDistX > absDistY + this.options.directionLockThreshold ) { + this.directionLocked = 'h'; // lock horizontally + } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { + this.directionLocked = 'v'; // lock vertically + } else { + this.directionLocked = 'n'; // no lock + } + } + + if ( this.directionLocked == 'h' ) { + if ( this.options.eventPassthrough == 'vertical' ) { + e.preventDefault(); + } else if ( this.options.eventPassthrough == 'horizontal' ) { + this.initiated = false; + return; + } + + deltaY = 0; + } else if ( this.directionLocked == 'v' ) { + if ( this.options.eventPassthrough == 'horizontal' ) { + e.preventDefault(); + } else if ( this.options.eventPassthrough == 'vertical' ) { + this.initiated = false; + return; + } + + deltaX = 0; + } + + deltaX = this.hasHorizontalScroll ? deltaX : 0; + deltaY = this.hasVerticalScroll ? deltaY : 0; + + newX = this.x + deltaX; + newY = this.y + deltaY; + + // Slow down if outside of the boundaries + if ( newX > 0 || newX < this.maxScrollX ) { + newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; + } + if ( newY > 0 || newY < this.maxScrollY ) { + newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; + } + + this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; + this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; + + if ( !this.moved ) { + this._execEvent('scrollStart'); + } + + this.moved = true; + + this._translate(newX, newY); + +/* REPLACE START: _move */ + if ( timestamp - this.startTime > 300 ) { + this.startTime = timestamp; + this.startX = this.x; + this.startY = this.y; + + if ( this.options.probeType == 1 ) { + this._execEvent('scroll'); + } + } + + if ( this.options.probeType > 1 ) { + this._execEvent('scroll'); + } +/* REPLACE END: _move */ + + }, + + _end: function (e) { + if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { + return; + } + + if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { + e.preventDefault(); + } + + var point = e.changedTouches ? e.changedTouches[0] : e, + momentumX, + momentumY, + duration = utils.getTime() - this.startTime, + newX = Math.round(this.x), + newY = Math.round(this.y), + distanceX = Math.abs(newX - this.startX), + distanceY = Math.abs(newY - this.startY), + time = 0, + easing = ''; + + this.isInTransition = 0; + this.initiated = 0; + this.endTime = utils.getTime(); + + // reset if we are outside of the boundaries + if ( this.resetPosition(this.options.bounceTime) ) { + return; + } + + this.scrollTo(newX, newY); // ensures that the last position is rounded + + // we scrolled less than 10 pixels + if ( !this.moved ) { + if ( this.options.tap ) { + utils.tap(e, this.options.tap); + } + + if ( this.options.click ) { + utils.click(e); + } + + this._execEvent('scrollCancel'); + return; + } + + if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { + this._execEvent('flick'); + return; + } + + // start momentum animation if needed + if ( this.options.momentum && duration < 300 ) { + momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; + momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; + newX = momentumX.destination; + newY = momentumY.destination; + time = Math.max(momentumX.duration, momentumY.duration); + this.isInTransition = 1; + } + + + if ( this.options.snap ) { + var snap = this._nearestSnap(newX, newY); + this.currentPage = snap; + time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(newX - snap.x), 1000), + Math.min(Math.abs(newY - snap.y), 1000) + ), 300); + newX = snap.x; + newY = snap.y; + + this.directionX = 0; + this.directionY = 0; + easing = this.options.bounceEasing; + } + +// INSERT POINT: _end + + if ( newX != this.x || newY != this.y ) { + // change easing function when scroller goes out of the boundaries + if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { + easing = utils.ease.quadratic; + } + + this.scrollTo(newX, newY, time, easing); + return; + } + + this._execEvent('scrollEnd'); + }, + + _resize: function () { + var that = this; + + clearTimeout(this.resizeTimeout); + + this.resizeTimeout = setTimeout(function () { + that.refresh(); + }, this.options.resizePolling); + }, + + resetPosition: function (time) { + var x = this.x, + y = this.y; + + time = time || 0; + + if ( !this.hasHorizontalScroll || this.x > 0 ) { + x = 0; + } else if ( this.x < this.maxScrollX ) { + x = this.maxScrollX; + } + + if ( !this.hasVerticalScroll || this.y > 0 ) { + y = 0; + } else if ( this.y < this.maxScrollY ) { + y = this.maxScrollY; + } + + if ( x == this.x && y == this.y ) { + return false; + } + + this.scrollTo(x, y, time, this.options.bounceEasing); + + return true; + }, + + disable: function () { + this.enabled = false; + }, + + enable: function () { + this.enabled = true; + }, + + refresh: function () { + utils.getRect(this.wrapper); // Force reflow + + this.wrapperWidth = this.wrapper.clientWidth; + this.wrapperHeight = this.wrapper.clientHeight; + + var rect = utils.getRect(this.scroller); +/* REPLACE START: refresh */ + + this.scrollerWidth = rect.width; + this.scrollerHeight = rect.height; + + this.maxScrollX = this.wrapperWidth - this.scrollerWidth; + this.maxScrollY = this.wrapperHeight - this.scrollerHeight; + +/* REPLACE END: refresh */ + + this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; + this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; + + if ( !this.hasHorizontalScroll ) { + this.maxScrollX = 0; + this.scrollerWidth = this.wrapperWidth; + } + + if ( !this.hasVerticalScroll ) { + this.maxScrollY = 0; + this.scrollerHeight = this.wrapperHeight; + } + + this.endTime = 0; + this.directionX = 0; + this.directionY = 0; + + if(utils.hasPointer && !this.options.disablePointer) { + // The wrapper should have `touchAction` property for using pointerEvent. + this.wrapper.style[utils.style.touchAction] = utils.getTouchAction(this.options.eventPassthrough, true); + + // case. not support 'pinch-zoom' + // https://github.com/cubiq/iscroll/issues/1118#issuecomment-270057583 + if (!this.wrapper.style[utils.style.touchAction]) { + this.wrapper.style[utils.style.touchAction] = utils.getTouchAction(this.options.eventPassthrough, false); + } + } + this.wrapperOffset = utils.offset(this.wrapper); + + this._execEvent('refresh'); + + this.resetPosition(); + +// INSERT POINT: _refresh + + }, + + on: function (type, fn) { + if ( !this._events[type] ) { + this._events[type] = []; + } + + this._events[type].push(fn); + }, + + off: function (type, fn) { + if ( !this._events[type] ) { + return; + } + + var index = this._events[type].indexOf(fn); + + if ( index > -1 ) { + this._events[type].splice(index, 1); + } + }, + + _execEvent: function (type) { + if ( !this._events[type] ) { + return; + } + + var i = 0, + l = this._events[type].length; + + if ( !l ) { + return; + } + + for ( ; i < l; i++ ) { + this._events[type][i].apply(this, [].slice.call(arguments, 1)); + } + }, + + scrollBy: function (x, y, time, easing) { + x = this.x + x; + y = this.y + y; + time = time || 0; + + this.scrollTo(x, y, time, easing); + }, + + scrollTo: function (x, y, time, easing) { + easing = easing || utils.ease.circular; + + this.isInTransition = this.options.useTransition && time > 0; + var transitionType = this.options.useTransition && easing.style; + if ( !time || transitionType ) { + if(transitionType) { + this._transitionTimingFunction(easing.style); + this._transitionTime(time); + } + this._translate(x, y); + } else { + this._animate(x, y, time, easing.fn); + } + }, + + scrollToElement: function (el, time, offsetX, offsetY, easing) { + el = el.nodeType ? el : this.scroller.querySelector(el); + + if ( !el ) { + return; + } + + var pos = utils.offset(el); + + pos.left -= this.wrapperOffset.left; + pos.top -= this.wrapperOffset.top; + + // if offsetX/Y are true we center the element to the screen + var elRect = utils.getRect(el); + var wrapperRect = utils.getRect(this.wrapper); + if ( offsetX === true ) { + offsetX = Math.round(elRect.width / 2 - wrapperRect.width / 2); + } + if ( offsetY === true ) { + offsetY = Math.round(elRect.height / 2 - wrapperRect.height / 2); + } + + pos.left -= offsetX || 0; + pos.top -= offsetY || 0; + + pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; + pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; + + time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; + + this.scrollTo(pos.left, pos.top, time, easing); + }, + + _transitionTime: function (time) { + if (!this.options.useTransition) { + return; + } + time = time || 0; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + + this.scrollerStyle[durationProp] = time + 'ms'; + + if ( !time && utils.isBadAndroid ) { + this.scrollerStyle[durationProp] = '0.0001ms'; + // remove 0.0001ms + var self = this; + rAF(function() { + if(self.scrollerStyle[durationProp] === '0.0001ms') { + self.scrollerStyle[durationProp] = '0s'; + } + }); + } + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].transitionTime(time); + } + } + + +// INSERT POINT: _transitionTime + + }, + + _transitionTimingFunction: function (easing) { + this.scrollerStyle[utils.style.transitionTimingFunction] = easing; + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].transitionTimingFunction(easing); + } + } + + +// INSERT POINT: _transitionTimingFunction + + }, + + _translate: function (x, y) { + if ( this.options.useTransform ) { + +/* REPLACE START: _translate */ + + this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ; + +/* REPLACE END: _translate */ + + } else { + x = Math.round(x); + y = Math.round(y); + this.scrollerStyle.left = x + 'px'; + this.scrollerStyle.top = y + 'px'; + } + + this.x = x; + this.y = y; + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].updatePosition(); + } + } + + +// INSERT POINT: _translate + + }, + + _initEvents: function (remove) { + var eventType = remove ? utils.removeEvent : utils.addEvent, + target = this.options.bindToWrapper ? this.wrapper : window; + + eventType(window, 'orientationchange', this); + eventType(window, 'resize', this); + + if ( this.options.click ) { + eventType(this.wrapper, 'click', this, true); + } + + if ( !this.options.disableMouse ) { + eventType(this.wrapper, 'mousedown', this); + eventType(target, 'mousemove', this); + eventType(target, 'mousecancel', this); + eventType(target, 'mouseup', this); + } + + if ( utils.hasPointer && !this.options.disablePointer ) { + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); + } + + if ( utils.hasTouch && !this.options.disableTouch ) { + eventType(this.wrapper, 'touchstart', this); + eventType(target, 'touchmove', this); + eventType(target, 'touchcancel', this); + eventType(target, 'touchend', this); + } + + eventType(this.scroller, 'transitionend', this); + eventType(this.scroller, 'webkitTransitionEnd', this); + eventType(this.scroller, 'oTransitionEnd', this); + eventType(this.scroller, 'MSTransitionEnd', this); + }, + + getComputedPosition: function () { + var matrix = window.getComputedStyle(this.scroller, null), + x, y; + + if ( this.options.useTransform ) { + matrix = matrix[utils.style.transform].split(')')[0].split(', '); + x = +(matrix[12] || matrix[4]); + y = +(matrix[13] || matrix[5]); + } else { + x = +matrix.left.replace(/[^-\d.]/g, ''); + y = +matrix.top.replace(/[^-\d.]/g, ''); + } + + return { x: x, y: y }; + }, + _initIndicators: function () { + var interactive = this.options.interactiveScrollbars, + customStyle = typeof this.options.scrollbars != 'string', + indicators = [], + indicator; + + var that = this; + + this.indicators = []; + + if ( this.options.scrollbars ) { + // Vertical scrollbar + if ( this.options.scrollY ) { + indicator = { + el: createDefaultScrollbar('v', interactive, this.options.scrollbars), + interactive: interactive, + defaultScrollbars: true, + customStyle: customStyle, + resize: this.options.resizeScrollbars, + shrink: this.options.shrinkScrollbars, + fade: this.options.fadeScrollbars, + listenX: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + + // Horizontal scrollbar + if ( this.options.scrollX ) { + indicator = { + el: createDefaultScrollbar('h', interactive, this.options.scrollbars), + interactive: interactive, + defaultScrollbars: true, + customStyle: customStyle, + resize: this.options.resizeScrollbars, + shrink: this.options.shrinkScrollbars, + fade: this.options.fadeScrollbars, + listenY: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + } + + if ( this.options.indicators ) { + // TODO: check concat compatibility + indicators = indicators.concat(this.options.indicators); + } + + for ( var i = indicators.length; i--; ) { + this.indicators.push( new Indicator(this, indicators[i]) ); + } + + // TODO: check if we can use array.map (wide compatibility and performance issues) + function _indicatorsMap (fn) { + if (that.indicators) { + for ( var i = that.indicators.length; i--; ) { + fn.call(that.indicators[i]); + } + } + } + + if ( this.options.fadeScrollbars ) { + this.on('scrollEnd', function () { + _indicatorsMap(function () { + this.fade(); + }); + }); + + this.on('scrollCancel', function () { + _indicatorsMap(function () { + this.fade(); + }); + }); + + this.on('scrollStart', function () { + _indicatorsMap(function () { + this.fade(1); + }); + }); + + this.on('beforeScrollStart', function () { + _indicatorsMap(function () { + this.fade(1, true); + }); + }); + } + + + this.on('refresh', function () { + _indicatorsMap(function () { + this.refresh(); + }); + }); + + this.on('destroy', function () { + _indicatorsMap(function () { + this.destroy(); + }); + + delete this.indicators; + }); + }, + + _initWheel: function () { + utils.addEvent(this.wrapper, 'wheel', this); + utils.addEvent(this.wrapper, 'mousewheel', this); + utils.addEvent(this.wrapper, 'DOMMouseScroll', this); + + this.on('destroy', function () { + clearTimeout(this.wheelTimeout); + this.wheelTimeout = null; + utils.removeEvent(this.wrapper, 'wheel', this); + utils.removeEvent(this.wrapper, 'mousewheel', this); + utils.removeEvent(this.wrapper, 'DOMMouseScroll', this); + }); + }, + + _wheel: function (e) { + if ( !this.enabled ) { + return; + } + + e.preventDefault(); + + var wheelDeltaX, wheelDeltaY, + newX, newY, + that = this; + + if ( this.wheelTimeout === undefined ) { + that._execEvent('scrollStart'); + } + + // Execute the scrollEnd event after 400ms the wheel stopped scrolling + clearTimeout(this.wheelTimeout); + this.wheelTimeout = setTimeout(function () { + if(!that.options.snap) { + that._execEvent('scrollEnd'); + } + that.wheelTimeout = undefined; + }, 400); + + if ( 'deltaX' in e ) { + if (e.deltaMode === 1) { + wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed; + wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed; + } else { + wheelDeltaX = -e.deltaX; + wheelDeltaY = -e.deltaY; + } + } else if ( 'wheelDeltaX' in e ) { + wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed; + wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed; + } else if ( 'wheelDelta' in e ) { + wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed; + } else if ( 'detail' in e ) { + wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed; + } else { + return; + } + + wheelDeltaX *= this.options.invertWheelDirection; + wheelDeltaY *= this.options.invertWheelDirection; + + if ( !this.hasVerticalScroll ) { + wheelDeltaX = wheelDeltaY; + wheelDeltaY = 0; + } + + if ( this.options.snap ) { + newX = this.currentPage.pageX; + newY = this.currentPage.pageY; + + if ( wheelDeltaX > 0 ) { + newX--; + } else if ( wheelDeltaX < 0 ) { + newX++; + } + + if ( wheelDeltaY > 0 ) { + newY--; + } else if ( wheelDeltaY < 0 ) { + newY++; + } + + this.goToPage(newX, newY); + + return; + } + + newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0); + newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0); + + this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0; + this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0; + + if ( newX > 0 ) { + newX = 0; + } else if ( newX < this.maxScrollX ) { + newX = this.maxScrollX; + } + + if ( newY > 0 ) { + newY = 0; + } else if ( newY < this.maxScrollY ) { + newY = this.maxScrollY; + } + + this.scrollTo(newX, newY, 0); + + if ( this.options.probeType > 1 ) { + this._execEvent('scroll'); + } + +// INSERT POINT: _wheel + }, + + _initSnap: function () { + this.currentPage = {}; + + if ( typeof this.options.snap == 'string' ) { + this.options.snap = this.scroller.querySelectorAll(this.options.snap); + } + + this.on('refresh', function () { + var i = 0, l, + m = 0, n, + cx, cy, + x = 0, y, + stepX = this.options.snapStepX || this.wrapperWidth, + stepY = this.options.snapStepY || this.wrapperHeight, + el, + rect; + + this.pages = []; + + if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) { + return; + } + + if ( this.options.snap === true ) { + cx = Math.round( stepX / 2 ); + cy = Math.round( stepY / 2 ); + + while ( x > -this.scrollerWidth ) { + this.pages[i] = []; + l = 0; + y = 0; + + while ( y > -this.scrollerHeight ) { + this.pages[i][l] = { + x: Math.max(x, this.maxScrollX), + y: Math.max(y, this.maxScrollY), + width: stepX, + height: stepY, + cx: x - cx, + cy: y - cy + }; + + y -= stepY; + l++; + } + + x -= stepX; + i++; + } + } else { + el = this.options.snap; + l = el.length; + n = -1; + + for ( ; i < l; i++ ) { + rect = utils.getRect(el[i]); + if ( i === 0 || rect.left <= utils.getRect(el[i-1]).left ) { + m = 0; + n++; + } + + if ( !this.pages[m] ) { + this.pages[m] = []; + } + + x = Math.max(-rect.left, this.maxScrollX); + y = Math.max(-rect.top, this.maxScrollY); + cx = x - Math.round(rect.width / 2); + cy = y - Math.round(rect.height / 2); + + this.pages[m][n] = { + x: x, + y: y, + width: rect.width, + height: rect.height, + cx: cx, + cy: cy + }; + + if ( x > this.maxScrollX ) { + m++; + } + } + } + + this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); + + // Update snap threshold if needed + if ( this.options.snapThreshold % 1 === 0 ) { + this.snapThresholdX = this.options.snapThreshold; + this.snapThresholdY = this.options.snapThreshold; + } else { + this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold); + this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold); + } + }); + + this.on('flick', function () { + var time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(this.x - this.startX), 1000), + Math.min(Math.abs(this.y - this.startY), 1000) + ), 300); + + this.goToPage( + this.currentPage.pageX + this.directionX, + this.currentPage.pageY + this.directionY, + time + ); + }); + }, + + _nearestSnap: function (x, y) { + if ( !this.pages.length ) { + return { x: 0, y: 0, pageX: 0, pageY: 0 }; + } + + var i = 0, + l = this.pages.length, + m = 0; + + // Check if we exceeded the snap threshold + if ( Math.abs(x - this.absStartX) < this.snapThresholdX && + Math.abs(y - this.absStartY) < this.snapThresholdY ) { + return this.currentPage; + } + + if ( x > 0 ) { + x = 0; + } else if ( x < this.maxScrollX ) { + x = this.maxScrollX; + } + + if ( y > 0 ) { + y = 0; + } else if ( y < this.maxScrollY ) { + y = this.maxScrollY; + } + + for ( ; i < l; i++ ) { + if ( x >= this.pages[i][0].cx ) { + x = this.pages[i][0].x; + break; + } + } + + l = this.pages[i].length; + + for ( ; m < l; m++ ) { + if ( y >= this.pages[0][m].cy ) { + y = this.pages[0][m].y; + break; + } + } + + if ( i == this.currentPage.pageX ) { + i += this.directionX; + + if ( i < 0 ) { + i = 0; + } else if ( i >= this.pages.length ) { + i = this.pages.length - 1; + } + + x = this.pages[i][0].x; + } + + if ( m == this.currentPage.pageY ) { + m += this.directionY; + + if ( m < 0 ) { + m = 0; + } else if ( m >= this.pages[0].length ) { + m = this.pages[0].length - 1; + } + + y = this.pages[0][m].y; + } + + return { + x: x, + y: y, + pageX: i, + pageY: m + }; + }, + + goToPage: function (x, y, time, easing) { + easing = easing || this.options.bounceEasing; + + if ( x >= this.pages.length ) { + x = this.pages.length - 1; + } else if ( x < 0 ) { + x = 0; + } + + if ( y >= this.pages[x].length ) { + y = this.pages[x].length - 1; + } else if ( y < 0 ) { + y = 0; + } + + var posX = this.pages[x][y].x, + posY = this.pages[x][y].y; + + time = time === undefined ? this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(posX - this.x), 1000), + Math.min(Math.abs(posY - this.y), 1000) + ), 300) : time; + + this.currentPage = { + x: posX, + y: posY, + pageX: x, + pageY: y + }; + + this.scrollTo(posX, posY, time, easing); + }, + + next: function (time, easing) { + var x = this.currentPage.pageX, + y = this.currentPage.pageY; + + x++; + + if ( x >= this.pages.length && this.hasVerticalScroll ) { + x = 0; + y++; + } + + this.goToPage(x, y, time, easing); + }, + + prev: function (time, easing) { + var x = this.currentPage.pageX, + y = this.currentPage.pageY; + + x--; + + if ( x < 0 && this.hasVerticalScroll ) { + x = 0; + y--; + } + + this.goToPage(x, y, time, easing); + }, + + _initKeys: function (e) { + // default key bindings + var keys = { + pageUp: 33, + pageDown: 34, + end: 35, + home: 36, + left: 37, + up: 38, + right: 39, + down: 40 + }; + var i; + + // if you give me characters I give you keycode + if ( typeof this.options.keyBindings == 'object' ) { + for ( i in this.options.keyBindings ) { + if ( typeof this.options.keyBindings[i] == 'string' ) { + this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0); + } + } + } else { + this.options.keyBindings = {}; + } + + for ( i in keys ) { + this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i]; + } + + utils.addEvent(window, 'keydown', this); + + this.on('destroy', function () { + utils.removeEvent(window, 'keydown', this); + }); + }, + + _key: function (e) { + if ( !this.enabled ) { + return; + } + + var snap = this.options.snap, // we are using this alot, better to cache it + newX = snap ? this.currentPage.pageX : this.x, + newY = snap ? this.currentPage.pageY : this.y, + now = utils.getTime(), + prevTime = this.keyTime || 0, + acceleration = 0.250, + pos; + + if ( this.options.useTransition && this.isInTransition ) { + pos = this.getComputedPosition(); + + this._translate(Math.round(pos.x), Math.round(pos.y)); + this.isInTransition = false; + } + + this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0; + + switch ( e.keyCode ) { + case this.options.keyBindings.pageUp: + if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { + newX += snap ? 1 : this.wrapperWidth; + } else { + newY += snap ? 1 : this.wrapperHeight; + } + break; + case this.options.keyBindings.pageDown: + if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { + newX -= snap ? 1 : this.wrapperWidth; + } else { + newY -= snap ? 1 : this.wrapperHeight; + } + break; + case this.options.keyBindings.end: + newX = snap ? this.pages.length-1 : this.maxScrollX; + newY = snap ? this.pages[0].length-1 : this.maxScrollY; + break; + case this.options.keyBindings.home: + newX = 0; + newY = 0; + break; + case this.options.keyBindings.left: + newX += snap ? -1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.up: + newY += snap ? 1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.right: + newX -= snap ? -1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.down: + newY -= snap ? 1 : 5 + this.keyAcceleration>>0; + break; + default: + return; + } + + if ( snap ) { + this.goToPage(newX, newY); + return; + } + + if ( newX > 0 ) { + newX = 0; + this.keyAcceleration = 0; + } else if ( newX < this.maxScrollX ) { + newX = this.maxScrollX; + this.keyAcceleration = 0; + } + + if ( newY > 0 ) { + newY = 0; + this.keyAcceleration = 0; + } else if ( newY < this.maxScrollY ) { + newY = this.maxScrollY; + this.keyAcceleration = 0; + } + + this.scrollTo(newX, newY, 0); + + this.keyTime = now; + }, + + _animate: function (destX, destY, duration, easingFn) { + var that = this, + startX = this.x, + startY = this.y, + startTime = utils.getTime(), + destTime = startTime + duration; + + function step () { + var now = utils.getTime(), + newX, newY, + easing; + + if ( now >= destTime ) { + that.isAnimating = false; + that._translate(destX, destY); + + if ( !that.resetPosition(that.options.bounceTime) ) { + that._execEvent('scrollEnd'); + } + + return; + } + + now = ( now - startTime ) / duration; + easing = easingFn(now); + newX = ( destX - startX ) * easing + startX; + newY = ( destY - startY ) * easing + startY; + that._translate(newX, newY); + + if ( that.isAnimating ) { + rAF(step); + } + + if ( that.options.probeType == 3 ) { + that._execEvent('scroll'); + } + } + + this.isAnimating = true; + step(); + }, + + handleEvent: function (e) { + switch ( e.type ) { + case 'touchstart': + case 'pointerdown': + case 'MSPointerDown': + case 'mousedown': + this._start(e); + break; + case 'touchmove': + case 'pointermove': + case 'MSPointerMove': + case 'mousemove': + this._move(e); + break; + case 'touchend': + case 'pointerup': + case 'MSPointerUp': + case 'mouseup': + case 'touchcancel': + case 'pointercancel': + case 'MSPointerCancel': + case 'mousecancel': + this._end(e); + break; + case 'orientationchange': + case 'resize': + this._resize(); + break; + case 'transitionend': + case 'webkitTransitionEnd': + case 'oTransitionEnd': + case 'MSTransitionEnd': + this._transitionEnd(e); + break; + case 'wheel': + case 'DOMMouseScroll': + case 'mousewheel': + this._wheel(e); + break; + case 'keydown': + this._key(e); + break; + case 'click': + if ( this.enabled && !e._constructed ) { + e.preventDefault(); + e.stopPropagation(); + } + break; + } + } +}; +function createDefaultScrollbar (direction, interactive, type) { + var scrollbar = document.createElement('div'), + indicator = document.createElement('div'); + + if ( type === true ) { + scrollbar.style.cssText = 'position:absolute;z-index:9999'; + indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px'; + } + + indicator.className = 'iScrollIndicator'; + + if ( direction == 'h' ) { + if ( type === true ) { + scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0'; + indicator.style.height = '100%'; + } + scrollbar.className = 'iScrollHorizontalScrollbar'; + } else { + if ( type === true ) { + scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px'; + indicator.style.width = '100%'; + } + scrollbar.className = 'iScrollVerticalScrollbar'; + } + + scrollbar.style.cssText += ';overflow:hidden'; + + if ( !interactive ) { + scrollbar.style.pointerEvents = 'none'; + } + + scrollbar.appendChild(indicator); + + return scrollbar; +} + +function Indicator (scroller, options) { + this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el; + this.wrapperStyle = this.wrapper.style; + this.indicator = this.wrapper.children[0]; + this.indicatorStyle = this.indicator.style; + this.scroller = scroller; + + this.options = { + listenX: true, + listenY: true, + interactive: false, + resize: true, + defaultScrollbars: false, + shrink: false, + fade: false, + speedRatioX: 0, + speedRatioY: 0 + }; + + for ( var i in options ) { + this.options[i] = options[i]; + } + + this.sizeRatioX = 1; + this.sizeRatioY = 1; + this.maxPosX = 0; + this.maxPosY = 0; + + if ( this.options.interactive ) { + if ( !this.options.disableTouch ) { + utils.addEvent(this.indicator, 'touchstart', this); + utils.addEvent(window, 'touchend', this); + } + if ( !this.options.disablePointer ) { + utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); + } + if ( !this.options.disableMouse ) { + utils.addEvent(this.indicator, 'mousedown', this); + utils.addEvent(window, 'mouseup', this); + } + } + + if ( this.options.fade ) { + this.wrapperStyle[utils.style.transform] = this.scroller.translateZ; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms'; + // remove 0.0001ms + var self = this; + if(utils.isBadAndroid) { + rAF(function() { + if(self.wrapperStyle[durationProp] === '0.0001ms') { + self.wrapperStyle[durationProp] = '0s'; + } + }); + } + this.wrapperStyle.opacity = '0'; + } +} + +Indicator.prototype = { + handleEvent: function (e) { + switch ( e.type ) { + case 'touchstart': + case 'pointerdown': + case 'MSPointerDown': + case 'mousedown': + this._start(e); + break; + case 'touchmove': + case 'pointermove': + case 'MSPointerMove': + case 'mousemove': + this._move(e); + break; + case 'touchend': + case 'pointerup': + case 'MSPointerUp': + case 'mouseup': + case 'touchcancel': + case 'pointercancel': + case 'MSPointerCancel': + case 'mousecancel': + this._end(e); + break; + } + }, + + destroy: function () { + if ( this.options.fadeScrollbars ) { + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + } + if ( this.options.interactive ) { + utils.removeEvent(this.indicator, 'touchstart', this); + utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.removeEvent(this.indicator, 'mousedown', this); + + utils.removeEvent(window, 'touchmove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); + utils.removeEvent(window, 'mousemove', this); + + utils.removeEvent(window, 'touchend', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); + utils.removeEvent(window, 'mouseup', this); + } + + if ( this.options.defaultScrollbars && this.wrapper.parentNode ) { + this.wrapper.parentNode.removeChild(this.wrapper); + } + }, + + _start: function (e) { + var point = e.touches ? e.touches[0] : e; + + e.preventDefault(); + e.stopPropagation(); + + this.transitionTime(); + + this.initiated = true; + this.moved = false; + this.lastPointX = point.pageX; + this.lastPointY = point.pageY; + + this.startTime = utils.getTime(); + + if ( !this.options.disableTouch ) { + utils.addEvent(window, 'touchmove', this); + } + if ( !this.options.disablePointer ) { + utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); + } + if ( !this.options.disableMouse ) { + utils.addEvent(window, 'mousemove', this); + } + + this.scroller._execEvent('beforeScrollStart'); + }, + + _move: function (e) { + var point = e.touches ? e.touches[0] : e, + deltaX, deltaY, + newX, newY, + timestamp = utils.getTime(); + + if ( !this.moved ) { + this.scroller._execEvent('scrollStart'); + } + + this.moved = true; + + deltaX = point.pageX - this.lastPointX; + this.lastPointX = point.pageX; + + deltaY = point.pageY - this.lastPointY; + this.lastPointY = point.pageY; + + newX = this.x + deltaX; + newY = this.y + deltaY; + + this._pos(newX, newY); + + + if ( this.scroller.options.probeType == 1 && timestamp - this.startTime > 300 ) { + this.startTime = timestamp; + this.scroller._execEvent('scroll'); + } else if ( this.scroller.options.probeType > 1 ) { + this.scroller._execEvent('scroll'); + } + + +// INSERT POINT: indicator._move + + e.preventDefault(); + e.stopPropagation(); + }, + + _end: function (e) { + if ( !this.initiated ) { + return; + } + + this.initiated = false; + + e.preventDefault(); + e.stopPropagation(); + + utils.removeEvent(window, 'touchmove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); + utils.removeEvent(window, 'mousemove', this); + + if ( this.scroller.options.snap ) { + var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y); + + var time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(this.scroller.x - snap.x), 1000), + Math.min(Math.abs(this.scroller.y - snap.y), 1000) + ), 300); + + if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) { + this.scroller.directionX = 0; + this.scroller.directionY = 0; + this.scroller.currentPage = snap; + this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing); + } + } + + if ( this.moved ) { + this.scroller._execEvent('scrollEnd'); + } + }, + + transitionTime: function (time) { + time = time || 0; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + + this.indicatorStyle[durationProp] = time + 'ms'; + + if ( !time && utils.isBadAndroid ) { + this.indicatorStyle[durationProp] = '0.0001ms'; + // remove 0.0001ms + var self = this; + rAF(function() { + if(self.indicatorStyle[durationProp] === '0.0001ms') { + self.indicatorStyle[durationProp] = '0s'; + } + }); + } + }, + + transitionTimingFunction: function (easing) { + this.indicatorStyle[utils.style.transitionTimingFunction] = easing; + }, + + refresh: function () { + this.transitionTime(); + + if ( this.options.listenX && !this.options.listenY ) { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none'; + } else if ( this.options.listenY && !this.options.listenX ) { + this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none'; + } else { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none'; + } + + if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) { + utils.addClass(this.wrapper, 'iScrollBothScrollbars'); + utils.removeClass(this.wrapper, 'iScrollLoneScrollbar'); + + if ( this.options.defaultScrollbars && this.options.customStyle ) { + if ( this.options.listenX ) { + this.wrapper.style.right = '8px'; + } else { + this.wrapper.style.bottom = '8px'; + } + } + } else { + utils.removeClass(this.wrapper, 'iScrollBothScrollbars'); + utils.addClass(this.wrapper, 'iScrollLoneScrollbar'); + + if ( this.options.defaultScrollbars && this.options.customStyle ) { + if ( this.options.listenX ) { + this.wrapper.style.right = '2px'; + } else { + this.wrapper.style.bottom = '2px'; + } + } + } + + utils.getRect(this.wrapper); // force refresh + + if ( this.options.listenX ) { + this.wrapperWidth = this.wrapper.clientWidth; + if ( this.options.resize ) { + this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8); + this.indicatorStyle.width = this.indicatorWidth + 'px'; + } else { + this.indicatorWidth = this.indicator.clientWidth; + } + + this.maxPosX = this.wrapperWidth - this.indicatorWidth; + + if ( this.options.shrink == 'clip' ) { + this.minBoundaryX = -this.indicatorWidth + 8; + this.maxBoundaryX = this.wrapperWidth - 8; + } else { + this.minBoundaryX = 0; + this.maxBoundaryX = this.maxPosX; + } + + this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX)); + } + + if ( this.options.listenY ) { + this.wrapperHeight = this.wrapper.clientHeight; + if ( this.options.resize ) { + this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8); + this.indicatorStyle.height = this.indicatorHeight + 'px'; + } else { + this.indicatorHeight = this.indicator.clientHeight; + } + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + + if ( this.options.shrink == 'clip' ) { + this.minBoundaryY = -this.indicatorHeight + 8; + this.maxBoundaryY = this.wrapperHeight - 8; + } else { + this.minBoundaryY = 0; + this.maxBoundaryY = this.maxPosY; + } + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY)); + } + + this.updatePosition(); + }, + + updatePosition: function () { + var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0, + y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0; + + if ( !this.options.ignoreBoundaries ) { + if ( x < this.minBoundaryX ) { + if ( this.options.shrink == 'scale' ) { + this.width = Math.max(this.indicatorWidth + x, 8); + this.indicatorStyle.width = this.width + 'px'; + } + x = this.minBoundaryX; + } else if ( x > this.maxBoundaryX ) { + if ( this.options.shrink == 'scale' ) { + this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8); + this.indicatorStyle.width = this.width + 'px'; + x = this.maxPosX + this.indicatorWidth - this.width; + } else { + x = this.maxBoundaryX; + } + } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) { + this.width = this.indicatorWidth; + this.indicatorStyle.width = this.width + 'px'; + } + + if ( y < this.minBoundaryY ) { + if ( this.options.shrink == 'scale' ) { + this.height = Math.max(this.indicatorHeight + y * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + } + y = this.minBoundaryY; + } else if ( y > this.maxBoundaryY ) { + if ( this.options.shrink == 'scale' ) { + this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + y = this.maxPosY + this.indicatorHeight - this.height; + } else { + y = this.maxBoundaryY; + } + } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) { + this.height = this.indicatorHeight; + this.indicatorStyle.height = this.height + 'px'; + } + } + + this.x = x; + this.y = y; + + if ( this.scroller.options.useTransform ) { + this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ; + } else { + this.indicatorStyle.left = x + 'px'; + this.indicatorStyle.top = y + 'px'; + } + }, + + _pos: function (x, y) { + if ( x < 0 ) { + x = 0; + } else if ( x > this.maxPosX ) { + x = this.maxPosX; + } + + if ( y < 0 ) { + y = 0; + } else if ( y > this.maxPosY ) { + y = this.maxPosY; + } + + x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x; + y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y; + + this.scroller.scrollTo(x, y); + }, + + fade: function (val, hold) { + if ( hold && !this.visible ) { + return; + } + + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + + var time = val ? 250 : 500, + delay = val ? 0 : 300; + + val = val ? '1' : '0'; + + this.wrapperStyle[utils.style.transitionDuration] = time + 'ms'; + + this.fadeTimeout = setTimeout((function (val) { + this.wrapperStyle.opacity = val; + this.visible = +val; + }).bind(this, val), delay); + } +}; + +IScroll.utils = utils; + +if ( typeof module != 'undefined' && module.exports ) { + module.exports = IScroll; +} else if ( typeof define == 'function' && define.amd ) { + define( function () { return IScroll; } ); +} else { + window.IScroll = IScroll; +} + +})(window, document, Math); diff --git a/view/molistar/common/js/iscroll.js b/view/molistar/common/js/iscroll.js new file mode 100644 index 00000000..3c926627 --- /dev/null +++ b/view/molistar/common/js/iscroll.js @@ -0,0 +1,2170 @@ +/*! iScroll v5.2.0-snapshot ~ (c) 2008-2017 Matteo Spinelli ~ http://cubiq.org/license */ +(function (window, document, Math) { +var rAF = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function (callback) { window.setTimeout(callback, 1000 / 60); }; + +var utils = (function () { + var me = {}; + + var _elementStyle = document.createElement('div').style; + var _vendor = (function () { + var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], + transform, + i = 0, + l = vendors.length; + + for ( ; i < l; i++ ) { + transform = vendors[i] + 'ransform'; + if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); + } + + return false; + })(); + + function _prefixStyle (style) { + if ( _vendor === false ) return false; + if ( _vendor === '' ) return style; + return _vendor + style.charAt(0).toUpperCase() + style.substr(1); + } + + me.getTime = Date.now || function getTime () { return new Date().getTime(); }; + + me.extend = function (target, obj) { + for ( var i in obj ) { + target[i] = obj[i]; + } + }; + + me.addEvent = function (el, type, fn, capture) { + el.addEventListener(type, fn, !!capture); + }; + + me.removeEvent = function (el, type, fn, capture) { + el.removeEventListener(type, fn, !!capture); + }; + + me.prefixPointerEvent = function (pointerEvent) { + return window.MSPointerEvent ? + 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): + pointerEvent; + }; + + me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { + var distance = current - start, + speed = Math.abs(distance) / time, + destination, + duration; + + deceleration = deceleration === undefined ? 0.0006 : deceleration; + + destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); + duration = speed / deceleration; + + if ( destination < lowerMargin ) { + destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; + distance = Math.abs(destination - current); + duration = distance / speed; + } else if ( destination > 0 ) { + destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; + distance = Math.abs(current) + destination; + duration = distance / speed; + } + + return { + destination: Math.round(destination), + duration: duration + }; + }; + + var _transform = _prefixStyle('transform'); + + me.extend(me, { + hasTransform: _transform !== false, + hasPerspective: _prefixStyle('perspective') in _elementStyle, + hasTouch: 'ontouchstart' in window, + hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed + hasTransition: _prefixStyle('transition') in _elementStyle + }); + + /* + This should find all Android browsers lower than build 535.19 (both stock browser and webview) + - galaxy S2 is ok + - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` + - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S3 is badAndroid (stock brower, webview) + `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S4 is badAndroid (stock brower, webview) + `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` + - galaxy S5 is OK + `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` + - galaxy S6 is OK + `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` + */ + me.isBadAndroid = (function() { + var appVersion = window.navigator.appVersion; + // Android browser is not a chrome browser. + if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { + var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); + if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { + return parseFloat(safariVersion[1]) < 535.19; + } else { + return true; + } + } else { + return false; + } + })(); + + me.extend(me.style = {}, { + transform: _transform, + transitionTimingFunction: _prefixStyle('transitionTimingFunction'), + transitionDuration: _prefixStyle('transitionDuration'), + transitionDelay: _prefixStyle('transitionDelay'), + transformOrigin: _prefixStyle('transformOrigin'), + touchAction: _prefixStyle('touchAction') + }); + + me.hasClass = function (e, c) { + var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); + return re.test(e.className); + }; + + me.addClass = function (e, c) { + if ( me.hasClass(e, c) ) { + return; + } + + var newclass = e.className.split(' '); + newclass.push(c); + e.className = newclass.join(' '); + }; + + me.removeClass = function (e, c) { + if ( !me.hasClass(e, c) ) { + return; + } + + var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); + e.className = e.className.replace(re, ' '); + }; + + me.offset = function (el) { + var left = -el.offsetLeft, + top = -el.offsetTop; + + // jshint -W084 + while (el = el.offsetParent) { + left -= el.offsetLeft; + top -= el.offsetTop; + } + // jshint +W084 + + return { + left: left, + top: top + }; + }; + + me.preventDefaultException = function (el, exceptions) { + for ( var i in exceptions ) { + if ( exceptions[i].test(el[i]) ) { + return true; + } + } + + return false; + }; + + me.extend(me.eventType = {}, { + touchstart: 1, + touchmove: 1, + touchend: 1, + + mousedown: 2, + mousemove: 2, + mouseup: 2, + + pointerdown: 3, + pointermove: 3, + pointerup: 3, + + MSPointerDown: 3, + MSPointerMove: 3, + MSPointerUp: 3 + }); + + me.extend(me.ease = {}, { + quadratic: { + style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', + fn: function (k) { + return k * ( 2 - k ); + } + }, + circular: { + style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) + fn: function (k) { + return Math.sqrt( 1 - ( --k * k ) ); + } + }, + back: { + style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', + fn: function (k) { + var b = 4; + return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; + } + }, + bounce: { + style: '', + fn: function (k) { + if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { + return 7.5625 * k * k; + } else if ( k < ( 2 / 2.75 ) ) { + return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; + } else if ( k < ( 2.5 / 2.75 ) ) { + return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; + } else { + return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; + } + } + }, + elastic: { + style: '', + fn: function (k) { + var f = 0.22, + e = 0.4; + + if ( k === 0 ) { return 0; } + if ( k == 1 ) { return 1; } + + return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); + } + } + }); + + me.tap = function (e, eventName) { + var ev = document.createEvent('Event'); + ev.initEvent(eventName, true, true); + ev.pageX = e.pageX; + ev.pageY = e.pageY; + e.target.dispatchEvent(ev); + }; + + me.click = function (e) { + var target = e.target, + ev; + + if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { + // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent + // initMouseEvent is deprecated. + ev = document.createEvent(window.MouseEvent ? 'MouseEvents' : 'Event'); + ev.initEvent('click', true, true); + ev.view = e.view || window; + ev.detail = 1; + ev.screenX = target.screenX || 0; + ev.screenY = target.screenY || 0; + ev.clientX = target.clientX || 0; + ev.clientY = target.clientY || 0; + ev.ctrlKey = !!e.ctrlKey; + ev.altKey = !!e.altKey; + ev.shiftKey = !!e.shiftKey; + ev.metaKey = !!e.metaKey; + ev.button = 0; + ev.relatedTarget = null; + ev._constructed = true; + target.dispatchEvent(ev); + } + }; + + me.getTouchAction = function(eventPassthrough, addPinch) { + var touchAction = 'none'; + if ( eventPassthrough === 'vertical' ) { + touchAction = 'pan-y'; + } else if (eventPassthrough === 'horizontal' ) { + touchAction = 'pan-x'; + } + if (addPinch && touchAction != 'none') { + // add pinch-zoom support if the browser supports it, but if not (eg. Chrome <55) do nothing + touchAction += ' pinch-zoom'; + } + return touchAction; + }; + + me.getRect = function(el) { + if (el instanceof SVGElement) { + var rect = el.getBoundingClientRect(); + return { + top : rect.top, + left : rect.left, + width : rect.width, + height : rect.height + }; + } else { + return { + top : el.offsetTop, + left : el.offsetLeft, + width : el.offsetWidth, + height : el.offsetHeight + }; + } + }; + + return me; +})(); +function IScroll (el, options) { + this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; + this.scroller = this.wrapper.children[0]; + this.scrollerStyle = this.scroller.style; // cache style for better performance + + this.options = { + + resizeScrollbars: true, + + mouseWheelSpeed: 20, + + snapThreshold: 0.334, + +// INSERT POINT: OPTIONS + disablePointer : !utils.hasPointer, + disableTouch : utils.hasPointer || !utils.hasTouch, + disableMouse : utils.hasPointer || utils.hasTouch, + startX: 0, + startY: 0, + scrollY: true, + directionLockThreshold: 5, + momentum: true, + + bounce: true, + bounceTime: 600, + bounceEasing: '', + + preventDefault: true, + preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, + + HWCompositing: true, + useTransition: true, + useTransform: true, + bindToWrapper: typeof window.onmousedown === "undefined" + }; + + for ( var i in options ) { + this.options[i] = options[i]; + } + + // Normalize options + this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; + + this.options.useTransition = utils.hasTransition && this.options.useTransition; + this.options.useTransform = utils.hasTransform && this.options.useTransform; + + this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; + this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; + + // If you want eventPassthrough I have to lock one of the axes + this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; + this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; + + // With eventPassthrough we also need lockDirection mechanism + this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; + this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; + + this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; + + this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; + + if ( this.options.tap === true ) { + this.options.tap = 'tap'; + } + + // https://github.com/cubiq/iscroll/issues/1029 + if (!this.options.useTransition && !this.options.useTransform) { + if(!(/relative|absolute/i).test(this.scrollerStyle.position)) { + this.scrollerStyle.position = "relative"; + } + } + + if ( this.options.shrinkScrollbars == 'scale' ) { + this.options.useTransition = false; + } + + this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; + +// INSERT POINT: NORMALIZATION + + // Some defaults + this.x = 0; + this.y = 0; + this.directionX = 0; + this.directionY = 0; + this._events = {}; + +// INSERT POINT: DEFAULTS + + this._init(); + this.refresh(); + + this.scrollTo(this.options.startX, this.options.startY); + this.enable(); +} + +IScroll.prototype = { + version: '5.2.0-snapshot', + + _init: function () { + this._initEvents(); + + if ( this.options.scrollbars || this.options.indicators ) { + this._initIndicators(); + } + + if ( this.options.mouseWheel ) { + this._initWheel(); + } + + if ( this.options.snap ) { + this._initSnap(); + } + + if ( this.options.keyBindings ) { + this._initKeys(); + } + +// INSERT POINT: _init + + }, + + destroy: function () { + this._initEvents(true); + clearTimeout(this.resizeTimeout); + this.resizeTimeout = null; + this._execEvent('destroy'); + }, + + _transitionEnd: function (e) { + if ( e.target != this.scroller || !this.isInTransition ) { + return; + } + + this._transitionTime(); + if ( !this.resetPosition(this.options.bounceTime) ) { + this.isInTransition = false; + this._execEvent('scrollEnd'); + } + }, + + _start: function (e) { + // React to left mouse button only + if ( utils.eventType[e.type] != 1 ) { + // for button property + // http://unixpapa.com/js/mouse.html + var button; + if (!e.which) { + /* IE case */ + button = (e.button < 2) ? 0 : + ((e.button == 4) ? 1 : 2); + } else { + /* All others */ + button = e.button; + } + if ( button !== 0 ) { + return; + } + } + + if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { + return; + } + + if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { + e.preventDefault(); + } + + var point = e.touches ? e.touches[0] : e, + pos; + + this.initiated = utils.eventType[e.type]; + this.moved = false; + this.distX = 0; + this.distY = 0; + this.directionX = 0; + this.directionY = 0; + this.directionLocked = 0; + + this.startTime = utils.getTime(); + + if ( this.options.useTransition && this.isInTransition ) { + this._transitionTime(); + this.isInTransition = false; + pos = this.getComputedPosition(); + this._translate(Math.round(pos.x), Math.round(pos.y)); + this._execEvent('scrollEnd'); + } else if ( !this.options.useTransition && this.isAnimating ) { + this.isAnimating = false; + this._execEvent('scrollEnd'); + } + + this.startX = this.x; + this.startY = this.y; + this.absStartX = this.x; + this.absStartY = this.y; + this.pointX = point.pageX; + this.pointY = point.pageY; + + this._execEvent('beforeScrollStart'); + }, + + _move: function (e) { + if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { + return; + } + + if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! + e.preventDefault(); + } + + var point = e.touches ? e.touches[0] : e, + deltaX = point.pageX - this.pointX, + deltaY = point.pageY - this.pointY, + timestamp = utils.getTime(), + newX, newY, + absDistX, absDistY; + + this.pointX = point.pageX; + this.pointY = point.pageY; + + this.distX += deltaX; + this.distY += deltaY; + absDistX = Math.abs(this.distX); + absDistY = Math.abs(this.distY); + + // We need to move at least 10 pixels for the scrolling to initiate + if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { + return; + } + + // If you are scrolling in one direction lock the other + if ( !this.directionLocked && !this.options.freeScroll ) { + if ( absDistX > absDistY + this.options.directionLockThreshold ) { + this.directionLocked = 'h'; // lock horizontally + } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { + this.directionLocked = 'v'; // lock vertically + } else { + this.directionLocked = 'n'; // no lock + } + } + + if ( this.directionLocked == 'h' ) { + if ( this.options.eventPassthrough == 'vertical' ) { + e.preventDefault(); + } else if ( this.options.eventPassthrough == 'horizontal' ) { + this.initiated = false; + return; + } + + deltaY = 0; + } else if ( this.directionLocked == 'v' ) { + if ( this.options.eventPassthrough == 'horizontal' ) { + e.preventDefault(); + } else if ( this.options.eventPassthrough == 'vertical' ) { + this.initiated = false; + return; + } + + deltaX = 0; + } + + deltaX = this.hasHorizontalScroll ? deltaX : 0; + deltaY = this.hasVerticalScroll ? deltaY : 0; + + newX = this.x + deltaX; + newY = this.y + deltaY; + + // Slow down if outside of the boundaries + if ( newX > 0 || newX < this.maxScrollX ) { + newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; + } + if ( newY > 0 || newY < this.maxScrollY ) { + newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; + } + + this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; + this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; + + if ( !this.moved ) { + this._execEvent('scrollStart'); + } + + this.moved = true; + + this._translate(newX, newY); + +/* REPLACE START: _move */ + + if ( timestamp - this.startTime > 300 ) { + this.startTime = timestamp; + this.startX = this.x; + this.startY = this.y; + } + +/* REPLACE END: _move */ + + }, + + _end: function (e) { + if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { + return; + } + + if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { + e.preventDefault(); + } + + var point = e.changedTouches ? e.changedTouches[0] : e, + momentumX, + momentumY, + duration = utils.getTime() - this.startTime, + newX = Math.round(this.x), + newY = Math.round(this.y), + distanceX = Math.abs(newX - this.startX), + distanceY = Math.abs(newY - this.startY), + time = 0, + easing = ''; + + this.isInTransition = 0; + this.initiated = 0; + this.endTime = utils.getTime(); + + // reset if we are outside of the boundaries + if ( this.resetPosition(this.options.bounceTime) ) { + return; + } + + this.scrollTo(newX, newY); // ensures that the last position is rounded + + // we scrolled less than 10 pixels + if ( !this.moved ) { + if ( this.options.tap ) { + utils.tap(e, this.options.tap); + } + + if ( this.options.click ) { + utils.click(e); + } + + this._execEvent('scrollCancel'); + return; + } + + if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { + this._execEvent('flick'); + return; + } + + // start momentum animation if needed + if ( this.options.momentum && duration < 300 ) { + momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; + momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; + newX = momentumX.destination; + newY = momentumY.destination; + time = Math.max(momentumX.duration, momentumY.duration); + this.isInTransition = 1; + } + + + if ( this.options.snap ) { + var snap = this._nearestSnap(newX, newY); + this.currentPage = snap; + time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(newX - snap.x), 1000), + Math.min(Math.abs(newY - snap.y), 1000) + ), 300); + newX = snap.x; + newY = snap.y; + + this.directionX = 0; + this.directionY = 0; + easing = this.options.bounceEasing; + } + +// INSERT POINT: _end + + if ( newX != this.x || newY != this.y ) { + // change easing function when scroller goes out of the boundaries + if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { + easing = utils.ease.quadratic; + } + + this.scrollTo(newX, newY, time, easing); + return; + } + + this._execEvent('scrollEnd'); + }, + + _resize: function () { + var that = this; + + clearTimeout(this.resizeTimeout); + + this.resizeTimeout = setTimeout(function () { + that.refresh(); + }, this.options.resizePolling); + }, + + resetPosition: function (time) { + var x = this.x, + y = this.y; + + time = time || 0; + + if ( !this.hasHorizontalScroll || this.x > 0 ) { + x = 0; + } else if ( this.x < this.maxScrollX ) { + x = this.maxScrollX; + } + + if ( !this.hasVerticalScroll || this.y > 0 ) { + y = 0; + } else if ( this.y < this.maxScrollY ) { + y = this.maxScrollY; + } + + if ( x == this.x && y == this.y ) { + return false; + } + + this.scrollTo(x, y, time, this.options.bounceEasing); + + return true; + }, + + disable: function () { + this.enabled = false; + }, + + enable: function () { + this.enabled = true; + }, + + refresh: function () { + utils.getRect(this.wrapper); // Force reflow + + this.wrapperWidth = this.wrapper.clientWidth; + this.wrapperHeight = this.wrapper.clientHeight; + + var rect = utils.getRect(this.scroller); +/* REPLACE START: refresh */ + + this.scrollerWidth = rect.width; + this.scrollerHeight = rect.height; + + this.maxScrollX = this.wrapperWidth - this.scrollerWidth; + this.maxScrollY = this.wrapperHeight - this.scrollerHeight; + +/* REPLACE END: refresh */ + + this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; + this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; + + if ( !this.hasHorizontalScroll ) { + this.maxScrollX = 0; + this.scrollerWidth = this.wrapperWidth; + } + + if ( !this.hasVerticalScroll ) { + this.maxScrollY = 0; + this.scrollerHeight = this.wrapperHeight; + } + + this.endTime = 0; + this.directionX = 0; + this.directionY = 0; + + if(utils.hasPointer && !this.options.disablePointer) { + // The wrapper should have `touchAction` property for using pointerEvent. + this.wrapper.style[utils.style.touchAction] = utils.getTouchAction(this.options.eventPassthrough, true); + + // case. not support 'pinch-zoom' + // https://github.com/cubiq/iscroll/issues/1118#issuecomment-270057583 + if (!this.wrapper.style[utils.style.touchAction]) { + this.wrapper.style[utils.style.touchAction] = utils.getTouchAction(this.options.eventPassthrough, false); + } + } + this.wrapperOffset = utils.offset(this.wrapper); + + this._execEvent('refresh'); + + this.resetPosition(); + +// INSERT POINT: _refresh + + }, + + on: function (type, fn) { + if ( !this._events[type] ) { + this._events[type] = []; + } + + this._events[type].push(fn); + }, + + off: function (type, fn) { + if ( !this._events[type] ) { + return; + } + + var index = this._events[type].indexOf(fn); + + if ( index > -1 ) { + this._events[type].splice(index, 1); + } + }, + + _execEvent: function (type) { + if ( !this._events[type] ) { + return; + } + + var i = 0, + l = this._events[type].length; + + if ( !l ) { + return; + } + + for ( ; i < l; i++ ) { + this._events[type][i].apply(this, [].slice.call(arguments, 1)); + } + }, + + scrollBy: function (x, y, time, easing) { + x = this.x + x; + y = this.y + y; + time = time || 0; + + this.scrollTo(x, y, time, easing); + }, + + scrollTo: function (x, y, time, easing) { + easing = easing || utils.ease.circular; + + this.isInTransition = this.options.useTransition && time > 0; + var transitionType = this.options.useTransition && easing.style; + if ( !time || transitionType ) { + if(transitionType) { + this._transitionTimingFunction(easing.style); + this._transitionTime(time); + } + this._translate(x, y); + } else { + this._animate(x, y, time, easing.fn); + } + }, + + scrollToElement: function (el, time, offsetX, offsetY, easing) { + el = el.nodeType ? el : this.scroller.querySelector(el); + + if ( !el ) { + return; + } + + var pos = utils.offset(el); + + pos.left -= this.wrapperOffset.left; + pos.top -= this.wrapperOffset.top; + + // if offsetX/Y are true we center the element to the screen + var elRect = utils.getRect(el); + var wrapperRect = utils.getRect(this.wrapper); + if ( offsetX === true ) { + offsetX = Math.round(elRect.width / 2 - wrapperRect.width / 2); + } + if ( offsetY === true ) { + offsetY = Math.round(elRect.height / 2 - wrapperRect.height / 2); + } + + pos.left -= offsetX || 0; + pos.top -= offsetY || 0; + + pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; + pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; + + time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; + + this.scrollTo(pos.left, pos.top, time, easing); + }, + + _transitionTime: function (time) { + if (!this.options.useTransition) { + return; + } + time = time || 0; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + + this.scrollerStyle[durationProp] = time + 'ms'; + + if ( !time && utils.isBadAndroid ) { + this.scrollerStyle[durationProp] = '0.0001ms'; + // remove 0.0001ms + var self = this; + rAF(function() { + if(self.scrollerStyle[durationProp] === '0.0001ms') { + self.scrollerStyle[durationProp] = '0s'; + } + }); + } + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].transitionTime(time); + } + } + + +// INSERT POINT: _transitionTime + + }, + + _transitionTimingFunction: function (easing) { + this.scrollerStyle[utils.style.transitionTimingFunction] = easing; + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].transitionTimingFunction(easing); + } + } + + +// INSERT POINT: _transitionTimingFunction + + }, + + _translate: function (x, y) { + if ( this.options.useTransform ) { + +/* REPLACE START: _translate */ + + this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ; + +/* REPLACE END: _translate */ + + } else { + x = Math.round(x); + y = Math.round(y); + this.scrollerStyle.left = x + 'px'; + this.scrollerStyle.top = y + 'px'; + } + + this.x = x; + this.y = y; + + + if ( this.indicators ) { + for ( var i = this.indicators.length; i--; ) { + this.indicators[i].updatePosition(); + } + } + + +// INSERT POINT: _translate + + }, + + _initEvents: function (remove) { + var eventType = remove ? utils.removeEvent : utils.addEvent, + target = this.options.bindToWrapper ? this.wrapper : window; + + eventType(window, 'orientationchange', this); + eventType(window, 'resize', this); + + if ( this.options.click ) { + eventType(this.wrapper, 'click', this, true); + } + + if ( !this.options.disableMouse ) { + eventType(this.wrapper, 'mousedown', this); + eventType(target, 'mousemove', this); + eventType(target, 'mousecancel', this); + eventType(target, 'mouseup', this); + } + + if ( utils.hasPointer && !this.options.disablePointer ) { + eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); + eventType(target, utils.prefixPointerEvent('pointermove'), this); + eventType(target, utils.prefixPointerEvent('pointercancel'), this); + eventType(target, utils.prefixPointerEvent('pointerup'), this); + } + + if ( utils.hasTouch && !this.options.disableTouch ) { + eventType(this.wrapper, 'touchstart', this); + eventType(target, 'touchmove', this); + eventType(target, 'touchcancel', this); + eventType(target, 'touchend', this); + } + + eventType(this.scroller, 'transitionend', this); + eventType(this.scroller, 'webkitTransitionEnd', this); + eventType(this.scroller, 'oTransitionEnd', this); + eventType(this.scroller, 'MSTransitionEnd', this); + }, + + getComputedPosition: function () { + var matrix = window.getComputedStyle(this.scroller, null), + x, y; + + if ( this.options.useTransform ) { + matrix = matrix[utils.style.transform].split(')')[0].split(', '); + x = +(matrix[12] || matrix[4]); + y = +(matrix[13] || matrix[5]); + } else { + x = +matrix.left.replace(/[^-\d.]/g, ''); + y = +matrix.top.replace(/[^-\d.]/g, ''); + } + + return { x: x, y: y }; + }, + _initIndicators: function () { + var interactive = this.options.interactiveScrollbars, + customStyle = typeof this.options.scrollbars != 'string', + indicators = [], + indicator; + + var that = this; + + this.indicators = []; + + if ( this.options.scrollbars ) { + // Vertical scrollbar + if ( this.options.scrollY ) { + indicator = { + el: createDefaultScrollbar('v', interactive, this.options.scrollbars), + interactive: interactive, + defaultScrollbars: true, + customStyle: customStyle, + resize: this.options.resizeScrollbars, + shrink: this.options.shrinkScrollbars, + fade: this.options.fadeScrollbars, + listenX: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + + // Horizontal scrollbar + if ( this.options.scrollX ) { + indicator = { + el: createDefaultScrollbar('h', interactive, this.options.scrollbars), + interactive: interactive, + defaultScrollbars: true, + customStyle: customStyle, + resize: this.options.resizeScrollbars, + shrink: this.options.shrinkScrollbars, + fade: this.options.fadeScrollbars, + listenY: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + } + + if ( this.options.indicators ) { + // TODO: check concat compatibility + indicators = indicators.concat(this.options.indicators); + } + + for ( var i = indicators.length; i--; ) { + this.indicators.push( new Indicator(this, indicators[i]) ); + } + + // TODO: check if we can use array.map (wide compatibility and performance issues) + function _indicatorsMap (fn) { + if (that.indicators) { + for ( var i = that.indicators.length; i--; ) { + fn.call(that.indicators[i]); + } + } + } + + if ( this.options.fadeScrollbars ) { + this.on('scrollEnd', function () { + _indicatorsMap(function () { + this.fade(); + }); + }); + + this.on('scrollCancel', function () { + _indicatorsMap(function () { + this.fade(); + }); + }); + + this.on('scrollStart', function () { + _indicatorsMap(function () { + this.fade(1); + }); + }); + + this.on('beforeScrollStart', function () { + _indicatorsMap(function () { + this.fade(1, true); + }); + }); + } + + + this.on('refresh', function () { + _indicatorsMap(function () { + this.refresh(); + }); + }); + + this.on('destroy', function () { + _indicatorsMap(function () { + this.destroy(); + }); + + delete this.indicators; + }); + }, + + _initWheel: function () { + utils.addEvent(this.wrapper, 'wheel', this); + utils.addEvent(this.wrapper, 'mousewheel', this); + utils.addEvent(this.wrapper, 'DOMMouseScroll', this); + + this.on('destroy', function () { + clearTimeout(this.wheelTimeout); + this.wheelTimeout = null; + utils.removeEvent(this.wrapper, 'wheel', this); + utils.removeEvent(this.wrapper, 'mousewheel', this); + utils.removeEvent(this.wrapper, 'DOMMouseScroll', this); + }); + }, + + _wheel: function (e) { + if ( !this.enabled ) { + return; + } + + e.preventDefault(); + + var wheelDeltaX, wheelDeltaY, + newX, newY, + that = this; + + if ( this.wheelTimeout === undefined ) { + that._execEvent('scrollStart'); + } + + // Execute the scrollEnd event after 400ms the wheel stopped scrolling + clearTimeout(this.wheelTimeout); + this.wheelTimeout = setTimeout(function () { + if(!that.options.snap) { + that._execEvent('scrollEnd'); + } + that.wheelTimeout = undefined; + }, 400); + + if ( 'deltaX' in e ) { + if (e.deltaMode === 1) { + wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed; + wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed; + } else { + wheelDeltaX = -e.deltaX; + wheelDeltaY = -e.deltaY; + } + } else if ( 'wheelDeltaX' in e ) { + wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed; + wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed; + } else if ( 'wheelDelta' in e ) { + wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed; + } else if ( 'detail' in e ) { + wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed; + } else { + return; + } + + wheelDeltaX *= this.options.invertWheelDirection; + wheelDeltaY *= this.options.invertWheelDirection; + + if ( !this.hasVerticalScroll ) { + wheelDeltaX = wheelDeltaY; + wheelDeltaY = 0; + } + + if ( this.options.snap ) { + newX = this.currentPage.pageX; + newY = this.currentPage.pageY; + + if ( wheelDeltaX > 0 ) { + newX--; + } else if ( wheelDeltaX < 0 ) { + newX++; + } + + if ( wheelDeltaY > 0 ) { + newY--; + } else if ( wheelDeltaY < 0 ) { + newY++; + } + + this.goToPage(newX, newY); + + return; + } + + newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0); + newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0); + + this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0; + this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0; + + if ( newX > 0 ) { + newX = 0; + } else if ( newX < this.maxScrollX ) { + newX = this.maxScrollX; + } + + if ( newY > 0 ) { + newY = 0; + } else if ( newY < this.maxScrollY ) { + newY = this.maxScrollY; + } + + this.scrollTo(newX, newY, 0); + +// INSERT POINT: _wheel + }, + + _initSnap: function () { + this.currentPage = {}; + + if ( typeof this.options.snap == 'string' ) { + this.options.snap = this.scroller.querySelectorAll(this.options.snap); + } + + this.on('refresh', function () { + var i = 0, l, + m = 0, n, + cx, cy, + x = 0, y, + stepX = this.options.snapStepX || this.wrapperWidth, + stepY = this.options.snapStepY || this.wrapperHeight, + el, + rect; + + this.pages = []; + + if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) { + return; + } + + if ( this.options.snap === true ) { + cx = Math.round( stepX / 2 ); + cy = Math.round( stepY / 2 ); + + while ( x > -this.scrollerWidth ) { + this.pages[i] = []; + l = 0; + y = 0; + + while ( y > -this.scrollerHeight ) { + this.pages[i][l] = { + x: Math.max(x, this.maxScrollX), + y: Math.max(y, this.maxScrollY), + width: stepX, + height: stepY, + cx: x - cx, + cy: y - cy + }; + + y -= stepY; + l++; + } + + x -= stepX; + i++; + } + } else { + el = this.options.snap; + l = el.length; + n = -1; + + for ( ; i < l; i++ ) { + rect = utils.getRect(el[i]); + if ( i === 0 || rect.left <= utils.getRect(el[i-1]).left ) { + m = 0; + n++; + } + + if ( !this.pages[m] ) { + this.pages[m] = []; + } + + x = Math.max(-rect.left, this.maxScrollX); + y = Math.max(-rect.top, this.maxScrollY); + cx = x - Math.round(rect.width / 2); + cy = y - Math.round(rect.height / 2); + + this.pages[m][n] = { + x: x, + y: y, + width: rect.width, + height: rect.height, + cx: cx, + cy: cy + }; + + if ( x > this.maxScrollX ) { + m++; + } + } + } + + this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); + + // Update snap threshold if needed + if ( this.options.snapThreshold % 1 === 0 ) { + this.snapThresholdX = this.options.snapThreshold; + this.snapThresholdY = this.options.snapThreshold; + } else { + this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold); + this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold); + } + }); + + this.on('flick', function () { + var time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(this.x - this.startX), 1000), + Math.min(Math.abs(this.y - this.startY), 1000) + ), 300); + + this.goToPage( + this.currentPage.pageX + this.directionX, + this.currentPage.pageY + this.directionY, + time + ); + }); + }, + + _nearestSnap: function (x, y) { + if ( !this.pages.length ) { + return { x: 0, y: 0, pageX: 0, pageY: 0 }; + } + + var i = 0, + l = this.pages.length, + m = 0; + + // Check if we exceeded the snap threshold + if ( Math.abs(x - this.absStartX) < this.snapThresholdX && + Math.abs(y - this.absStartY) < this.snapThresholdY ) { + return this.currentPage; + } + + if ( x > 0 ) { + x = 0; + } else if ( x < this.maxScrollX ) { + x = this.maxScrollX; + } + + if ( y > 0 ) { + y = 0; + } else if ( y < this.maxScrollY ) { + y = this.maxScrollY; + } + + for ( ; i < l; i++ ) { + if ( x >= this.pages[i][0].cx ) { + x = this.pages[i][0].x; + break; + } + } + + l = this.pages[i].length; + + for ( ; m < l; m++ ) { + if ( y >= this.pages[0][m].cy ) { + y = this.pages[0][m].y; + break; + } + } + + if ( i == this.currentPage.pageX ) { + i += this.directionX; + + if ( i < 0 ) { + i = 0; + } else if ( i >= this.pages.length ) { + i = this.pages.length - 1; + } + + x = this.pages[i][0].x; + } + + if ( m == this.currentPage.pageY ) { + m += this.directionY; + + if ( m < 0 ) { + m = 0; + } else if ( m >= this.pages[0].length ) { + m = this.pages[0].length - 1; + } + + y = this.pages[0][m].y; + } + + return { + x: x, + y: y, + pageX: i, + pageY: m + }; + }, + + goToPage: function (x, y, time, easing) { + easing = easing || this.options.bounceEasing; + + if ( x >= this.pages.length ) { + x = this.pages.length - 1; + } else if ( x < 0 ) { + x = 0; + } + + if ( y >= this.pages[x].length ) { + y = this.pages[x].length - 1; + } else if ( y < 0 ) { + y = 0; + } + + var posX = this.pages[x][y].x, + posY = this.pages[x][y].y; + + time = time === undefined ? this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(posX - this.x), 1000), + Math.min(Math.abs(posY - this.y), 1000) + ), 300) : time; + + this.currentPage = { + x: posX, + y: posY, + pageX: x, + pageY: y + }; + + this.scrollTo(posX, posY, time, easing); + }, + + next: function (time, easing) { + var x = this.currentPage.pageX, + y = this.currentPage.pageY; + + x++; + + if ( x >= this.pages.length && this.hasVerticalScroll ) { + x = 0; + y++; + } + + this.goToPage(x, y, time, easing); + }, + + prev: function (time, easing) { + var x = this.currentPage.pageX, + y = this.currentPage.pageY; + + x--; + + if ( x < 0 && this.hasVerticalScroll ) { + x = 0; + y--; + } + + this.goToPage(x, y, time, easing); + }, + + _initKeys: function (e) { + // default key bindings + var keys = { + pageUp: 33, + pageDown: 34, + end: 35, + home: 36, + left: 37, + up: 38, + right: 39, + down: 40 + }; + var i; + + // if you give me characters I give you keycode + if ( typeof this.options.keyBindings == 'object' ) { + for ( i in this.options.keyBindings ) { + if ( typeof this.options.keyBindings[i] == 'string' ) { + this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0); + } + } + } else { + this.options.keyBindings = {}; + } + + for ( i in keys ) { + this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i]; + } + + utils.addEvent(window, 'keydown', this); + + this.on('destroy', function () { + utils.removeEvent(window, 'keydown', this); + }); + }, + + _key: function (e) { + if ( !this.enabled ) { + return; + } + + var snap = this.options.snap, // we are using this alot, better to cache it + newX = snap ? this.currentPage.pageX : this.x, + newY = snap ? this.currentPage.pageY : this.y, + now = utils.getTime(), + prevTime = this.keyTime || 0, + acceleration = 0.250, + pos; + + if ( this.options.useTransition && this.isInTransition ) { + pos = this.getComputedPosition(); + + this._translate(Math.round(pos.x), Math.round(pos.y)); + this.isInTransition = false; + } + + this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0; + + switch ( e.keyCode ) { + case this.options.keyBindings.pageUp: + if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { + newX += snap ? 1 : this.wrapperWidth; + } else { + newY += snap ? 1 : this.wrapperHeight; + } + break; + case this.options.keyBindings.pageDown: + if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { + newX -= snap ? 1 : this.wrapperWidth; + } else { + newY -= snap ? 1 : this.wrapperHeight; + } + break; + case this.options.keyBindings.end: + newX = snap ? this.pages.length-1 : this.maxScrollX; + newY = snap ? this.pages[0].length-1 : this.maxScrollY; + break; + case this.options.keyBindings.home: + newX = 0; + newY = 0; + break; + case this.options.keyBindings.left: + newX += snap ? -1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.up: + newY += snap ? 1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.right: + newX -= snap ? -1 : 5 + this.keyAcceleration>>0; + break; + case this.options.keyBindings.down: + newY -= snap ? 1 : 5 + this.keyAcceleration>>0; + break; + default: + return; + } + + if ( snap ) { + this.goToPage(newX, newY); + return; + } + + if ( newX > 0 ) { + newX = 0; + this.keyAcceleration = 0; + } else if ( newX < this.maxScrollX ) { + newX = this.maxScrollX; + this.keyAcceleration = 0; + } + + if ( newY > 0 ) { + newY = 0; + this.keyAcceleration = 0; + } else if ( newY < this.maxScrollY ) { + newY = this.maxScrollY; + this.keyAcceleration = 0; + } + + this.scrollTo(newX, newY, 0); + + this.keyTime = now; + }, + + _animate: function (destX, destY, duration, easingFn) { + var that = this, + startX = this.x, + startY = this.y, + startTime = utils.getTime(), + destTime = startTime + duration; + + function step () { + var now = utils.getTime(), + newX, newY, + easing; + + if ( now >= destTime ) { + that.isAnimating = false; + that._translate(destX, destY); + + if ( !that.resetPosition(that.options.bounceTime) ) { + that._execEvent('scrollEnd'); + } + + return; + } + + now = ( now - startTime ) / duration; + easing = easingFn(now); + newX = ( destX - startX ) * easing + startX; + newY = ( destY - startY ) * easing + startY; + that._translate(newX, newY); + + if ( that.isAnimating ) { + rAF(step); + } + } + + this.isAnimating = true; + step(); + }, + handleEvent: function (e) { + switch ( e.type ) { + case 'touchstart': + case 'pointerdown': + case 'MSPointerDown': + case 'mousedown': + this._start(e); + break; + case 'touchmove': + case 'pointermove': + case 'MSPointerMove': + case 'mousemove': + this._move(e); + break; + case 'touchend': + case 'pointerup': + case 'MSPointerUp': + case 'mouseup': + case 'touchcancel': + case 'pointercancel': + case 'MSPointerCancel': + case 'mousecancel': + this._end(e); + break; + case 'orientationchange': + case 'resize': + this._resize(); + break; + case 'transitionend': + case 'webkitTransitionEnd': + case 'oTransitionEnd': + case 'MSTransitionEnd': + this._transitionEnd(e); + break; + case 'wheel': + case 'DOMMouseScroll': + case 'mousewheel': + this._wheel(e); + break; + case 'keydown': + this._key(e); + break; + case 'click': + if ( this.enabled && !e._constructed ) { + e.preventDefault(); + e.stopPropagation(); + } + break; + } + } +}; +function createDefaultScrollbar (direction, interactive, type) { + var scrollbar = document.createElement('div'), + indicator = document.createElement('div'); + + if ( type === true ) { + scrollbar.style.cssText = 'position:absolute;z-index:9999'; + indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px'; + } + + indicator.className = 'iScrollIndicator'; + + if ( direction == 'h' ) { + if ( type === true ) { + scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0'; + indicator.style.height = '100%'; + } + scrollbar.className = 'iScrollHorizontalScrollbar'; + } else { + if ( type === true ) { + scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px'; + indicator.style.width = '100%'; + } + scrollbar.className = 'iScrollVerticalScrollbar'; + } + + scrollbar.style.cssText += ';overflow:hidden'; + + if ( !interactive ) { + scrollbar.style.pointerEvents = 'none'; + } + + scrollbar.appendChild(indicator); + + return scrollbar; +} + +function Indicator (scroller, options) { + this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el; + this.wrapperStyle = this.wrapper.style; + this.indicator = this.wrapper.children[0]; + this.indicatorStyle = this.indicator.style; + this.scroller = scroller; + + this.options = { + listenX: true, + listenY: true, + interactive: false, + resize: true, + defaultScrollbars: false, + shrink: false, + fade: false, + speedRatioX: 0, + speedRatioY: 0 + }; + + for ( var i in options ) { + this.options[i] = options[i]; + } + + this.sizeRatioX = 1; + this.sizeRatioY = 1; + this.maxPosX = 0; + this.maxPosY = 0; + + if ( this.options.interactive ) { + if ( !this.options.disableTouch ) { + utils.addEvent(this.indicator, 'touchstart', this); + utils.addEvent(window, 'touchend', this); + } + if ( !this.options.disablePointer ) { + utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); + } + if ( !this.options.disableMouse ) { + utils.addEvent(this.indicator, 'mousedown', this); + utils.addEvent(window, 'mouseup', this); + } + } + + if ( this.options.fade ) { + this.wrapperStyle[utils.style.transform] = this.scroller.translateZ; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms'; + // remove 0.0001ms + var self = this; + if(utils.isBadAndroid) { + rAF(function() { + if(self.wrapperStyle[durationProp] === '0.0001ms') { + self.wrapperStyle[durationProp] = '0s'; + } + }); + } + this.wrapperStyle.opacity = '0'; + } +} + +Indicator.prototype = { + handleEvent: function (e) { + switch ( e.type ) { + case 'touchstart': + case 'pointerdown': + case 'MSPointerDown': + case 'mousedown': + this._start(e); + break; + case 'touchmove': + case 'pointermove': + case 'MSPointerMove': + case 'mousemove': + this._move(e); + break; + case 'touchend': + case 'pointerup': + case 'MSPointerUp': + case 'mouseup': + case 'touchcancel': + case 'pointercancel': + case 'MSPointerCancel': + case 'mousecancel': + this._end(e); + break; + } + }, + + destroy: function () { + if ( this.options.fadeScrollbars ) { + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + } + if ( this.options.interactive ) { + utils.removeEvent(this.indicator, 'touchstart', this); + utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); + utils.removeEvent(this.indicator, 'mousedown', this); + + utils.removeEvent(window, 'touchmove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); + utils.removeEvent(window, 'mousemove', this); + + utils.removeEvent(window, 'touchend', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); + utils.removeEvent(window, 'mouseup', this); + } + + if ( this.options.defaultScrollbars && this.wrapper.parentNode ) { + this.wrapper.parentNode.removeChild(this.wrapper); + } + }, + + _start: function (e) { + var point = e.touches ? e.touches[0] : e; + + e.preventDefault(); + e.stopPropagation(); + + this.transitionTime(); + + this.initiated = true; + this.moved = false; + this.lastPointX = point.pageX; + this.lastPointY = point.pageY; + + this.startTime = utils.getTime(); + + if ( !this.options.disableTouch ) { + utils.addEvent(window, 'touchmove', this); + } + if ( !this.options.disablePointer ) { + utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); + } + if ( !this.options.disableMouse ) { + utils.addEvent(window, 'mousemove', this); + } + + this.scroller._execEvent('beforeScrollStart'); + }, + + _move: function (e) { + var point = e.touches ? e.touches[0] : e, + deltaX, deltaY, + newX, newY, + timestamp = utils.getTime(); + + if ( !this.moved ) { + this.scroller._execEvent('scrollStart'); + } + + this.moved = true; + + deltaX = point.pageX - this.lastPointX; + this.lastPointX = point.pageX; + + deltaY = point.pageY - this.lastPointY; + this.lastPointY = point.pageY; + + newX = this.x + deltaX; + newY = this.y + deltaY; + + this._pos(newX, newY); + +// INSERT POINT: indicator._move + + e.preventDefault(); + e.stopPropagation(); + }, + + _end: function (e) { + if ( !this.initiated ) { + return; + } + + this.initiated = false; + + e.preventDefault(); + e.stopPropagation(); + + utils.removeEvent(window, 'touchmove', this); + utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); + utils.removeEvent(window, 'mousemove', this); + + if ( this.scroller.options.snap ) { + var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y); + + var time = this.options.snapSpeed || Math.max( + Math.max( + Math.min(Math.abs(this.scroller.x - snap.x), 1000), + Math.min(Math.abs(this.scroller.y - snap.y), 1000) + ), 300); + + if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) { + this.scroller.directionX = 0; + this.scroller.directionY = 0; + this.scroller.currentPage = snap; + this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing); + } + } + + if ( this.moved ) { + this.scroller._execEvent('scrollEnd'); + } + }, + + transitionTime: function (time) { + time = time || 0; + var durationProp = utils.style.transitionDuration; + if(!durationProp) { + return; + } + + this.indicatorStyle[durationProp] = time + 'ms'; + + if ( !time && utils.isBadAndroid ) { + this.indicatorStyle[durationProp] = '0.0001ms'; + // remove 0.0001ms + var self = this; + rAF(function() { + if(self.indicatorStyle[durationProp] === '0.0001ms') { + self.indicatorStyle[durationProp] = '0s'; + } + }); + } + }, + + transitionTimingFunction: function (easing) { + this.indicatorStyle[utils.style.transitionTimingFunction] = easing; + }, + + refresh: function () { + this.transitionTime(); + + if ( this.options.listenX && !this.options.listenY ) { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none'; + } else if ( this.options.listenY && !this.options.listenX ) { + this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none'; + } else { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none'; + } + + if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) { + utils.addClass(this.wrapper, 'iScrollBothScrollbars'); + utils.removeClass(this.wrapper, 'iScrollLoneScrollbar'); + + if ( this.options.defaultScrollbars && this.options.customStyle ) { + if ( this.options.listenX ) { + this.wrapper.style.right = '8px'; + } else { + this.wrapper.style.bottom = '8px'; + } + } + } else { + utils.removeClass(this.wrapper, 'iScrollBothScrollbars'); + utils.addClass(this.wrapper, 'iScrollLoneScrollbar'); + + if ( this.options.defaultScrollbars && this.options.customStyle ) { + if ( this.options.listenX ) { + this.wrapper.style.right = '2px'; + } else { + this.wrapper.style.bottom = '2px'; + } + } + } + + utils.getRect(this.wrapper); // force refresh + + if ( this.options.listenX ) { + this.wrapperWidth = this.wrapper.clientWidth; + if ( this.options.resize ) { + this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8); + this.indicatorStyle.width = this.indicatorWidth + 'px'; + } else { + this.indicatorWidth = this.indicator.clientWidth; + } + + this.maxPosX = this.wrapperWidth - this.indicatorWidth; + + if ( this.options.shrink == 'clip' ) { + this.minBoundaryX = -this.indicatorWidth + 8; + this.maxBoundaryX = this.wrapperWidth - 8; + } else { + this.minBoundaryX = 0; + this.maxBoundaryX = this.maxPosX; + } + + this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX)); + } + + if ( this.options.listenY ) { + this.wrapperHeight = this.wrapper.clientHeight; + if ( this.options.resize ) { + this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8); + this.indicatorStyle.height = this.indicatorHeight + 'px'; + } else { + this.indicatorHeight = this.indicator.clientHeight; + } + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + + if ( this.options.shrink == 'clip' ) { + this.minBoundaryY = -this.indicatorHeight + 8; + this.maxBoundaryY = this.wrapperHeight - 8; + } else { + this.minBoundaryY = 0; + this.maxBoundaryY = this.maxPosY; + } + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY)); + } + + this.updatePosition(); + }, + + updatePosition: function () { + var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0, + y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0; + + if ( !this.options.ignoreBoundaries ) { + if ( x < this.minBoundaryX ) { + if ( this.options.shrink == 'scale' ) { + this.width = Math.max(this.indicatorWidth + x, 8); + this.indicatorStyle.width = this.width + 'px'; + } + x = this.minBoundaryX; + } else if ( x > this.maxBoundaryX ) { + if ( this.options.shrink == 'scale' ) { + this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8); + this.indicatorStyle.width = this.width + 'px'; + x = this.maxPosX + this.indicatorWidth - this.width; + } else { + x = this.maxBoundaryX; + } + } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) { + this.width = this.indicatorWidth; + this.indicatorStyle.width = this.width + 'px'; + } + + if ( y < this.minBoundaryY ) { + if ( this.options.shrink == 'scale' ) { + this.height = Math.max(this.indicatorHeight + y * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + } + y = this.minBoundaryY; + } else if ( y > this.maxBoundaryY ) { + if ( this.options.shrink == 'scale' ) { + this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + y = this.maxPosY + this.indicatorHeight - this.height; + } else { + y = this.maxBoundaryY; + } + } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) { + this.height = this.indicatorHeight; + this.indicatorStyle.height = this.height + 'px'; + } + } + + this.x = x; + this.y = y; + + if ( this.scroller.options.useTransform ) { + this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ; + } else { + this.indicatorStyle.left = x + 'px'; + this.indicatorStyle.top = y + 'px'; + } + }, + + _pos: function (x, y) { + if ( x < 0 ) { + x = 0; + } else if ( x > this.maxPosX ) { + x = this.maxPosX; + } + + if ( y < 0 ) { + y = 0; + } else if ( y > this.maxPosY ) { + y = this.maxPosY; + } + + x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x; + y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y; + + this.scroller.scrollTo(x, y); + }, + + fade: function (val, hold) { + if ( hold && !this.visible ) { + return; + } + + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + + var time = val ? 250 : 500, + delay = val ? 0 : 300; + + val = val ? '1' : '0'; + + this.wrapperStyle[utils.style.transitionDuration] = time + 'ms'; + + this.fadeTimeout = setTimeout((function (val) { + this.wrapperStyle.opacity = val; + this.visible = +val; + }).bind(this, val), delay); + } +}; + +IScroll.utils = utils; + +if ( typeof module != 'undefined' && module.exports ) { + module.exports = IScroll; +} else if ( typeof define == 'function' && define.amd ) { + define( function () { return IScroll; } ); +} else { + window.IScroll = IScroll; +} + +})(window, document, Math); diff --git a/view/molistar/common/js/jQueryExtend.js b/view/molistar/common/js/jQueryExtend.js new file mode 100644 index 00000000..5cd6a514 --- /dev/null +++ b/view/molistar/common/js/jQueryExtend.js @@ -0,0 +1,22 @@ +/** + * Created by raymondjack on 2019/1/18. + * jQuery extends function + */ +(function ($) { + jQuery.fn.extend({ + addEvent: function (type, handle, bool) { + var el,thisLen = this.length; + bool = bool ? bool : false; + if(thisLen == 1){ + el = this[0]; + el.addEventListener ? el.addEventListener(type,handle,bool):el.attachEvent('on' + type,handle); + }else{ + for(var i = 0;i < thisLen;i++){ + el = this[i]; + el.addEventListener ? el.addEventListener(type, handle, bool ): + el.attachEvent('on'+type, handle); + } + } + } + }); +})(jQuery); \ No newline at end of file diff --git a/view/molistar/common/js/jQueryRotate.js b/view/molistar/common/js/jQueryRotate.js new file mode 100644 index 00000000..bcea68bc --- /dev/null +++ b/view/molistar/common/js/jQueryRotate.js @@ -0,0 +1,339 @@ +// VERSION: 2.3 LAST UPDATE: 11.07.2013 +/* + * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php + * + * Made by Wilq32, wilq32@gmail.com, Wroclaw, Poland, 01.2009 + * Website: http://code.google.com/p/jqueryrotate/ + */ + +(function($) { + var supportedCSS,supportedCSSOrigin, styles=document.getElementsByTagName("head")[0].style,toCheck="transformProperty WebkitTransform OTransform msTransform MozTransform".split(" "); + for (var a = 0; a < toCheck.length; a++) if (styles[toCheck[a]] !== undefined) { supportedCSS = toCheck[a]; } + if (supportedCSS) { + supportedCSSOrigin = supportedCSS.replace(/[tT]ransform/,"TransformOrigin"); + if (supportedCSSOrigin[0] == "T") supportedCSSOrigin[0] = "t"; + } + + // Bad eval to preven google closure to remove it from code o_O + eval('IE = "v"=="\v"'); + + jQuery.fn.extend({ + rotate:function(parameters) + { + if (this.length===0||typeof parameters=="undefined") return; + if (typeof parameters=="number") parameters={angle:parameters}; + var returned=[]; + for (var i=0,i0=this.length;i this._parameters.duration; + + // TODO: Bug for animatedGif for static rotation ? (to test) + if (checkEnd && !this._parameters.animatedGif) + { + clearTimeout(this._timer); + } + else + { + if (this._canvas||this._vimage||this._img) { + var angle = this._parameters.easing(0, actualTime - this._animateStartTime, this._animateStartAngle, this._parameters.animateTo - this._animateStartAngle, this._parameters.duration); + this._rotate((~~(angle*10))/10); + } + if (this._parameters.step) { + this._parameters.step(this._angle); + } + var self = this; + this._timer = setTimeout(function() + { + self._animate.call(self); + }, 10); + } + + // To fix Bug that prevents using recursive function in callback I moved this function to back + if (this._parameters.callback && checkEnd){ + this._angle = this._parameters.animateTo; + this._rotate(this._angle); + this._parameters.callback.call(this._rootObj); + } + }, + + _rotate : (function() + { + var rad = Math.PI/180; + if (IE) + return function(angle) + { + this._angle = angle; + this._container.style.rotation=(angle%360)+"deg"; + this._vimage.style.top = -(this._rotationCenterY - this._imgHeight/2) + "px"; + this._vimage.style.left = -(this._rotationCenterX - this._imgWidth/2) + "px"; + this._container.style.top = this._rotationCenterY - this._imgHeight/2 + "px"; + this._container.style.left = this._rotationCenterX - this._imgWidth/2 + "px"; + + } + else if (supportedCSS) + return function(angle){ + this._angle = angle; + this._img.style[supportedCSS]="rotate("+(angle%360)+"deg)"; + this._img.style[supportedCSSOrigin]=this._parameters.center.join(" "); + } + else + return function(angle) + { + this._angle = angle; + angle=(angle%360)* rad; + // clear canvas + this._canvas.width = this._width;//+this._widthAdd; + this._canvas.height = this._height;//+this._heightAdd; + + // REMEMBER: all drawings are read from backwards.. so first function is translate, then rotate, then translate, translate.. + this._cnv.translate(this._imgWidth*this._aspectW,this._imgHeight*this._aspectH); // at least center image on screen + this._cnv.translate(this._rotationCenterX,this._rotationCenterY); // we move image back to its orginal + this._cnv.rotate(angle); // rotate image + this._cnv.translate(-this._rotationCenterX,-this._rotationCenterY); // move image to its center, so we can rotate around its center + this._cnv.scale(this._aspectW,this._aspectH); // SCALE - if needed ;) + this._cnv.drawImage(this._img, 0, 0); // First - we draw image + } + + })() + } + + if (IE) + { + Wilq32.PhotoEffect.prototype.createVMLNode=(function(){ + document.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)"); + try { + !document.namespaces.rvml && document.namespaces.add("rvml", "urn:schemas-microsoft-com:vml"); + return function (tagName) { + return document.createElement(''); + }; + } catch (e) { + return function (tagName) { + return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'); + }; + } + })(); + } + +})(jQuery); diff --git a/view/molistar/common/js/jquery-1.8.3.min.js b/view/molistar/common/js/jquery-1.8.3.min.js new file mode 100644 index 00000000..38837795 --- /dev/null +++ b/view/molistar/common/js/jquery-1.8.3.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.3 jquery.com | jquery.org/license */ +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write(""),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t
          a",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="
          t
          ",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="
          ",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;ti.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="
          ",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="

          ",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t0)for(i=r;i=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*\s*$/g,Nt={option:[1,""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X
          ","
          "]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1>");try{for(;r1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]===""&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("
          ").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); \ No newline at end of file diff --git a/view/molistar/common/js/jquery-3.2.1.min.js b/view/molistar/common/js/jquery-3.2.1.min.js new file mode 100644 index 00000000..644d35e2 --- /dev/null +++ b/view/molistar/common/js/jquery-3.2.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"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){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=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=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(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 qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.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),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},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(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),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){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.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?I(k,a)-I(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?I(k,a)-I(k,b):0;if(e===f)return la(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?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$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 ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.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},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.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=ga.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=ga.selectors={cacheLength:50,createPseudo:ia,match:V,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(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===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]||ga.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]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.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(_,aa).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("(^|"+K+")"+a+"("+K+"|$)"))&&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=ga.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(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},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()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(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:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).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:oa(!1),disabled:oa(!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 X.test(a.nodeName)},input:function(a){return W.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:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(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}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,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]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.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 r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.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||b||(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};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.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 W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"
          ","
          "],col:[2,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.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),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(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)ya(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=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,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),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==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,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.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 Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(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&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(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&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + +
          +

          一、什么是交友大厅?

          +

          交友大厅是一个可以让全部好友交流的中心,用户可以在这里发布广播、@他人、快捷送礼、所有用户都会看得见。

          +

          1.需要收费吗?

          +

          这个是一个免费发布交友广播需求的地方。

          +

          2.如何发送广播?

          +

          达到指定等级的朋友才可以发送消息呢。

          +

          3.发送间隔多少?

          +

          达到指定等级的用户才可以发言,发送间隔为5秒。

          +

          4.不允许发送什么内容?

          +

          涉黄涉政、商业广告、骂架、一切影响广播交友正常运营的广告等, 一经发现将根据违规程度给予封号、封IP、禁言处理。

          +

          5.快捷送礼与互动

          +

          点击广播列表他人头像,即可出现快捷窗口,快捷窗口可进行如下便捷操作:

          +

          1、给对方打赏礼物

          +

          2、举报对方

          +

          3、点击资料卡前往对方主页

          +

          4、赠送装扮给对方

          +

          6.举报有奖

          +

          大厅内有以下行为的用户将被禁封

          +

          1、上传色情、病毒、暴力、政治、广告等违规信息

          +

          2、恶意刷屏,扰乱公共秩序,不听劝且严重者

          +

          3、人身攻击、地域歧视、言论不雅,严重者

          +

          4、被举报,经官方核实,情节严重者

          +

          5、任何途径盗刷平台金币、鉆石等情节恶劣严重者,官方将移交公安机关处理

          +

          6、欢迎大家相互监督,举报成功经官方核实,官方会有一定奖励。

          + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + + + + + + + diff --git a/view/molistar/modules/inform/images/blank.png b/view/molistar/modules/inform/images/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..0da1504f0794ea9452f99e384d36356ca52a4192 GIT binary patch literal 74886 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

          73ldvMfkfr!v0J6eK2K7wIm0*7s4R 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

          3Y?r2d$s-rw3|3R2Cz0 zYt!O?dIyfad5DiAT)k9goLA{-a=_9G5!P@2tPm#GSI$-OMZL3T%?ximWo=o#{$Q;6 zyn@@RD6l6&2IaX~6QT_?Kj`7^r&w(hj94VuFzNR^uLU7xM)oD!z*G-iPv_qsL&B&7 z>a@JT;;m^YY;Yp2#Zb%#Pj(UOnCTf?z8dZ(IJ{1&Rw%)OeA3A9mkDMT{f=P#CMB$D{N9r=_1v$n$zH@1?qMQ!kQne?V`K5O>Upb$HVVYmluJ zh4SeWQ>YfR(5-jA)Nc}wd~HT^_^tHJ$y$d_u1PcZGTaxS#{hC7Tns>ak6#t? zQ9nX-Whjk2gdBxxawUoC`N}(2iXz!GGPKQZ;(Y&Zk^S=<6gxX;S+~ARvzPu|$x?F+ z9PxoF-$r)ZuG@W!L>zyXRU6;$8OnHc1E2KzYvhs_N47>Q>|CkVcTLqCSglQ2XGJ?1 z#K!~X0q?esF2vJhYLW1w%aM}S1}kZyV^Z7z2^4iEKWp88^S^I)0lpc%EiE#O>d~Kf z1=SEHvyec^y4IR2q8m*W^6&jf)5wPf#M`BRxq7Pm9VfPRXXObU^@9qU-%x}jf*V7u z998$hjAlua)GxQv#xDi|GNBs<&vMkrj_p(;rnU*;i;5o_g8VxtIpSSveaCJ(6xs?( zf%2(oyNn>w8|G(b>|ldZ<_Q@$rA9bfOBEk|nefieVR8a6uVQ|G{QM-cyz-t0(xAig z!;kY)q6w@?$+eCph~V6x$z}x@VuJlFh#^?*zkzX-iWqQ|3wO6|U})xd9MUnLYVI`6 z{B~I__~AEVjgrMkn&`leSHk9xMX;__P?kwj2sAlBXd=JOIxkemnoPrl8|=Jx>< zgwH?Iu4l?(ogN6-ryKwFiTm{Df9IVb*V#_4#0hw{hKv}hQ5`*+XcfFeCvkxma}^+C z+Wq?h0AHFBo^|ql@UH|*X>NyQ^H!|FH!C+%vq~Ky%zJdO?MBAzy@(H&ansbuB*-<7 zd(N;@+QSNaZzQqh>)Wn2tfPNoNugr^KK%7g)#0J8d>&WUq0vP(iMlQ$^Z#wwz1DYh zl8SfWCLnk;B0S4NQ{p(6IqMM%G(H%mN?9Dmzo#lQ^O9-8jo0#vp}R5=$uA9ly=q^v zx_QAT1`*?fRkuzLHmesuCF@<`dOSC)`bkZGCQ#Bc(|37RBg@Cb?e$D5ZXJHZuilLS z6rlhxY~sB1Sul9=`kK7JZgbo-)gB@0k?hDu>@3aWke?ZUlhD?`7RaoqS=Q#^dvq1J zjse^uat<8UM04F14h1sP(}9OaPuYj}rrt4dqDf5@(yrvQtw83mk2L zxO${)LXT%OX1L%0na2AW5g8fv(|Cg6>liu%99R1eBrvUO{kc(7x2qo{WQ>{mI~zp; z_qzp7?*B?=_lAN-dkLIJEOc&aCTJX;U3V^gX6#&-C#AZyD zoYicK%42rHt7iq^mqE?Kp6VR9t%`6dAWTv>GV@z(5*4xDgooGzS2r?*YFN+qA67Wi zdTf2AehiTfntQpONuND0=#Q6@cq?Xb@-M%G( z?5j>bM>XF@6gRKQOxlwN=JWYW>q(SOeO(8Qqp(6vB0A14Ad7qJ>!&I&)bmEWkG)`p z;U84WbWhiJJ&)Gul>IW4^_jl->Jv%Ss*i6-?-OBqN3kg=ACgVjE_2{uzfE4>9!@gr z9`rr4l(lx}dlVg!Fk#bTeP~w?D3)+zc1F5?)a5wrr~fba^FuEFmM??O8%)(c&JFqB zVdCsdOb3({58c?*gPr*9B3MakPAKYl)fL!b>Grr8pJZJe2IOctU0pBiPh$E_BUWu4 zs4YAx)a@E;49l@D^!+?q!HRB`q83nIae7#@vR3jp7ui?pL$xAxf%eN%Gz6;?&pLsdZqVfJ zn9aScaZO#>o?ttMnC*@A44j{EX{;GAdG7hE<$1W9?(YC*0yJ3it@2?Wd{!Brq!ln< zttUu(76O(?QWt%RKQxd%{b^V!zs0HfI z_C?5q$EQW&!&;Jt{SkHh>)_{>qHh5+P4-yAnzbiOf?!?HPQ^Yuaa<5wE_&nERnTC$ zz;Mhong|FLyAc7LrQjFuhk|C~WWGZhne8a-}UN*Ip(;HA!Go ziS6iDOdg9%{NUTp^J>h~C|;nG+tbf^<#qH5W#VevG)A<&Z|f_ZmliQpsXjlXgd1AQ zl@<-};D{65B(VGvf0M|R39nZKp;pbl>2Xa~11Z;52myO4f1tomb@w*|xA*4A&GWN6Ls zxMv2J1)0@ec}bAvD(a(FalSKsN3nN>>y|g`%;x$Z3W9BOi9SSmA)q)QceJs&C!Qi+<5L87hVIsKL=$GJ#$qO`Xi z>B26Ta>A?evv^6%q2O%kaRw(+>wCYODm%3l{P5+;rshXiaDIoz=gBj>WQO4wAUKHU zE7rU88oah7Wen)b%z2^uqjo)ko6-dKOd^>hmY5{j#mX#`Y_%nWSN@+CfJwg{Fpjt= zEe@sJ|2-!&o*uc4s}nUe1HV|7VoDbhjm*QNKc_%F$(o)cR7F7AWbr)Okp)^QWn#)g zJgN)yOXwj-8YK9G-bPYglAG&CH@yM0OB;|)!&urJ zqX^k_o6Y2~dciUR#oH#bgIJS-KY%$vay#psak#(S+kyWy4JiZ}=ob;O2ml-tib8s||EA9!4f_e8-8kP~Umb!j zve&F&ZcFk)-K`ZVn_`iI0MaQXfTTsy{6JDdMTL>rrPR%+?QOpXlCo!Rvpzk|m6)Dh zUTSv6xg^=J5FM880RHb%i61ks@VHgm`Z5e)=AN$qsu9@EnELniHyT;0L>k7HcXK0( z=amdzVY(f=1a;x6-bkVAwkS#RvYD?29Ij`2sY_$HDN&gw5Z9sN$BwWpnSk}$lMrvr zvrE5bYP<3e3IT{M0J>~86@~lcQc#-8K&g2o0_s23(dr}VA~a1RNpVnKq&5XRMUAY= zG;nQp-Eg@PJ|9xt@$1uK%`gGdGZ|KS?yfvbBc`;HRCI}GFsRhvm=+Uf-It8i{h!s) zw2Z_oSXmm`AOH~TMXha5q-hx!hX3Tr{af`H>M|p+9ZTCs`o9tCg8L`qN#jVC->G7# zeW`ikLxo8wfDwti4*BJ}d#6R|EFgSGFJH-Y)lE$1Kw(2N-zrMrOC@aegk|Z0j2$n> zwE~vVx_)*aZ+Q+?Bo(q_;)mtrg-J`hR7ovJsgZRX%M;I}xoT*V_DR)Qq{LugvaH^e<2v{MK-jxIr_m}_y;3R`5)_Hpg6MKM>aR9Qm02~{w^K9nP)#YZ&L^6 z5f!iNh%js(q=Nk(D1xYcGdMoHMalnqaV^{vjvl8ny5KzU2Zp}J{emgSVn4bWjN#rQqyin(Lk#OnOUzYPcrPZZC~L zOZ8m^`9G8onM_pEX_z)F~87-NS+0{f{LIP1?1fCRu)3w(#E6pJ`s(t&Q z6imXDDlaA`tsidd47K24bDiq$-9*N7%3adYe`Kl(5c)@YvxZrQrXoGDQ2XS>+ehwS zP4Tj;GNa9?k;*Q8N8f^Uqc+{VUMoO~zU7;LXgA2WD<+8)Otlhg5p9x)c zetV9HBA0(%7s~oDG=s}V#~($iPIa8T=`l!b-g0C)ZFEx^D{Z09p1gI`{u)k-GfjiE zdvG-C6+Fv3iF@FJw+e&h;cAfpaL)q%ACs4jI;Ey?Zxs&EZC!NvuhTU-n$;FjEfem< zFgjh9c=3~W{j5CBkDVyxT}Wpf_OWNk);J`07YPI0N1KAK+!3mhZjSng`!1_vo0l?LT!vG1vXC`X!h~V8Hw4L6NM$%W~6q zm*HO@CzK*F8mf&x2uoS3joFFTYj3}axlh~RH{7=XhIgSUvyfl)7~w>>PNa#w?ElMh zI%zS>OoV~s?eve64-_^S$u8pkAoeI)g&&<%(lxvdG{D{ln}2Su7g!(_OW)8>rYn`< zV(;$)1U1Uf@A9vz^B6@F34MeIX_C@p%r+n=qiQMn;v_EbFg_%6>{z&J6qjs8H#iun z+S(6#;h2H|y4JZ;wC=z3COB@6ogp=Y52)7@d?A^uKkR2@1yDP{vj=Qe3`<&o-Pjw# zf+S(6360$0))bpVoc{pX*2s|hJ;Kvsg!wx)vk%iZzf!~J5%|h&ymFfBN|wpT^@Oni z^r&Y`O6ZX)Oz)2xNB1!kzRaA(f00XldTCW2YWnJTGU`RLKkSzP`hsYqPCK&+!FGK4h4q5Snu44*?t-&U6vnHkTb5h9`N=qc-~GPr@ZIJZaGS1>(SoU_ZW9- zRl$_Y!LL*v=LePq>_r2+jSu<3-n_y90HKsxqm8{`1Don&=%!41b&iJ4`~LGr;Z$RD zXH{{;HCnaLTN&Z?I1tblF0)QWV<$wD&WYfhKs}9BLSoS=|L*F=SPQY=7;_je&W(Bva%k60BPd zXEfnWJ-DQ0eJ0xi%>OBfTWac>w||ET_k|(1&exll5hQ%K;Ji4`6qEy|P{Ehp1)`8x z=x56}0^V_gvI0&54lpXSP_R7TocD=J0En^`M#31jHR^7lKf0&?R-4qKS$9*>D9yMt zLunStyvlvuG%GgN2>ZH;36~sota zAde>5R3P;L5_0H*E;{eeO5%y=p*od;- zC`ZZY+WR#7H87;4uEeogNzC1chPlko|7$rxJWUA2F!lhJE9g7;+>9Z_e)46m)uzCr zMZ?;eK+C@QGH1GBiItA}?LNm(g^0QbKV+$>Q+fRLet z+4fKHH}manQt>Q`k@&hxU-9XE8|b@a__N&871+%Z^?wGWmM78z_=Q%#dc`Q+)}t0T z_VehchMRfB%Q|(wx!pi_93120QbgLFZgG>#dm9!hVxf0%PU!ck_Jg;7T&;_*Ra!|^ zOl;vvkAlxtJ7PxIM1p~X)zUt|84e28=#>^ATwDFfa#6Zdl+z7bV(t!Fj5$L}q#(r4 z)Y^(K1@(%(Ei-Y;U(e7}p0@iZ#Xm=w(q<5mN9!YsqS-6I_S@5{n`&5xq`D+{OTUrI z+onnIVQI?x!G~tXhEh?H7w7D)K=ds=u`crG47fFV=q)lG{1MecmDM>gBTX_WDh;kO}MuA!B)Y@WoI71m4x}; z^a5r81weKKqpc$WDf2tHRa={aNJfd?Whf=Wbbd@ig%Drs66 z+5y!E*KWJ3hu0P0ur(W|MQgv5 zVqzUPTi4@~BvPO74)nGARwdOhgH?+FFMy#pdg-?zc-2jD&4W=*i4_KHa}XIiI_JJo zyY=~Xw0H58<8x!jP1BHig!S)Fm9GEy4RsDmMTs1Kl^)rOR^C-@D2~9}_o?d2%-a{C zYO4`wSVIq89D4WO?{Ed1t-I=mPX}PWeJXKDT^g4C77c1Xv->bOQmSB?*tlszFU9v_ z=-q1vJN`A#S3ajEMUy+9vr7y#3-b5g!dyJYP$5P91@HNE@td0nlWV!@7u<9*^jO3h ze-YxghG(DLyS)da9Zllb@Y*8FAZ%~F?rw(*Z8KG4VtV%o~Y?xq>aH#+9Y2h@YQY+c^7h{%i#$)<8Mxxc(tu`g(}n zbpyHoKpg>9wk?MBD|An{%9no&R2L!V}H7iGQq-{Nt!Lrm?5D#o!b&v%7jcqTs zT$U0GbBxp}xPoe#MX0R^Dec`zHz=`sSFb>JX-g%g+&%Cy9cfu(>??QY%!@4qyhl$Q zT$C_mUv@Ezbl2xWQrz)Ew@@*#3v$QraAKvz-0d_f?$lxl*)(7c-@NP_Wi3;;!#C`T z-{Ws{GxwbHp7-22=ibbH=4!1e$c9k~GJinG^k8I-WUBEZT+-uj_62ujO*++u+y(nt z$5xME?pWxtc8m1Blh97ZR%Zp!Voxh_vmgmZ@gC$NQ?E=vvkir+7M9N%#0OMN)1f>t(3Q;JKMr09JSzqu*`+3 z&IWcupEv>nRrS>HE^G28T!i1tS^ZK)R!ei4|JipyN+I#}8k9<~d)f)=&)2dyCjoWDctrc8!=JR3?o(63rVvG%6YBJaIdQ)+1Gu+R#aFz{K6tXJq z9{9InrnL`NIn8{j*RF>irE*0@n`t^!VMDt^bDINRJyP3D1DYb%kZVK0+Q`+2pD)IW zZ17D^2@i6!hBC5-*#1`OUR1NFfs33NTHV%s*4gM3reAL;?NH{9>2(hB1?ipI4u$h%0kCGrb`?Gqk>+6Lr;YkUzG?STFM0B@=r?y9ed!OD~jC zjtsD|)zbVI4!)om={%+s(XKW)k2ko=ZhBt+W4SAGG>q}!=SY>Oc6cA9W`jqUI_4Pk zTPN@9Ro9KVI;J~!{9=})bTiehxhCi^#Polb)K^3mC#{PQ8$c^i23x z%O?caT!ddYq0E8c`D9rH)H+^Ds;9=jLyCL0%Vy4`n zsIC@5@nKe%gKMk(0ym5Xd@7iovr?LF zKwJ}td*Uo_n-8q5j8x%HfCH-)h)op9A9_0!7?EzYZkiWZQqgcnmii64b{ID;T;?m) z^rU3C)^3J)&$PV+V%J)&D^s;#*(-9z#G#4h`%fk9Btd*;dh&+vrG>ygZd-pmE=hJ; z@A}2Lwz?q}&usO@mwk)L;#o}h{;H;5$25^Mx$cZX8*^Or zt3wEi_{V|t1}Gt-kw@I!EwA9MGv0B1iVd{uj0(dmA3_o(?V~XQKa7wmRKy5n(`yV3 zcbvI(fpsD-;X!LVDOhnY23n-25>gLKOV1`Qk^!GM5l{8+pKZGW@i_XzrM8Y)rLLY& zvEJ=}GVDN^kL*Br0pLAzsCDV6+j?9t-0yJGa_EWUk}Gz;B0vk7GB=_GxvD~!cw@qd zuj-&F&FwRzwZ7~cSkeUVd}MJbJ%^F=)A1+NA0Miqb3tN*U_66$|e}d{1)zLZ7Gaxqkt^#cioxV0bB1@Ne5Jq~*0Jp{}!v=T2eY-sh=Sfq3 z%DA2Bn(iD--I98ComyRXEUZo0E$LsI97~uyvA66-3$5QCw;N_w& zOLD96cmLw-M@onx>wn?QADGerbH-hI= zOFk>e%8s3hi+^!1vdtt-tdegWkdz;@`iqM85PhreCT6>Ro;#`p!X?qswPvTfOx0B>EsS%2SGIA}Vrb@x;2Bu_-SaBjCWU(z%;YKzH*CLTSjym=_kscA9h^T;K3n_gr-5RM^Y1z_B-} zr3(Dt?ABZKDdJM47``3GUy&^rwvC*KJXmhq!jSp3C%V#m+k$>sV%-(bh?o0vwU61o zlZ<2M+Z#DIqocbNl|A;LCL_yndQ6jM@Z3AoBTX5DCmgC-|K zGPAi5sV@u&<=QNbva&!RBnb@5?rjzkTKg%MF)G|gKs@F$5TefCwI&Z04YF?ItApa9NekSKF{w0L8{C|}OBa&#iM|++w;j@`Iw;HfAkH}-BB5}Tv^Ji% z{Z!wC48nueswV_tdyUdlsQ^9-W8I*^UEJ%OGO}(e+;`0)_2gs^1wY*J`#q60chfRM zIv~7~01_Qb8qI(W1yz!=4T%~x)gfkle_`OVu)ma+ z*h6$R(&z;kef=8CQOf)+^rXfzvWY>K$PjzkHSvaEYlJI zhcY z0WD;NA{5U+SC<_G>SDlopaP?jyIZCAmO}<0LL@ohy0-4xleQQsWGSD^rYocmaM8~G zlz020Fa|^dd&8FUZeI}l^C0#W=Nuc~(F^qGA|T74-ui?Uy;36$AYP*LFTYZg4x1I5 zG9cS26BQi(^5ZQ)#0yw#bkm;v7d{9KTFilb{r8<2-3Kgs-72KLqZb$2h0$QIJS zoS{ia-M++Xh4=Bnz;)U5l!Eu2;Ti#pG=r?Tf8j%c>(Es)>3wHDko|$|e@4}Zk^Lc! zyv=j}l{E6lo5|j*@(={IRK97ROZ|N7L)=Hy6sFK@6M{k*SVoShJEKCJGEQukUjFqP z2W2RG7q7Ixgj@dHG@bKzcLYU<#3@YYxqsS1XQaOQ>7Ocpi^~z^;1(PDg_U-KyqqM5 z@4swq*~A{CUUmx=mZ9NO&O#7&$jN?>`&;wIn4zU_B+hTqA-ZyM5;Sn%KkdOyx{v)| z9+Q8IR!#;pq+RK<(&oz~FFK2i|8fqPW9#ZZ#%3F=v~y6#@tcb)1Q2DC|5ph4Kmr&Q fA4vFrBY}Q$)~u$U8TczmM39ri=k^u0bk2VOJ6fl~ literal 0 HcmV?d00001 diff --git a/view/molistar/modules/inform/images/pitch.png b/view/molistar/modules/inform/images/pitch.png new file mode 100644 index 0000000000000000000000000000000000000000..fffad5f4f2e9077e31a85d5637b4d25c4ddfddc7 GIT binary patch literal 2418 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 + + + + + + + + Level Explanation + + + + + + + +
          +
          +
          Wealth Level
          + +
          +
          +
          Charm Level
          + +
          +
          + +
          +
          +
          +
          +
          + +
          +

          +

          +

          + Wealth Value: 0 + +

          +

          + Upgrade Required Wealth Value: 0 + LV.0 + LV.1 +

          +
          + +
          +
          +
          +
          + +
          +

          +

          +

          + Charm Value: 0 + +

          +

          + Upgrade Required Charm Value: 0 + LV.0 + LV.1 +

          +
          + +
          +
          +
          + + + + + + + + + diff --git a/view/molistar/modules/inform/inform-list.html b/view/molistar/modules/inform/inform-list.html new file mode 100644 index 00000000..26a5b4d1 --- /dev/null +++ b/view/molistar/modules/inform/inform-list.html @@ -0,0 +1,48 @@ + + + + + + + 面壁墙 + + + + + +
          +
          有以下行为的用户将被封禁
          +

          1、上传色情、病毒、暴力、政治、广告等违规信息

          +

          2、恶意刷屏、扰乱公告秩序、不听劝阻严重者

          +

          3、人身攻击、地域歧视、情节严重者

          +

          4、被举报、经官方核实,情节严重者

          +

          5、最终解释权归官方所有

          +
          + +
          +

          违规名单

          + +
          + + + + + + + + +
          + + + +
          + +
          已经到底部了
          + + + + + + + + \ No newline at end of file diff --git a/view/molistar/modules/inform/js/index.js b/view/molistar/modules/inform/js/index.js new file mode 100644 index 00000000..48c6b43c --- /dev/null +++ b/view/molistar/modules/inform/js/index.js @@ -0,0 +1,235 @@ +var info = {}; +var imgArr = 0; +var target = ""; //被举报人id +var resson_title = ""; //举报内容 +var source = ""; //举报来源 +// var flush = "https://api.kawayisound.xyz/modules/inform/index.html"; +if (EnvCheck() == 'test') { + var vConsole = new VConsole(); + // flush = "http://apibeta.kawayisound.xyz/modules/inform/index.html" +} +$(function () { + var browser = checkVersion(); + var api = getUrlPrefix(); + var locateObj = getQueryString(); + + var main = { + init: function () { + this.requestUidFromNative(); //获取uid + this.eventRegister(); //绑定事件 + }, + requestUidFromNative: function () { + if (browser.app) { + if (browser.ios) { + var allcookies = document.cookie; + var $uid = allcookies.match(/\d+/); + info.uid = $uid[0] + // window.webkit.messageHandlers.getUid.postMessage(null); + } else if (browser.android) { + if (androidJsObj && typeof androidJsObj === 'object') { + info.uid = parseInt(window.androidJsObj.getUid()); + } + } + } else { + info.uid = 901189; + } + + target = locateObj.reportUid; //获取别举报人id + if (locateObj.source) { + source = locateObj.source.toUpperCase(); + } + console.log(source) + }, + // $(this).addClass('active').siblings('.tab').removeClass('active'); + eventRegister: function () { + $('.update_evidence').on('change', '.update-img', function () { + var formData = new FormData(); + formData.append('uid', info.uid); + formData.append('file', $(this).get(0).files[0]) + var _that = $(this); + $('.load-img').show().find('.toast').html('上传图片中'); + $.ajax({ + url: api + '/live/upload', + type: 'post', + processData: false, + contentType: false, + data: formData, + success: function (res) { + var flag = 0; + _that.siblings('img').attr('src', res.data); + _that.parent().addClass('has-data') + _that.hide(); + $('.load-img').find('.toast').html('上传成功'); + setTimeout(function () { + $('.load-img').hide() + }, 1000) + imgArr++ + if (imgArr > 0) { + $('.inform-button').addClass('active'); + } else { + $('.inform-button').removeClass('active') + } + }, + error: function (err) { + console.log(err) + $('.load-img').find('.toast').html('上传失败,请重新上传'); + setTimeout(function () { + $('.load-img').hide() + }, 1000) + } + }) + }); + $('.update_evidence').on('change', '.reupdate-img', function () { + + var formData = new FormData(); + formData.append('uid', info.uid); + formData.append('file', $(this).get(0).files[0]) + var _that = $(this); + $('.load-img').show().find('.toast').html('上传图片中'); + $.ajax({ + url: api + '/live/upload', + type: 'post', + processData: false, + contentType: false, + data: formData, + success: function (res) { + console.log(res); + _that.parent().siblings('img').attr('src', res.data); + _that.parent().parent().addClass('has-data'); + $('.load-img').find('.toast').html('上传成功'); + setTimeout(function () { + $('.load-img').hide() + }, 1000) + imgArr++; + if (imgArr > 0) { + $('.inform-button').addClass('active'); + } else { + $('.inform-button').removeClass('active') + } + }, + error: function (err) { + console.log(err) + $('.load-img').find('.toast').html('上传失败,请重新上传'); + setTimeout(function () { + $('.load-img').hide() + }, 1000) + } + }) + }); + //单选 + $('.radio-box').on('click', function () { + $(this).find('.radio').addClass('active').parent().siblings('.radio-box').find('.radio').removeClass('active'); + var id = $(this).find('.radio').data('id'); + if (id == 8) { + $('.inform-textarea').show(); + } else { + $('.inform-textarea').hide(); + } + console.log($(this).find('.radio').data('id')) + }) + + //提交 + $('.inform-button').on('click', function () { + if ($('.inform-button').hasClass("button-active")) { + console.log("+9++++9+") + return; + } + if(!$(this).hasClass('active')) { + return; + } + + + var imgStr = '' + for (var i = 0; i < $('.update_evidence').length; i++) { + if ($('.update_evidence').eq(i).find('img').attr('src').match('images/report_uploading_img.png')) { + continue; + } + + if (i < $('.update_evidence').length) { + imgStr += ',' + $('.update_evidence').eq(i).find('img').attr('src'); + } + } + if (imgStr.indexOf(',') == 0) { + imgStr = imgStr.substr(1, imgStr.length); + } + + console.log(imgStr) + + //获取选中的下标 + var index = $('.radio').filter('.active'); + var id = index.data('id'); + if (id == 8) { + resson_title = $('.textarea-box').val(); + } else { + resson_title = index.next().html(); + } + console.log("----------------------") + console.log(info.uid) + console.log(target) + console.log(resson_title) + console.log("----------------------") + //举报内容不能为空 + if (resson_title == "") { + $('.show-message').html('请输入举报内容').show(); + setTimeout(function () { + $('.show-message').hide(); + }, 1000) + } else if (info.uid != "" && target != "") { + $.ajax({ + type: 'POST', + url: api + '/impeach/impeachSomeone', + data: { + uid: info.uid, + targetUid: target, + reason: resson_title, + imgUrl: imgStr, + source: source + }, + success: function (res) { + if (res.code == 200) { + $('.success-winsdow').css("display", "flex"); + setTimeout(function () { + $('.success-winsdow').css("display", "none"); + // window.location.href = flush + }, 1000) + $('.inform-button').addClass("button-active").html("已提交") + } + } + }); + } else { + console.log("id不能为空") + } + + }) + + // 监听上传图片的input值变化 + // $('.update-img').prev().on('change', function() { + // console.log($(this).val()) + // if ($(this).val()) { + // imgArr++ + // } + // if (imgArr > 0) { + // $('.inform-button').addClass('active'); + // } else { + // $('.inform-button').removeClass('active') + // } + // }) + // $('.reupdate-img').prev().on('change', function() { + // if ($(this).val()) { + // imgArr++ + // } + // if (imgArr > 0) { + // $('.inform-button').addClass('active'); + // } else { + // $('.inform-button').removeClass('active') + // } + // }) + } + } + main.init(); + +}) + +function getMessage(key, value) { + info[key] = value; +} diff --git a/view/molistar/modules/inform/js/inform-list.js b/view/molistar/modules/inform/js/inform-list.js new file mode 100644 index 00000000..b595a751 --- /dev/null +++ b/view/molistar/modules/inform/js/inform-list.js @@ -0,0 +1,97 @@ +$(function () { + if (EnvCheck() == 'test') { + var vConsole = new VConsole(); + } +var pageNum = 1; //第一页 +var pageSize = 5; //分页大小 +var drop_down = true; //下拉锁 + + var api = locateJudge(); + + /*封禁类型*/ + function blockType(num) { + switch (num){ + case 1: + return "封禁账号" + break; + case 2: + return "封禁设备" + break; + case 3: + return "封禁ip" + } + } + /*时间戳转换*/ + function timestampToTime(timestamp) { + var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 + var Y = date.getFullYear() + '-'; + var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; + var D = date.getDate() + ' '; + var h = date.getHours() + ':'; + var m = date.getMinutes() + ':'; + var s = date.getSeconds(); + return Y+M+D+h+m+s; + } + + //首次加载 + loadData(pageNum); + + //数据加载 + function loadData(pageNum) { + + $.ajax({ + type: 'GET', + url: api + '/impeach/listViolations', + data: { + pageNum:pageNum, + pageSize:pageSize + }, + success: function (res) { + if (res.code == 200) { + if ($.isEmptyObject(res.data)){ + console.log("kong") + drop_down = true; + return; + } + var $box_list = $('.box-list'); + // $box_list.html(""); + for(var i = 0; i < res.data.length;i++){ + var $div = $('
          '); + var str = '

          ' + res.data[i].nick + 'ID:'+ res.data[i].erbanNo+'

          面壁原因:'+ res.data[i].blockDesc +'

          处理结果:'+ res.data[i].blockTypeDesc+'

          处理时间:'+ timestampToTime(res.data[i].createTime)+'

          '; + $div.html(str) + $box_list.append($div) + } + drop_down = false; + + var black = $('.box-list').find(".list-box") + console.log(black) + if (black.length > 0){ + $('.blank').hide(); + } + } + + } + }); + } + + //下拉加载 + $(window).scroll(function () { + var scrollTop = $(this).scrollTop();//这一步是计算已经卷进去滚动条的的高度 + var scrollHeight = $(document).height();//这个就算当前页面的总高度 + var windowHeight = $(this).height();//这个是当前window也就是浏览器的高度 + + if (scrollTop + windowHeight >= scrollHeight) {//如果这两个相等,不就意味着已经到了页面底部了吗? + //没有更多数据 + if (drop_down){ + console.log("++++") + $('.message').show(); + setTimeout(function () { + $('.message').hide(); + },1000) + return; + } + pageNum += 1; + loadData(pageNum); + } + }); +}) \ No newline at end of file diff --git a/view/molistar/modules/level/css/index.css b/view/molistar/modules/level/css/index.css new file mode 100644 index 00000000..9a079db5 --- /dev/null +++ b/view/molistar/modules/level/css/index.css @@ -0,0 +1,245 @@ +html, +body { + width: 100%; + height: 100%; + background-color: #F4F4FB; +} + +img { + width: 100%; + vertical-align: top; +} + +.level-head { + width: 100%; + height: 1.33333rem; + top: 0; + left: 0; + z-index: 9; + display: flex; + display: -moz-box; + position: fixed; + background: #F4F4FB; +} + +.level-head .level { + position: relative; + display: flex; + display: -moz-box; + -ms-justify-content: center; + justify-content: center; + -ms-align-items: center; + align-items: center; + width: 50%; + height: 1.06667rem; + font-size: 0.42667rem; + color: #999999; +} + +.level-head .level.active { + font-weight: bold; + color: #333333; +} + +.level-head .level.active span { + position: absolute; + left: 50%; + transform: translateX(-50%); + bottom: 0; + width: 0.24rem; + height: 0.13333rem; + background-color: #FFA936; + border-radius: 0.06667rem; +} + +.swiper-container { + margin-top: 1.33333rem; +} + +.user-content, +.user-charm { + width: 8.93333rem; + margin: 0 auto 1.01333rem; +} + +.user-content .user-head, +.user-charm .user-head { + height: 2.66667rem; + display: flex; + display: -moz-box; + -ms-justify-content: center; + justify-content: center; + -ms-align-items: center; + align-items: center; + flex-direction: column; +} + +.user-content .user-head .user-avatar, +.user-charm .user-head .user-avatar { + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + border: 0.08rem solid #FFA027; +} + +.user-content .treasure, +.user-charm .treasure { + font-size: 0.29333rem; + display: flex; + display: -moz-box; + justify-content: space-between; +} + +.user-content .treasure .treasure-now, +.user-charm .treasure .treasure-now { + color: #B15C00; +} + +.user-content .treasure .treasure-upgrade, +.user-charm .treasure .treasure-upgrade { + color: #666; +} + +.user-content .progress-bar, +.user-charm .progress-bar { + position: relative; + width: 8.93333rem; + height: 0.42667rem; + background: #FFF0CC; + border-radius: 0.25333rem; + margin-bottom: 0.32rem; +} + +.user-content .progress-bar .treasure-now, +.user-charm .progress-bar .treasure-now { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + font-size: 0.32rem; + color: #B15C00; +} + +.user-content .progress-bar .progress-bar-now, +.user-charm .progress-bar .progress-bar-now { + width: 10%; + float: left; + display: block; + height: inherit; + border-radius: inherit; + background: #FFB606; +} + +.user-content .grade, +.user-charm .grade { + position: relative; + display: flex; + display: -moz-box; + justify-content: space-between; + font-size: 0.32rem; + color: #999; +} + +.user-content .grade .treasure-upgrade, +.user-charm .grade .treasure-upgrade { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.user-content .grade .treasure-upgrade .num, +.user-charm .grade .treasure-upgrade .num { + color: #FFAE45; +} + +.user-content .grade .grade-now, +.user-charm .grade .grade-now { + height: 0.42667rem; + line-height: 0.42667rem; + border-radius: 0.21333rem; + padding: 0 0.24rem; + background-color: #FFF0CC; + color: #FFA027; +} + +.user-content .grade .grade-next, +.user-charm .grade .grade-next { + height: 0.42667rem; + line-height: 0.42667rem; + border-radius: 0.21333rem; + padding: 0 0.24rem; + background-image: linear-gradient(to right, #FFDCBB, #FFB810); + color: #FFFFFF; +} + +.user-content.user-charm .user-head .user-avatar, +.user-charm.user-charm .user-head .user-avatar { + border: 0.08rem solid #BD80FF; +} + +.user-content.user-charm .progress-bar, +.user-charm.user-charm .progress-bar { + background: #EFECFF; +} + +.user-content.user-charm .progress-bar .treasure-now, +.user-charm.user-charm .progress-bar .treasure-now { + color: #8400AC; +} + +.user-content.user-charm .progress-bar .progress-bar-now, +.user-charm.user-charm .progress-bar .progress-bar-now { + background: #BD80FF; +} + +.user-content.user-charm .grade, +.user-charm.user-charm .grade { + position: relative; + display: flex; + display: -moz-box; + justify-content: space-between; + font-size: 0.32rem; + color: #999; +} + +.user-content.user-charm .grade .treasure-upgrade .num, +.user-charm.user-charm .grade .treasure-upgrade .num { + color: #BD80FF; +} + +.user-content.user-charm .grade .grade-now, +.user-charm.user-charm .grade .grade-now { + background-color: #EFECFF; + color: #D16FF2; +} + +.user-content.user-charm .grade .grade-next, +.user-charm.user-charm .grade .grade-next { + background-image: linear-gradient(to right, #E1DBFF, #BD80FF); +} + +.explain { + width: 9.04rem; + margin: 0.53333rem auto 0; +} + +.explain .explain-tit { + font-size: 0.4rem; + color: #333; +} + +.explain .explain-title { + margin-top: 0.13333rem; + font-size: 0.29333rem; + color: #666; + line-height: 0.53333rem; +} + +.explain-img { + margin-top: 0.26667rem; +} + +.effects-img { + margin-top: 0.53333rem; +} diff --git a/view/molistar/modules/level/css/index.scss b/view/molistar/modules/level/css/index.scss new file mode 100644 index 00000000..3e15e018 --- /dev/null +++ b/view/molistar/modules/level/css/index.scss @@ -0,0 +1,223 @@ +@function px2rem($px, $rem:75) { + @return $px / $rem+rem +} + +html, +body { + width: 100%; + height: 100%; + background-color: #F4F4FB; +} + +img { + width: 100%; + vertical-align: top; +} + +@import '../../../common/css/flex.scss'; + +.level-head { + width: 100%; + height: px2rem(100); + top: 0; + left: 0; + z-index: 9; + @include flex(); + position: fixed; + background: #F4F4FB; + + .level { + position: relative; + @include flex(); + @include flex-justify-center(); + @include flex-align-center(); + width: 50%; + height: px2rem(80); + font-size: px2rem(32); + color: #999999; + + &.active { + font-weight: bold; + color: #333333; + + span { + position: absolute; + left: 50%; + transform: translateX(-50%); + bottom: 0; + width: px2rem(18); + height: px2rem(10); + background-color: #FFA936; + border-radius: px2rem(5); + } + } + } +} + +.swiper-container{ + margin-top: px2rem(100); +} +.user-content, +.user-charm { + + width: px2rem(670); + // height: px2rem(340); + margin: 0 auto px2rem(76, ); + .user-head { + height: px2rem(200); + @include flex(); + @include flex-justify-center(); + @include flex-align-center(); + flex-direction: column; + + .user-avatar { + width: px2rem(120); + height: px2rem(120); + border-radius: 50%; + border: px2rem(6) solid #FFA027; + } + } + + .treasure { + font-size: px2rem(22); + @include flex(); + justify-content: space-between; + // margin-bottom: px2rem(19); + + .treasure-now { + color: #B15C00; + } + + .treasure-upgrade { + color: #666; + } + } + + .progress-bar { + position: relative; + width: px2rem(670); + height: px2rem(32); + background: #FFF0CC; + border-radius: px2rem(19); + margin-bottom: px2rem(24); + + .treasure-now { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + font-size: px2rem(24, ); + color: #B15C00; + } + + .progress-bar-now { + width: 10%; + float: left; + display: block; + height: inherit; + border-radius: inherit; + background: #FFB606; + } + } + + .grade { + position: relative; + @include flex(); + justify-content: space-between; + font-size: px2rem(24, ); + color: #999; + .treasure-upgrade{ + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + .num{ + color: #FFAE45; + } + } + .grade-now{ + height: px2rem(32, ); + line-height: px2rem(32, ); + border-radius: px2rem(16, ); + padding: 0 px2rem(18, ); + background-color: #FFF0CC; + color: #FFA027; + } + .grade-next{ + height: px2rem(32, ); + line-height: px2rem(32, ); + border-radius: px2rem(16, ); + padding: 0 px2rem(18, ); + background-image: linear-gradient(to right, #FFDCBB, #FFB810); + color: #FFFFFF; + } + } + + &.user-charm{ + .user-head { + .user-avatar { + border: px2rem(6) solid #BD80FF; + } + } + .progress-bar { + background: #EFECFF; + + .treasure-now { + color: #8400AC; + } + + .progress-bar-now { + background: #BD80FF; + } + } + .grade { + position: relative; + @include flex(); + justify-content: space-between; + font-size: px2rem(24, ); + color: #999; + .treasure-upgrade{ + .num{ + color: #BD80FF; + } + } + .grade-now{ + background-color: #EFECFF; + color: #D16FF2; + } + .grade-next{ + background-image: linear-gradient(to right, #E1DBFF, #BD80FF); + } + } + } +} + +.explain { + width: px2rem(678); + margin: px2rem(40) auto 0; + + .explain-tit { + font-size: px2rem(30); + color: #333; + } + + .explain-title { + margin-top: px2rem(10); + font-size: px2rem(22); + color: #666; + line-height: px2rem(40); + } +} + +.explain-img{ + margin-top: px2rem(20); +} +.effects-img{ + margin-top: px2rem(40); +} + +// .swiper-slide{ +// height: px2rem(1900); +// overflow: auto; +// } + diff --git a/view/molistar/modules/level/images/charm.png b/view/molistar/modules/level/images/charm.png new file mode 100644 index 0000000000000000000000000000000000000000..58ab6c80b22c81bd85830993b773a25fbfd78c07 GIT binary patch literal 69461 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

          OHM^P~t^7uXL4sw?1)QvHa`mS}adPp!);l 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�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�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 P00000NkvXXu0mjfC9m>Z literal 0 HcmV?d00001 diff --git a/view/molistar/modules/level/images/effects.png b/view/molistar/modules/level/images/effects.png new file mode 100644 index 0000000000000000000000000000000000000000..da94c53ce0257f44180a883e7ea96d1066281f18 GIT binary patch literal 152663 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%0D}|UErj6i?lZW%dl=kh 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%0A8t}{ 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�M=>Dt@ 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 $6orpw^U59NC))PnXcFt|y-OPY3R?W2%rO0tM1O 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 literal 0 HcmV?d00001 diff --git a/view/molistar/modules/level/images/effects1.png b/view/molistar/modules/level/images/effects1.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e6970e502a7a1dcf1c230f1f3ad7cf143bfcea GIT binary patch literal 87500 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%0D}|UErj6i?lZW%dl=kh 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%0A8t}{ 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

          XUR$JN7wz|bJNX0VZHCjG>M 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 literal 0 HcmV?d00001 diff --git a/view/molistar/modules/level/images/explain.png b/view/molistar/modules/level/images/explain.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c2b44355e615f35f21ec0a361a7511a8b7a41d GIT binary patch literal 52163 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 JPDHLkV1h6FW>x?I literal 0 HcmV?d00001 diff --git a/view/molistar/modules/level/images/people.png b/view/molistar/modules/level/images/people.png new file mode 100644 index 0000000000000000000000000000000000000000..21573d9cc6feab93205a3a3d7773d2f68f39f281 GIT binary patch literal 65652 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