diff --git a/app.manifest b/app.manifest index 833d7adf..1050f7dc 100644 --- a/app.manifest +++ b/app.manifest @@ -1,5 +1,5 @@ CACHE MANIFEST -# Time: Thu Mar 19 2015 21:52:31 GMT+0300 (MSK) +# Time: Tue Mar 24 2015 22:18:29 GMT+0300 (MSK) CACHE: @@ -26,22 +26,22 @@ js/app.js nacl/mtproto_crypto.nmf nacl/mtproto_crypto.pexe img/changelog/card_wecandoit.png -img/icons/AboutLogos_1x.png +img/icons/AboutLogos.png img/icons/AboutLogos_2x.png -img/icons/Checks1_1x.png +img/icons/Checks1.png img/icons/Checks1_2x.png -img/icons/Checks2_1x.png +img/icons/Checks2.png img/icons/Checks2_2x.png img/icons/General.png -img/icons/General_1x.png +img/icons/General_2x.png img/icons/IconsetSmiles.png -img/icons/IconsetSmiles_1x.png +img/icons/IconsetSmiles_2x.png img/icons/IconsetW.png -img/icons/IconsetW_1x.png -img/icons/MobileIcons_1x.png +img/icons/IconsetW_2x.png +img/icons/MobileIcons.png img/icons/MobileIcons_2x.png img/icons/PhotoIcons.png -img/icons/PhotoIcons_1x.png +img/icons/PhotoIcons_2x.png img/icons/ProfileIcons.png img/icons/ProfileIcons_2x.png img/placeholders/DialogListAvatarSystem@2x.png diff --git a/css/app.css b/css/app.css index 30d6c206..857795cd 100644 --- a/css/app.css +++ b/css/app.css @@ -412,7 +412,9 @@ select[multiple],select[size]{height:auto} input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#000} .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#000;background-color:#fff;background-image:none;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s} -.form-control::-moz-placeholder{opacity:1} +.form-control::-moz-placeholder{color:#9aa2ab;opacity:1} +.form-control:-ms-input-placeholder{color:#9aa2ab} +.form-control::-webkit-input-placeholder{color:#9aa2ab} .form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1} textarea.form-control{height:auto} input[type=search]{-webkit-appearance:none} @@ -477,7 +479,7 @@ select[multiple].input-lg,textarea.input-lg{height:auto} .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;white-space:nowrap;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} .btn.active:focus,.btn:active:focus,.btn:focus{outline-offset:-2px} .btn:focus,.btn:hover{color:#333;text-decoration:none} -.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} +.btn.active,.btn:active{background-image:none} .btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none} .btn-default{color:#333;background-color:#fff;border-color:#ccc} .btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad} @@ -1130,25 +1132,23 @@ h1,h2,h3,h4,h5{color:#222} .hasselect{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text} a{cursor:pointer} a.disabled{cursor:default;pointer-events:none} -.form-control{border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-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.no_outline:focus{border:1px solid #d9dbde;box-shadow:none;outline:0} -.form-control::-moz-placeholder{color:#b3b3b3} -.form-control:-ms-input-placeholder{color:#b3b3b3} -.form-control::-webkit-input-placeholder{color:#b3b3b3} -input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0} +.form-control{border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-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);-moz-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.no_outline:focus{border:1px solid #d9dbde;outline:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} +.form-control:-ms-input-placeholder,.form-control::-moz-placeholder,.form-control::-webkit-input-placeholder{color:#b3b3b3} input[type=number]{-moz-appearance:textfield} +input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0} .btn{border:0;padding:7px 13px} -.btn.active,.btn.active:focus,.btn:active,.btn:active:focus,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{box-shadow:none;outline:0} +.btn.active,.btn.active:focus,.btn:active,.btn:active:focus,.btn:focus,.btn:hover,.open .btn.dropdown-toggle{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:0} .btn-success{color:#fff;background-color:#6ec26d} -.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#61b75b} -.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background:#66b864} +.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .btn-success.dropdown-toggle{color:#fff;background-color:#61b75b} +.btn-success.active,.btn-success:active,.open .btn-success.dropdown-toggle{background:#66b864} .btn-danger{color:#fff;background-color:#c05f5a} -.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#ab5450} -.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background:#a24f4b} +.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .btn-danger.dropdown-toggle{color:#fff;background-color:#ab5450} +.btn-danger.active,.btn-danger:active,.open .btn-danger.dropdown-toggle{background:#a24f4b} .btn-primary{color:#fff;background-color:#6490b1;border-radius:3px} -.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#4a80a9} -.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background:#41769e} +.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .btn-primary.dropdown-toggle{color:#fff;background-color:#4a80a9} +.btn-primary.active,.btn-primary:active,.open .btn-primary.dropdown-toggle{background:#41769e} .btn-primary.disabled,.btn-primary[disabled]{background:#7999b3} .btn-link{color:#3a6d99;text-decoration:none!important;border-radius:3px;overflow:hidden} .btn-link:hover{background:#f2f6fa} @@ -1163,7 +1163,7 @@ input[type=number]{-moz-appearance:textfield} .md-input-group{height:50px;border-bottom:1px solid #e6e6e6;padding:0;margin:0 0 22px} .md-input-label{font-weight:400;color:#999;cursor:pointer;display:block;font-size:13px;margin:0;padding:0;z-index:1;pointer-events:none;-webkit-font-smoothing:antialiased;transform-origin:left center;-webkit-transform-origin:left center;-webkit-transform:translate3d(0,22px,0);transform:translate3d(0,22px,0)} .md-input-animated .md-input-group,.md-input-animated .md-input-label{-webkit-transition:all .15s cubic-bezier(.35,0,.25,1);transition:all .15s cubic-bezier(.35,0,.25,1)} -.md-input{color:#000;background:#FFF;display:inline-block;border:0;outline:0;font-size:13px;padding:3px 0;margin:3px 0 0;width:100%;box-shadow:none} +.md-input{color:#000;background:#fff;display:inline-block;border:0;outline:0;font-size:13px;padding:3px 0;margin:3px 0 0;width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} .md-input-disabled .md-input{color:#999} .md-input-focused{border-bottom:2px solid #6bace1} .md-input-error{border-bottom:2px solid #e2726f} @@ -1171,11 +1171,11 @@ input[type=number]{-moz-appearance:textfield} .md-input-has-value .md-input-label{-webkit-transform:scale(.9);transform:scale(.9)} .md-input-group-centered,.md-input-group-centered .md-input{text-align:center} .md-input-group-centered .md-input-label{transform-origin:center center;-webkit-transform-origin:center center} -.md_modal_head{color:#FFF;background:#5580a3;padding:0 0 28px 26px} +.md_modal_head{color:#fff;background:#5580a3;padding:0 0 28px 26px} .md_modal_head_simple{padding-bottom:13px} .md_modal_actions_wrap{float:right} a.md_modal_action{display:block;float:right;color:#dde8f1;padding:19px 15px 5px;font-weight:700} -a.md_modal_action:hover{color:#FFF} +a.md_modal_action:hover{color:#fff} a.md_modal_action_close{padding-right:22px} a.md_modal_action:active,a.md_modal_action:focus,a.md_modal_action:hover{text-decoration:none} .md_modal_title{font-weight:700;padding:18px 0 5px;font-size:13px} @@ -1184,23 +1184,23 @@ a.md_modal_action:active,a.md_modal_action:focus,a.md_modal_action:hover{text-de .navbar-offline-text{color:#b9cfe3;padding:13px 15px;font-size:13px;display:block;line-height:20px} .tg_progress{height:12px;margin:0;padding:0;background:rgba(255,255,255,.4);border:5px solid rgba(0,0,0,.5);border-radius:3px} .tg_progress .progress-bar{height:5px;line-height:2px;background:rgba(255,255,255,.9);border-radius:0;overflow:hidden} -.dropdown-menu{border-radius:2px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)} +.dropdown-menu{border-radius:2px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);-moz-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)} .dropdown-menu-to-up{top:auto;bottom:100%;margin:0 0 3px} .dropdown-menu>li>a{padding:5px 14px;font-size:13px} .modal-backdrop{background:rgba(26,26,26,.7);opacity:1!important} .modal-backdrop.fade,.modal.fade,.modal.fade .modal-dialog{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none} +.text-invisible{visibility:hidden} .modal{overflow-y:auto;padding:10px} .modal-dialog{margin:0 auto} -.modal-content{border:0;border-radius:0;-webkit-box-shadow:0 1px 10px rgba(0,0,0,.15);box-shadow:0 1px 10px rgba(0,0,0,.15)} -.text-invisible{visibility:hidden} +.modal-content{border:0;border-radius:0;-webkit-box-shadow:0 1px 10px rgba(0,0,0,.15);-moz-box-shadow:0 1px 10px rgba(0,0,0,.15);box-shadow:0 1px 10px rgba(0,0,0,.15)} .modal-header{padding:12px 0 4px 3px;border-bottom:2px solid #E1E1E1;margin:0 18px} .modal-title{color:#222;font-weight:700;font-size:17px;line-height:1.4} .modal-close-link,.modal-head-link{font-size:12px;line-height:1.4;float:right;padding:0 2px;margin:6px 2px 0 0} .modal-close-link:hover,.modal-head-link:hover{text-decoration:none} .modal-head-link{margin-right:15px} .modal-close-button{position:absolute;z-index:1051;top:0;right:0;width:54px;height:54px} -.modal-close-button i{display:inline-block;background:url(../img/icons/IconsetW.png) -15px -320px no-repeat;background-size:42px 1171px;width:12px;height:12px;margin:21px;opacity:.8} -.is_1x .modal-close-button i{background-image:url(../img/icons/IconsetW_1x.png)} +.modal-close-button i{display:inline-block;width:12px;height:12px;margin:21px;opacity:.8;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:-15px -320px} +.is_2x .modal-close-button i{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} .modal-close-button:hover i{opacity:1} .modal-body{padding:14px} .modal-footer{padding:0 14px 13px;margin:0;border-top:0} @@ -1209,8 +1209,8 @@ a.md_modal_action:active,a.md_modal_action:focus,a.md_modal_action:hover{text-de .modal_simple_form h4{font-size:14px;margin-bottom:38px;text-align:left} .modal_simple_form .form-group{margin-bottom:13px} .modal_simple_form_description{color:#777;line-height:160%;margin:10px 0 0;text-align:justify} -.md_simple_modal_body{padding:40px 37px 0} .md_simple_header{font-size:14px;margin:0 0 10px;font-weight:700} +.md_simple_modal_body{padding:40px 37px 0} .md_simple_modal_body .modal_simple_form{max-width:none;margin:0;padding:0} .md_simple_modal_body .modal_simple_form h4{font-size:14px;margin-top:0;margin-bottom:38px;text-align:left;font-weight:700} .md_simple_form_description{color:#777;line-height:160%;margin:0 0 10px;text-align:justify} @@ -1224,14 +1224,14 @@ a.tg_checkbox{color:#000;display:block;line-height:18px;padding:8px 0;margin:9px a.tg_checkbox:hover{text-decoration:none} .tg_checkbox span.icon-checkbox-outer{float:right;display:inline-block;background-color:#e6e6e6;width:36px;height:14px;line-height:14px;vertical-align:middle;border-radius:8px;margin:3px 0;-webkit-transition:background-color ease-in-out .1s;transition:background-color ease-in-out .1s} .tg_checkbox.tg_checkbox_on span.icon-checkbox-outer{background-color:#bfd9ed} -.tg_checkbox i.icon-checkbox-inner{display:inline-block;background:#FFF;width:20px;height:20px;border-radius:10px;overflow:hidden;float:left;margin-left:-6px;margin-top:-3px;-webkit-transition:all ease .1s;transition:all ease .1s;border:1px solid #E7E7E7;-webkit-box-shadow:0 0 1px rgba(0,0,0,.05);-moz-box-shadow:0 0 1px rgba(0,0,0,.05);box-shadow:0 0 1px rgba(0,0,0,.05)} +.tg_checkbox i.icon-checkbox-inner{display:inline-block;background:#fff;width:20px;height:20px;border-radius:10px;overflow:hidden;float:left;margin-left:-6px;margin-top:-3px;-webkit-transition:all ease .1s;transition:all ease .1s;border:1px solid #E7E7E7;-webkit-box-shadow:0 0 1px rgba(0,0,0,.05);-moz-box-shadow:0 0 1px rgba(0,0,0,.05);box-shadow:0 0 1px rgba(0,0,0,.05)} .tg_checkbox.tg_checkbox_on i.icon-checkbox-inner{background:#6b9bc2;margin-left:16px;border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} .tg_checkbox_label{display:inline-block;line-height:18px;vertical-align:middle} .tg_radios_wrap{margin:15px 0} a.tg_radio{color:#000;display:block;line-height:20px;padding:5px 0 6px} a.tg_radio:hover{text-decoration:none} .tg_radio .icon-radio-outer{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle;border-radius:10px;border:2px solid #d8d8d8;overflow:hidden;margin:0 8px 0 0;-webkit-transition:border-color ease-in-out .1s;transition:border-color ease-in-out .1s} -i.icon-radio{display:inline-block;background-color:#FFF;width:16px;height:16px;line-height:16px;border-radius:8px;border:3px solid #FFF;-webkit-transition:background-color ease-in-out .1s;transition:background-color ease-in-out .1s} +i.icon-radio{display:inline-block;background-color:#fff;width:16px;height:16px;line-height:16px;border-radius:8px;border:3px solid #fff;-webkit-transition:background-color ease-in-out .1s;transition:background-color ease-in-out .1s} .tg_radio.tg_radio_on .icon-radio-outer{border-color:#5c8db3} .tg_radio.tg_radio_on i.icon-radio{background-color:#6b9bc2} a.tg_radio:hover i.icon-radio{background-color:#f2f2f2} @@ -1254,20 +1254,23 @@ a.tg_radio_on:hover i.icon-radio{background-color:#5785aa} .login_head_wrap{height:75px} .login_head_logo_link{display:inline-block;line-height:30px;padding:23px 15px 22px} .tg_logo_wrap{line-height:30px!important} -.icon-tg-logo{width:30px;height:30px;display:inline-block;vertical-align:top;background:url(../img/icons/General.png) -5px -10px no-repeat;background-size:40px 778px;margin-right:18px} -.icon-tg-title{width:63px;height:16px;display:inline-block;vertical-align:middle;background:url(../img/Telegram_2x.png) no-repeat;background-size:63px 16px} +.icon-tg-logo{width:30px;height:30px;display:inline-block;vertical-align:top;margin-right:18px;background-image:url(../img/icons/General.png?1);background-repeat:no-repeat;background-position:-5px -10px} +.is_2x .icon-tg-logo{background-image:url(../img/icons/General_2x.png?1);background-size:40px 778px} +.icon-tg-title{width:63px;height:16px;display:inline-block;vertical-align:middle;background-image:url(../img/Telegram.png?1);background-repeat:no-repeat;background-position:0 0} +.is_2x .icon-tg-title{background-image:url(../img/Telegram_2x.png?1);background-size:63px 16px} .login_head_submit_progress,.login_head_submit_wrap{float:right} .login_head_submit_wrap{font-weight:700} -.login_head_submit_btn,.login_head_submit_progress{font-size:13px;line-height:20px;padding:27px 15px 28px;display:inline-block;color:#FFF} -.login_head_submit_btn:active,.login_head_submit_btn:focus,.login_head_submit_btn:hover{color:#FFF;text-decoration:none} -.icon-next-submit{width:7px;height:12px;display:inline-block;vertical-align:middle;background:url(../img/icons/General.png) -18px -50px no-repeat;background-size:40px 778px;margin-left:12px;margin-top:-1px} +.login_head_submit_btn,.login_head_submit_progress{font-size:13px;line-height:20px;padding:27px 15px 28px;display:inline-block;color:#fff} +.login_head_submit_btn:active,.login_head_submit_btn:focus,.login_head_submit_btn:hover{color:#fff;text-decoration:none} +.icon-next-submit{width:7px;height:12px;display:inline-block;vertical-align:middle;margin-left:12px;margin-top:-1px;background-image:url(../img/icons/General.png?1);background-repeat:no-repeat;background-position:-18px -50px} +.is_2x .icon-next-submit{background-image:url(../img/icons/General_2x.png?1);background-size:40px 778px} .login_footer_wrap{color:#84a2bc;font-size:13px;line-height:16px;margin-top:25px;text-align:center} .logo_footer_learn_more_link,.logo_footer_learn_more_link:active,.logo_footer_learn_more_link:focus,.logo_footer_learn_more_link:hover{color:#84a2bc;font-weight:700} -.login_form_wrap{background:#FFF;padding:44px 65px;-webkit-box-shadow:0 1px 1px rgba(97,127,152,.2),1px 0 0 rgba(97,127,152,.1),-1px 0 0 rgba(97,127,152,.1);-moz-box-shadow:0 1px 1px rgba(97,127,152,.2),1px 0 0 rgba(97,127,152,.1),-1px 0 0 rgba(97,127,152,.1);box-shadow:0 1px 1px rgba(97,127,152,.2),1px 0 0 rgba(97,127,152,.1),-1px 0 0 rgba(97,127,152,.1);border-radius:2px;border:0;margin:0;max-width:none} +.login_form_wrap{background:#fff;padding:44px 65px;-webkit-box-shadow:0 1px 1px rgba(97,127,152,.2),1px 0 0 rgba(97,127,152,.1),-1px 0 0 rgba(97,127,152,.1);-moz-box-shadow:0 1px 1px rgba(97,127,152,.2),1px 0 0 rgba(97,127,152,.1),-1px 0 0 rgba(97,127,152,.1);box-shadow:0 1px 1px rgba(97,127,152,.2),1px 0 0 rgba(97,127,152,.1),-1px 0 0 rgba(97,127,152,.1);border-radius:2px;border:0;margin:0;max-width:none} .login_phone_country_input_group{cursor:pointer} .login_phone_num_input_group{overflow:hidden} .login_phone_code_input_group{float:left;width:50px;margin-right:25px} -.login_footer_about_wrap{background:#FFF;margin-top:12px;padding:44px 65px;-webkit-box-shadow:0 1px 0 #dfe5ec;-moz-box-shadow:0 1px 0 #dfe5ec;box-shadow:0 1px 0 #dfe5ec;border-radius:3px;border:1px solid #dfe5ec} +.login_footer_about_wrap{background:#fff;margin-top:12px;padding:44px 65px;-webkit-box-shadow:0 1px 0 #dfe5ec;-moz-box-shadow:0 1px 0 #dfe5ec;box-shadow:0 1px 0 #dfe5ec;border-radius:3px;border:1px solid #dfe5ec} .login_footer_about_wrap h3{margin:0 0 20px;font-size:15px;font-weight:700;text-align:left} .login_footer_about_wrap p{margin:0 0 20px;font-size:13px;line-height:160%} .login_footer_about_wrap p:last-child{margin:0} @@ -1282,20 +1285,20 @@ a.tg_radio_on:hover i.icon-radio{background-color:#5785aa} .im_dialogs_import_phonebook{margin-top:10px} .im_dialogs_panel{padding:12px 12px 6px;position:relative} .im_dialogs_search{position:relative} -.im_dialogs_search_field{font-size:12px;line-height:normal;background:url(../img/icons/IconsetW.png) -6px -205px no-repeat #F2F2F2;background-size:42px 1171px;border:1px solid #F2F2F2;border-radius:2px;padding:6px 20px 6px 30px;margin:0 0 6px} -.im_dialogs_modal_col_wrap .im_dialogs_search_field{background-color:#FFF;border-color:#d9dbde} -.is_1x .im_dialogs_search_field{background-image:url(../img/icons/IconsetW_1x.png)} -.im_dialogs_search_field:active,.im_dialogs_search_field:focus{background-color:#FFF} +.im_dialogs_search_field{font-size:12px;line-height:normal;border:1px solid #F2F2F2;border-radius:2px;padding:6px 20px 6px 30px;margin:0 0 6px;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:-6px -205px} +.is_2x .im_dialogs_search_field{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} +.im_dialogs_modal_col_wrap .im_dialogs_search_field{background-color:#fff;border-color:#d9dbde} +.im_dialogs_search_field:active,.im_dialogs_search_field:focus{background-color:#fff} a.tg_search_clear{position:absolute;right:0;margin-top:-40px;width:34px;height:34px;opacity:.6} .contacts_modal_search a.tg_search_clear{right:12px;margin-top:-34px} a.tg_search_clear:hover{opacity:1} -i.icon-search-clear{display:inline-block;color:#999;width:13px;height:13px;margin:10px 0 0 11px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 1171px} -.is_1x i.icon-search-clear{background-image:url(../img/icons/IconsetW_1x.png)} +i.icon-search-clear{display:inline-block;color:#999;width:13px;height:13px;margin:10px 0 0 11px;vertical-align:text-top;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:-15px -192px} +.is_2x i.icon-search-clear{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} .im_dialogs_tabs_wrap{display:none} .im_dialogs_tabs{padding:4px 0;position:relative} .im_dialogs_tab{color:#8c8c8c;background:#f2f2f2;height:30px;text-align:center;overflow:hidden;width:50%;float:left;padding:7px 0} .im_dialogs_tab:active,.im_dialogs_tab:focus,.im_dialogs_tab:hover{color:#8c8c8c;text-decoration:none} -.im_dialogs_tab.active{color:#FFF;background:#6490b1} +.im_dialogs_tab.active{color:#fff;background:#6490b1} .im_dialogs_tab:first-child{border-radius:2px 0 0 2px} .im_dialogs_tab:last-child{border-radius:0 2px 2px 0} .im_dialogs_panel_dropdown{position:absolute;right:12px} @@ -1304,16 +1307,16 @@ i.icon-search-clear{display:inline-block;color:#999;width:13px;height:13px;margi .im_dialogs_scrollable_wrap .im_dialog_wrap{margin-top:0} .im_dialogs_scrollable_wrap a.im_dialog{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0} .im_dialogs_scrollable_wrap a.im_dialog:hover,.im_dialogs_scrollable_wrap a.im_dialog_selected{border-radius:0;background:#f2f6fa} +.im_dialogs_scrollable_wrap a.im_dialog .glyphicon,.im_dialogs_scrollable_wrap a.im_dialog .icon{display:none} .im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:0;background-color:#6490b1} .im_dialogs_scrollable_wrap .active a.im_dialog:hover,.im_dialogs_scrollable_wrap .active a.im_dialog_selected{background-color:#6490b1} -.im_dialogs_scrollable_wrap a.im_dialog .glyphicon,.im_dialogs_scrollable_wrap a.im_dialog .icon{display:none} .im_dialog_message_wrap{overflow:hidden;word-wrap:break-word} .im_dialog_chat_from_wrap,.im_dialog_message_media,.im_dialog_message_service{color:#3a6d99} .im_dialog_message_text{color:grey} a.im_dialog:hover .im_dialog_message_text,a.im_dialog_selected .im_dialog_message_text{color:#698192} -.active a.im_dialog .im_dialog_chat_from_wrap,.active a.im_dialog .im_dialog_message,.active a.im_dialog .im_dialog_message_media,.active a.im_dialog .im_dialog_message_service,.active a.im_dialog .im_dialog_message_text{color:#FFF} +.active a.im_dialog .im_dialog_chat_from_wrap,.active a.im_dialog .im_dialog_message,.active a.im_dialog .im_dialog_message_media,.active a.im_dialog .im_dialog_message_service,.active a.im_dialog .im_dialog_message_text{color:#fff} .im_dialog_peer{color:#222;font-weight:700;margin-top:2px;margin-bottom:2px} -.active .im_dialog_peer{color:#FFF} +.active .im_dialog_peer{color:#fff} .im_dialog_badge{background:#64c270;font-size:11px;padding:5px;border-radius:11px;min-width:21px;text-align:center;margin-top:4px} .active .im_dialog_badge{color:#428bca;background-color:#fff} .im_dialogs_modal_col .im_dialog_badge{display:none} @@ -1326,8 +1329,8 @@ a.im_dialog:hover .im_dialog_date,a.im_dialog_selected .im_dialog_date{color:#91 .im_dialog_service{font-style:italic;color:#999} .im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis} .im_dialog_message{color:grey} -.icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background:url(../img/icons/IconsetW.png) -17px -444px no-repeat;background-size:42px 1171px} -.is_1x .icon-caret{background-image:url(../img/icons/IconsetW_1x.png)} +.icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:-17px -444px} +.is_2x .icon-caret{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} .im_dialogs_empty_header{font-size:15px;color:grey;margin:0 0 15px} .im_dialogs_empty_lead{color:grey;margin-bottom:18px} .im_history_scrollable_wrap{outline:0!important;position:relative} @@ -1349,31 +1352,31 @@ img.im_message_photo_thumb,img.im_message_video_thumb{overflow:hidden;border-rad a.im_message_video_thumb{float:left;margin-right:15px;position:relative} img.im_message_video_thumb{-webkit-filter:blur(2px);-moz-filter:blur(2px);-o-filter:blur(2px);-ms-filter:blur(2px);filter:blur(2px);filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='2')} div.im_message_video_thumb{position:relative} -.im_message_video_duration{background:rgba(0,0,0,.4);color:#FFF;position:absolute;bottom:4px;right:4px;padding:2px 6px;font-size:11px;line-height:15px;border-radius:2px;overflow:hidden;z-index:1} -.icon-videoplay{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-21px;margin-top:-21px;width:42px;height:42px;background:url(../img/icons/IconsetW.png) 0 -590px no-repeat;background-size:42px 1171px;z-index:1} -.is_1x .icon-videoplay{background-image:url(../img/icons/IconsetW_1x.png)} +.im_message_video_duration{background:rgba(0,0,0,.4);color:#fff;position:absolute;bottom:4px;right:4px;padding:2px 6px;font-size:11px;line-height:15px;border-radius:2px;overflow:hidden;z-index:1} +.icon-videoplay{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-21px;margin-top:-21px;width:42px;height:42px;z-index:1;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:0 -590px} +.is_2x .icon-videoplay{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} .im_message_geopoint{border-radius:2px;margin-top:5px;overflow:hidden;display:block;position:relative;width:200px;height:100px} -.icon-geo-point{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-8px;margin-top:-10px;width:15px;height:19px;background:url(../img/icons/IconsetW.png) -14px -389px no-repeat;background-size:42px 1171px} -.is_1x .icon-geo-point{background-image:url(../img/icons/IconsetW_1x.png)} +.icon-geo-point{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-8px;margin-top:-10px;width:15px;height:19px;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:-14px -389px} +.is_2x .icon-geo-point{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} .im_message_media_embed{position:relative;height:0;overflow:hidden;margin-top:5px} +.im_message_media_embed iframe,.im_message_media_embed webview{position:absolute;top:0;left:0;width:100%;height:100%} .im_message_video_embed{padding-bottom:56.25%} .im_message_insta_embed{padding-bottom:122%} .im_message_vine_embed{padding-bottom:100%} .im_message_soundcloud_embed{padding-bottom:56.25%} .im_message_spotify_embed{width:300px;height:80px} -.im_message_media_embed iframe,.im_message_media_embed webview{position:absolute;top:0;left:0;width:100%;height:100%} .im_message_twitter_embed>blockquote{visibility:hidden} .im_message_gif_wrap{position:relative} -.im_message_gif_btn{color:#FFF;font-style:normal;font-weight:700;position:absolute;display:inline-block;top:50%;left:50%;margin-left:-22px;margin-top:-21px;border:2px solid #FFF;border-radius:20px;padding:10px;z-index:1} +.im_message_gif_btn{color:#fff;font-style:normal;font-weight:700;position:absolute;display:inline-block;top:50%;left:50%;margin-left:-22px;margin-top:-21px;border:2px solid #fff;border-radius:20px;padding:10px;z-index:1} .im_message_audio,.im_message_document,.im_message_upload_file,.im_message_video{margin-top:3px;width:317px} .im_message_audio{margin-top:3px} .im_message_file_button{display:block;background:rgba(218,228,234,.5);float:left;width:42px;height:42px;border-radius:50%;margin-right:10px} -.im_message_file_button_icon{display:inline-block;line-height:0;background:url(../img/icons/General.png) -14px -509px no-repeat;background-size:40px 778px;width:12px;height:18px;margin:12px 15px} -.is_1x .im_message_file_button_icon{background-image:url(../img/icons/General_1x.png)} +.im_message_file_button_icon{display:inline-block;line-height:0;width:12px;height:18px;margin:12px 15px;background-image:url(../img/icons/General.png?1);background-repeat:no-repeat;background-position:-14px -509px} +.is_2x .im_message_file_button_icon{background-image:url(../img/icons/General_2x.png?1);background-size:40px 778px} .im_message_file_button_dl_doc .im_message_file_button_icon{background-position:-12px -561px;width:16px;height:18px;margin:13px} .im_message_file_button_dl_audio{background:#6490b1;border-radius:50%} -.im_message_file_button_dl_audio .im_message_file_button_icon{display:block;width:14px;height:16px;background:url(../img/icons/General.png) -13px -611px no-repeat;background-size:40px 778px;margin:13px 16px} -.is_1x .im_message_file_button_dl_audio .im_message_file_button_icon{background-image:url(../img/icons/General_1x.png)} +.im_message_file_button_dl_audio .im_message_file_button_icon{display:block;width:14px;height:16px;margin:13px 16px;background-image:url(../img/icons/General.png?1);background-repeat:no-repeat;background-position:-13px -611px} +.is_2x .im_message_file_button_dl_audio .im_message_file_button_icon{background-image:url(../img/icons/General_2x.png?1);background-size:40px 778px} .im_message_file_button_dl_audio .audio_player_btn_icon_pause,.is_1x .im_message_file_button_dl_audio .audio_player_btn_icon_pause{width:12px;height:14px;background-position:-14px -587px;margin:14px 15px} .im_history_selectable .im_message_outer_wrap:hover .icon-document,.im_message_selected .icon-document{background-color:#dae6f0;background-position:-2px -542px} .im_history_selectable a{pointer-events:none} @@ -1412,8 +1415,8 @@ img.im_message_document_thumb{max-width:100px;max-height:100px;vertical-align:mi .im_message_video .im_message_document_name_wrap{margin-top:5px} .im_message_cancelable_progress_wrap,.im_message_playback_progress_wrap{margin-top:4px} .im_message_media_progress_cancel{margin-left:15px;line-height:100%;width:50px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis} -.tg_down_progress,.tg_up_progress{height:4px;margin:0;padding:0;background:rgba(218,228,234,.5);border:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none} -.tg_down_progress .progress-bar,.tg_up_progress .progress-bar{height:4px;line-height:4px;background:#6B9ABD;border-radius:0;overflow:hidden;-webkit-box-shadow:none;box-shadow:none} +.tg_down_progress,.tg_up_progress{height:4px;margin:0;padding:0;background:rgba(218,228,234,.5);border:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} +.tg_down_progress .progress-bar,.tg_up_progress .progress-bar{height:4px;line-height:4px;background:#6B9ABD;border-radius:0;overflow:hidden;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} .im_service_message_wrap{text-align:center} .im_service_message{display:inline-block;min-width:10px;padding:4px 7px;line-height:1.4;color:#999;text-align:center;border-radius:10px;margin:5px 0} .im_service_message_photo_thumb{display:block;margin:0 auto} @@ -1426,6 +1429,7 @@ div.im_message_author,div.im_message_body{display:block;overflow:hidden} .im_message_reply{padding-left:12px} .im_message_reply_thumb_wrap{display:block;float:left;width:42px;height:42px;text-align:center;position:absolute} .im_message_reply_author{font-weight:700;color:#3a6d99;line-height:16px;margin-bottom:3px} +.non_osx .im_message_reply_author{font-size:12px} .im_message_reply_loading{padding:7px 0 8px} .im_reply_message_media,.im_reply_message_service{color:#999} .im_message_reply_body{line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-bottom:1px} @@ -1436,7 +1440,7 @@ div.im_message_author,div.im_message_body{display:block;overflow:hidden} a.im_message_fwd_photo{position:absolute;margin-top:1px} .im_message_fwd_date{padding:0} .im_message_text{word-wrap:break-word;line-height:150%} -.im_message_mymention{background:#FFF8CC} +.im_message_mymention{background:#fff8cc} .im_history_empty,.im_history_not_selected{visibility:hidden;text-align:center;color:#999;font-size:16px;line-height:18px;padding:1px 50px;margin:0} .im_history_empty.vertical-aligned,.im_history_not_selected.vertical-aligned{visibility:visible} .im_history_to_bottom .im_history_empty,.im_history_to_bottom .im_history_not_selected{display:none} @@ -1444,9 +1448,9 @@ a.im_message_fwd_photo{position:absolute;margin-top:1px} .im_send_form_wrap{position:relative} .im_send_form{margin:0 auto;position:absolute;bottom:0} .im_attach_input,.im_media_attach_input{cursor:pointer;font-size:120px!important;opacity:.01;position:absolute;z-index:100;margin:0;padding:0;top:0;right:0} -.im_send_dropbox_wrap{background:#FFF;display:none;padding:17px 10px 0;border:1px dashed #999;overflow:hidden;text-align:center;color:#999;position:absolute} +.im_send_dropbox_wrap{background:#fff;display:none;padding:17px 10px 0;border:1px dashed #999;overflow:hidden;text-align:center;color:#999;position:absolute} textarea.im_message_field{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:50px;resize:none} -.icon-online{background:#6ec26d;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:33px} +.icon-online{background:#6ec26d;border:1px solid #fff;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:33px} .img_fullsize_wrap,a.img_fullsize{display:block;text-align:center} img.img_fullsize{margin:0 auto} .document_modal_image_wrap{overflow:auto} @@ -1462,14 +1466,15 @@ img.img_fullsize{margin:0 auto} .media_modal_author:hover{color:inherit} .non_osx .media_modal_author{font-size:12px} .composer_emoji_insert_btn{display:block;position:absolute;right:3px;top:2px;cursor:pointer;padding:0;width:22px;height:22px;margin-top:1px} -.icon-emoji{display:inline-block;width:22px;height:22px;vertical-align:top;background:url(../img/icons/General.png) -9px -335px no-repeat;background-size:40px 778px;opacity:.8} -.composer_emoji_tooltip{display:none;position:absolute;z-index:999;width:254px;margin-left:-116px;margin-top:-245px;border:1px solid #dfdfdf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);background:#FFF;padding:5px 2px 5px 8px} +.icon-emoji{display:inline-block;width:22px;height:22px;vertical-align:top;opacity:.8;background-image:url(../img/icons/General.png?1);background-repeat:no-repeat;background-position:-9px -335px} +.is_2x .icon-emoji{background-image:url(../img/icons/General_2x.png?1);background-size:40px 778px} +.composer_emoji_tooltip{display:none;position:absolute;z-index:999;width:254px;margin-left:-116px;margin-top:-245px;border:1px solid #dfdfdf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);background:#fff;padding:5px 2px 5px 8px} .composer_emoji_tooltip_shown{display:block} .composer_emoji_tooltip_tail{position:absolute;bottom:-14px;left:50%;margin-left:-13px;overflow:hidden;width:26px;height:14px} -.icon-tooltip-tail{background:#FFF;width:18px;height:18px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);display:inline-block;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 1px rgba(0,0,0,.1);box-shadow:1px 1px 1px rgba(0,0,0,.1);border:1px solid #dfdfdf;border-width:0 1px 1px 0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;position:relative;top:-8px;left:4px} +.icon-tooltip-tail{background:#fff;width:18px;height:18px;display:inline-block;border:1px solid #dfdfdf;border-width:0 1px 1px 0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;position:relative;top:-8px;left:4px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 1px rgba(0,0,0,.1);box-shadow:1px 1px 1px rgba(0,0,0,.1)} .composer_emoji_tooltip_tabs{width:100%;margin:5px 0 2px} -.composer_emoji_tooltip_tab{line-height:0;color:#fff;display:inline-block;width:24px;height:29px;background:url(../img/icons/IconsetSmiles.png) no-repeat;background-size:42px 470px;cursor:pointer;opacity:.7;margin:0 5px 0 4px} -.is_1x .composer_emoji_tooltip_tab{background-image:url(../img/icons/IconsetSmiles_1x.png)} +.composer_emoji_tooltip_tab{line-height:0;color:#fff;display:inline-block;width:24px;height:29px;cursor:pointer;opacity:.7;margin:0 5px 0 4px;background-image:url(../img/icons/IconsetSmiles.png?1);background-repeat:no-repeat} +.is_2x .composer_emoji_tooltip_tab{background-image:url(../img/icons/IconsetSmiles_2x.png?1);background-size:42px 470px} .composer_emoji_tooltip_tab.active{opacity:1} .composer_emoji_tooltip_tab_recent{background-position:-9px -306px} .composer_emoji_tooltip_tab_recent.active{background-position:-9px -277px} @@ -1521,7 +1526,7 @@ span.composer_user_photo .peer_initials{line-height:32px;font-size:14px} .composer_sticker_btn{width:78px;height:78px;display:block;display:inline-block;text-align:center;padding:3px} .composer_sticker_btn:hover{background:#f2f6fa} .composer_sticker_image{max-width:72px;max-height:72px} -.composer_rich_textarea{box-sizing:content-box;-moz-box-sizing:content-box;font-size:12px;margin-bottom:10px;padding:6px;min-height:38px;height:auto;width:auto;max-height:284px;overflow:auto;line-height:17px;border:1px solid #d2dbe3;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-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;word-wrap:break-word;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text} +.composer_rich_textarea{font-size:12px;margin-bottom:10px;padding:6px;min-height:38px;height:auto;width:auto;max-height:284px;overflow:auto;line-height:17px;border:1px solid #d2dbe3;border-radius:2px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-ms-box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-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;word-wrap:break-word;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text} .composer_rich_textarea:empty:before{content:attr(placeholder);color:#9aa2ab} .composer_rich_textarea:active:before,.composer_rich_textarea:focus:before{content:none} .composer_rich_textarea img{width:20px;height:20px;vertical-align:middle;margin:-3px 0 0} @@ -1532,20 +1537,21 @@ span.composer_user_photo .peer_initials{line-height:32px;font-size:14px} .confirm_phone_number{font-weight:700;padding:15px 10px 0;text-align:center} .document_modal_window,.photo_modal_window,.video_modal_window{display:block} .photo_modal_error{color:#999;position:absolute;width:100%;top:50%;margin-top:-20px;padding:0 20px;text-align:center;font-size:1.4em;line-height:160%} -.video_full_error{border-radius:10px;overflow:hidden;background:rgba(0,0,0,.6);color:#FFF;position:absolute;top:50%;margin:-40px 10px 0;padding:10px;text-align:center;font-size:1.4em;line-height:160%} +.video_full_error{border-radius:10px;overflow:hidden;background:rgba(0,0,0,.6);color:#fff;position:absolute;top:50%;margin:-40px 10px 0;padding:10px;text-align:center;font-size:1.4em;line-height:160%} .settings_modal_wrap .im_attach_input{z-index:999} .settings_modal_username_link,.settings_modal_username_link:hover{color:inherit} .settings_external_service{line-height:0;display:inline-block;padding:7px 9px} .settings_about_section_body{padding-right:0} .settings_about_section_body p{margin-top:7px;margin-bottom:3px} -.icon-github{display:inline-block;width:59px;height:18px;background:url(../img/icons/AboutLogos_2x.png) 0 -5px no-repeat;background-size:60px 136px} +.icon-github{display:inline-block;width:59px;height:18px;background-image:url(../img/icons/AboutLogos.png?1);background-repeat:no-repeat;background-position:0 -5px} +.is_2x .icon-github{background-image:url(../img/icons/AboutLogos_2x.png?1);background-size:60px 136px} a:hover .icon-github{background-position:0 -43px} -.icon-twitter{display:inline-block;width:20px;height:15px;margin-top:1px;background:url(../img/icons/AboutLogos_2x.png) 0 -81px no-repeat;background-size:60px 136px} +.icon-twitter{display:inline-block;width:20px;height:15px;margin-top:1px;background-image:url(../img/icons/AboutLogos.png?1);background-repeat:no-repeat;background-position:0 -81px} +.is_2x .icon-twitter{background-image:url(../img/icons/AboutLogos_2x.png?1);background-size:60px 136px} a:hover .icon-twitter{background-position:0 -116px} -.is_1x .icon-github,.is_1x .icon-twitter{background-image:url(../img/icons/AboutLogos_1x.png)} .contacts_modal_search{padding:0 0 14px;position:relative} -.contacts_modal_search_field{font-size:12px;line-height:normal;background:url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 1171px;border:1px solid #d9dbde;border-radius:2px;padding:6px 15px 6px 30px;margin:0} -.is_1x .contacts_modal_search_field{background-image:url(../img/icons/IconsetW_1x.png)} +.contacts_modal_search_field{font-size:12px;line-height:normal;border:1px solid #d9dbde;border-radius:2px;padding:6px 15px 6px 30px;margin:0;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:-6px -205px} +.is_2x .contacts_modal_search_field{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} a.contacts_modal_search_clear{right:9px;margin-top:-24px} .contacts_scrollable_wrap{outline:0!important} .contacts_modal_contacts_empty{visibility:hidden;text-align:center;color:#999;font-size:16px;line-height:160%;padding:1px 50px;margin:0} @@ -1567,8 +1573,8 @@ a.contacts_modal_search_clear{right:9px;margin-top:-24px} a.chat_modal_participant_photo{width:40px;height:40px;margin-right:10px;border-radius:2px;overflow:hidden} img.chat_modal_participant_photo{width:40px;height:40px} .chat_modal_members_forbidden{color:#999} -.icon-contact-tick{position:absolute;right:10px;top:17px;display:inline-block;width:25px;height:25px;background:url(../img/icons/IconsetW.png) -9px -516px no-repeat;background-size:42px 1171px;opacity:.5} -.is_1x .icon-contact-tick{background-image:url(../img/icons/IconsetW_1x.png)} +.icon-contact-tick{position:absolute;right:10px;top:17px;display:inline-block;width:25px;height:25px;opacity:.5;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:-9px -516px} +.is_2x .icon-contact-tick{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} .contacts_modal_members_list .contacts_modal_contact_wrap:hover .icon-contact-tick{background-position:-9px -481px;opacity:.5} .contacts_modal_members_list .contacts_modal_contact_wrap.active .icon-contact-tick{background-position:-9px -481px;opacity:1} .contacts_modal_members_list .disabled{pointer-events:none} @@ -1593,22 +1599,22 @@ img.chat_modal_participant_photo{width:40px;height:40px} .user_bgcolor_7{background:#73cdd0} .user_bgcolor_8{background:#fba76f} a.peer_photo_init:active,a.peer_photo_init:focus,a.peer_photo_init:hover{text-decoration:none} -.peer_initials{display:block;color:#FFF;text-align:center;text-transform:uppercase} +.peer_initials{display:block;color:#fff;text-align:center;text-transform:uppercase} .im_dialogs_contacts_wrap h5,.im_dialogs_messages_wrap h5{color:#999;font-size:13px;margin-left:20px;font-weight:700} .img_gif_with_progress_wrap{position:relative;overflow:hidden;float:left;margin-top:3px;max-width:100%} .img_gif_thumb{-webkit-filter:blur(2px);-moz-filter:blur(2px);-o-filter:blur(2px);-ms-filter:blur(2px);filter:blur(2px);filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='2');margin:-1px;padding:1px;max-width:100%} .img_gif_image{max-width:100%} -.img_gif_info_wrap{color:#FFF;font-size:10px;position:absolute;bottom:0;left:0;right:0;padding:4px} +.img_gif_info_wrap{color:#fff;font-size:10px;position:absolute;bottom:0;left:0;right:0;padding:4px} .img_gif_label,.img_gif_size{padding:1px 8px;background:rgba(0,0,0,.5);border-radius:3px;overflow:hidden} .img_gif_progress_wrap{position:absolute;bottom:0;left:0;right:0} .img_gif_progress_wrap .tg_progress{background:rgba(0,0,0,.6);border-color:rgba(0,0,0,.6);border-width:8px;height:18px;border-radius:0} -.img_gif_progress_wrap .progress-bar{background:#FFF;height:2px} +.img_gif_progress_wrap .progress-bar{background:#fff;height:2px} .countries_modal_window .modal-dialog{max-width:392px} .countries_modal_window .modal_simple_header{margin-bottom:12px;font-weight:400} .countries_modal_search{padding:0 0 12px;margin:0 20px;position:relative} -.countries_modal_search_field{font-size:12px;line-height:normal;background:url(../img/icons/IconsetW.png) -6px -205px no-repeat #F2F2F2;background-size:42px 1171px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0} -.is_1x .countries_modal_search_field{background-image:url(../img/icons/IconsetW_1x.png)} -.countries_modal_search_field:active,.countries_modal_search_field:focus{background-color:#FFF} +.countries_modal_search_field{font-size:12px;line-height:normal;background-size:42px 1171px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0;background-color:#F2F2F2;background-image:url(../img/icons/IconsetW.png?1);background-repeat:no-repeat;background-position:-6px -205px} +.is_2x .countries_modal_search_field{background-image:url(../img/icons/IconsetW_2x.png?1);background-size:42px 1171px} +.countries_modal_search_field:active,.countries_modal_search_field:focus{background-color:#fff} a.countries_modal_search_clear{right:12px;margin-top:-34px} .countries_modal_wrap .modal-body{padding:14px 0} .countries_scrollable_wrap a.countries_modal_country{clear:both;overflow:hidden;color:#000;padding:8px 26px;font-size:12px;border-radius:0} @@ -1631,8 +1637,8 @@ a.countries_modal_search_clear{right:12px;margin-top:-34px} @keyframes loading_dots{0%{opacity:0} 50%{opacity:1} 100%{opacity:0}} -.telegram_modal_logo{background:url(../img/Telegram72_2x.png) no-repeat;background-size:72px 72px} -.is_1x .telegram_modal_logo{background-image:url(../img/Telegram72.png)} +.telegram_modal_logo{background-image:url(../img/Telegram72.png?1);background-repeat:no-repeat;background-position:0 0} +.is_2x .telegram_modal_logo{background-image:url(../img/Telegram72_2x.png?1);background-size:72px 72px} .changelog_modal_window .modal-dialog{max-width:480px} .changelog_card_wrap{text-align:center;padding:12px 0 18px} .changelog_header{margin-top:15px;font-size:16px} @@ -1643,7 +1649,7 @@ a.countries_modal_search_clear{right:12px;margin-top:-34px} .changelog_footer_wrap{padding:15px 28px 30px 120px} .changelog_github_link{font-size:13px;float:right;color:#999} .changelog_more_link{font-size:13px} -.bad_browser_wrap{border-radius:4px;border:1px solid #ccc;background:#FFF;max-width:600px;margin:50px auto 0;padding:40px} +.bad_browser_wrap{border-radius:4px;border:1px solid #ccc;background:#fff;max-width:600px;margin:50px auto 0;padding:40px} .bad_browser_wrap h2{margin-top:0} .bad_browser_text{font-size:14px;line-height:160%;margin:25px 0 30px} #nacl_listener{position:absolute;left:-10000px} @@ -1653,24 +1659,26 @@ a.peer_modal_photo,div.peer_modal_photo{display:block;margin-right:19px} .peer_modal_photo .peer_initials{line-height:72px;font-size:22px} .peer_modal_profile_name{font-size:14px;padding:15px 0 9px;font-weight:700} .peer_modal_profile_description{color:#ccdeed} -.md_modal_split_actions_wrap{position:relative} +.md_modal_split_action{display:block;background:#fff;float:right;position:relative;width:52px;height:52px;margin-left:20px;border-radius:26px;overflow:hidden;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.2);-moz-box-shadow:0 1px 1px rgba(0,0,0,.2);box-shadow:0 1px 1px rgba(0,0,0,.2)} .md_modal_split_actions{position:absolute;right:25px;top:-26px} -.md_modal_split_action{display:block;background:#FFF;float:right;position:relative;width:52px;height:52px;margin-left:20px;border-radius:26px;overflow:hidden;box-shadow:0 1px 1px rgba(0,0,0,.2)} -.md_modal_split_action_camera{display:inline-block;width:20px;height:18px;background:url(../img/icons/ProfileIcons_2x.png) -10px -164px no-repeat;background-size:40px 360px;margin:17px 0 0 16px} +.md_modal_split_actions_wrap{position:relative} +.md_modal_split_action_camera{display:inline-block;width:20px;height:18px;margin:17px 0 0 16px;background-image:url(../img/icons/ProfileIcons.png?1);background-repeat:no-repeat;background-position:-10px -164px} +.is_2x .md_modal_split_action_camera{background-image:url(../img/icons/ProfileIcons_2x.png?1);background-size:40px 360px} .md_modal_split_action:active .md_modal_split_action_camera,.md_modal_split_action:hover .md_modal_split_action_camera{background-position:-10px -192px} -.md_modal_split_action_twitter{display:inline-block;width:27px;height:22px;background:url(../img/icons/ProfileIcons_2x.png) -7px -280px no-repeat;background-size:40px 360px;margin:17px 0 0 13px} +.md_modal_split_action_twitter{display:inline-block;width:27px;height:22px;margin:17px 0 0 13px;background-image:url(../img/icons/ProfileIcons.png?1);background-repeat:no-repeat;background-position:-7px -280px} +.is_2x .md_modal_split_action_twitter{background-image:url(../img/icons/ProfileIcons_2x.png?1);background-size:40px 360px} .md_modal_split_action:active .md_modal_split_action_twitter,.md_modal_split_action:hover .md_modal_split_action_twitter{background-position:-7px -312px} -.md_modal_split_action_msg{display:inline-block;width:20px;height:20px;background:url(../img/icons/ProfileIcons_2x.png) -10px -220px no-repeat;background-size:40px 360px;margin:18px 0 0 16px} +.md_modal_split_action_msg{display:inline-block;width:20px;height:20px;margin:18px 0 0 16px;background-image:url(../img/icons/ProfileIcons.png?1);background-repeat:no-repeat;background-position:-10px -220px} +.is_2x .md_modal_split_action_msg{background-image:url(../img/icons/ProfileIcons_2x.png?1);background-size:40px 360px} .md_modal_split_action:active .md_modal_split_action_msg,.md_modal_split_action:hover .md_modal_split_action_msg{background-position:-10px -250px} -.is_1x .md_modal_split_action_camera,.is_1x .md_modal_split_action_msg,.is_1x .md_modal_split_action_twitter{background-image:url(../img/icons/ProfileIcons.png)} -.md_modal_sections{padding-top:17px} .md_modal_iconed_section_wrap{position:relative;border-bottom:1px solid #ebebeb;margin:19px 0 0 120px;padding-right:28px} .md_modal_iconed_section_wrap:last-child{border-bottom:0} .md_modal_iconed_section_number{margin-top:0} .md_modal_iconed_section_toggle{margin-top:10px} .md_modal_iconed_section_radio{margin-top:1px} -.md_modal_section_icon{display:inline-block;margin-left:-64px;margin-top:5px;background:url(../img/icons/ProfileIcons_2x.png) no-repeat;background-size:40px 360px;position:absolute} -.is_1x .md_modal_section_icon{background-image:url(../img/icons/ProfileIcons.png)} +.md_modal_sections{padding-top:17px} +.md_modal_section_icon{display:inline-block;margin-left:-64px;margin-top:5px;position:absolute;background-image:url(../img/icons/ProfileIcons.png?1);background-repeat:no-repeat;background-position:0 0} +.is_2x .md_modal_section_icon{background-image:url(../img/icons/ProfileIcons_2x.png?1);background-size:40px 360px} .md_modal_iconed_section_toggle .md_modal_section_icon{margin-top:8px} .md_modal_iconed_section_radio .md_modal_section_icon{margin-top:10px} .md_modal_iconed_section_link .md_modal_section_icon{margin-top:4px} @@ -1689,13 +1697,13 @@ a.peer_modal_photo,div.peer_modal_photo{display:block;margin-right:19px} .md_modal_section_select_wrap .md_modal_section_param_name{padding-top:1px} .md_modal_section_select .dropdown-toggle{font-size:12px;padding:0;line-height:normal} .md_modal_section_select .dropdown-menu{left:-15px} -.md_modal_section_link_wrap{padding-bottom:15px} .md_modal_section_link{color:inherit;display:block;padding:4px 0} +.md_modal_section_link_wrap{padding-bottom:15px} .md_modal_section_link:hover{text-decoration:none} +.md_modal_section_version{color:#777;display:inline-block;margin-left:-70px;position:absolute} +.md_modal_section_splitter{border-top:1px solid #dfdfdf;height:12px;background:#f5f5f5;-webkit-box-shadow:inset 0 1px 1px #ededed;-moz-box-shadow:inset 0 1px 1px #ededed;box-shadow:inset 0 1px 1px #ededed} .md_modal_versioned_section_wrap{position:relative;border-bottom:1px solid #ebebeb;margin:19px 0 0 120px;padding-right:28px} .md_modal_versioned_section_wrap:last-child{border-bottom:0} -.md_modal_section_version{color:#777;display:inline-block;margin-left:-70px;position:absolute} -.md_modal_section_splitter{border-top:1px solid #dfdfdf;box-shadow:inset 0 1px 1px #ededed;height:12px;background:#f5f5f5} .md_modal_list_peer_wrap{padding-bottom:16px} .md_modal_list_peer_action{font-size:13px;padding:3px;margin:-3px} .md_modal_list_peer_photo{width:42px;height:42px;line-height:42px;border-radius:50%;overflow:hidden} @@ -1706,5 +1714,5 @@ a.md_modal_list_peer_name{color:inherit} .md_modal_list_peer_description .status_online,.md_modal_list_peer_description.status_online{color:#3a6d99} .md_modal_footer{padding:15px 27px} .md_photo_loading{display:block;width:72px;height:72px;border-radius:36px;overflow:hidden;background:#48769b;text-align:center;line-height:72px;padding:0} -.md_photo_loading i{display:inline-block;background:#FFF;width:8px;height:8px;border-radius:4px;vertical-align:middle;border:0;margin-left:6px} +.md_photo_loading i{display:inline-block;background:#fff;width:8px;height:8px;border-radius:4px;vertical-align:middle;border:0;margin-left:6px} .md_photo_loading i:first-child{margin-left:0} \ No newline at end of file diff --git a/css/desktop.css b/css/desktop.css index caa68f51..51c82e02 100644 --- a/css/desktop.css +++ b/css/desktop.css @@ -1,5 +1,8 @@ -.tg_head_wrap { -} +/* Thanks to @brandonb927 + https://gist.github.com/brandonb927/3874012 + + Prepending 'only screen and ' to each media query breaks nested media queries */ +/* app desktop css */ .tg_head_split { max-width: 1010px; margin: 0 auto; @@ -15,7 +18,6 @@ width: 69%; white-space: nowrap; } - .tg_head_btn { display: block; font-weight: bold; @@ -26,18 +28,16 @@ } .dropdown.open .tg_head_btn, .tg_head_btn:hover { - color: #FFF; + color: #fff; text-decoration: none; background: #497799; } - .dropdown.open .tg_head_btn { position: relative; z-index: 5; } - .tg_head_logo_dropdown .dropdown-toggle { - color: #FFF; + color: #fff; padding: 17px 20px 15px 22px; display: block; font-size: 14px; @@ -57,7 +57,7 @@ display: inline-block; width: 18px; height: 14px; - -webkit-transform: translate3d(0,0,0); + -webkit-transform: translate3d(0, 0, 0); } .tg_head_logo_dropdown .icon-hamburger-wrap { margin: 0 40px 0 0; @@ -76,14 +76,13 @@ margin-bottom: 4px; margin-top: 4px; } - .tg_head_logo_dropdown .icon-bar { opacity: 1; - -webkit-transition: -webkit-transform .1s ease-in; - -o-transition: -o-transform .1s ease; - -ms-transition: -ms-transform .1s ease; - -moz-transition: -moz-transform .1s ease; - transition: transform .1s ease-in; + -webkit-transition: -webkit-transform 0.1s ease-in; + -o-transition: -o-transform 0.1s ease; + -ms-transition: -ms-transform 0.1s ease; + -moz-transition: -moz-transform 0.1s ease; + transition: transform 0.1s ease-in; -webkit-transform-origin: 50% 50%; -o-transform-origin: 50% 50%; -ms-transform-origin: 50% 50%; @@ -93,63 +92,64 @@ .tg_head_logo_dropdown:not(.open) .dropdown-toggle:hover .icon-bar:nth-child(1) { -webkit-transform: translateY(-1px); -moz-transform: translateY(-1px); - -ms-transform: translateY(-1px); -o-transform: translateY(-1px); + -ms-transform: translateY(-1px); transform: translateY(-1px); } .tg_head_logo_dropdown:not(.open) .dropdown-toggle:hover .icon-bar:nth-child(3) { -webkit-transform: translateY(1px); -moz-transform: translateY(1px); - -ms-transform: translateY(1px); -o-transform: translateY(1px); + -ms-transform: translateY(1px); transform: translateY(1px); } - .tg_head_logo_dropdown.open .icon-bar:nth-child(1) { - -webkit-transform: translate3d(0,6px,0) rotate(45deg); - -moz-transform: translate3d(0,6px,0) rotate(45deg); - -ms-transform: translate3d(0,6px,0) rotate(45deg); - -o-transform: translate3d(0,6px,0) rotate(45deg); - transform: translate3d(0,6px,0) rotate(45deg); + -webkit-transform: translate3d(0, 6px, 0) rotate(45deg); + -moz-transform: translate3d(0, 6px, 0) rotate(45deg); + -o-transform: translate3d(0, 6px, 0) rotate(45deg); + -ms-transform: translate3d(0, 6px, 0) rotate(45deg); + transform: translate3d(0, 6px, 0) rotate(45deg); } .tg_head_logo_dropdown.open .icon-bar:nth-child(2) { opacity: 0; } .tg_head_logo_dropdown.open .icon-bar:nth-child(3) { - -webkit-transform: translate3d(0,-6px,0) rotate(-45deg); - -moz-transform: translate3d(0,-6px,0) rotate(-45deg); - -ms-transform: translate3d(0,-6px,0) rotate(-45deg); - -o-transform: translate3d(0,-6px,0) rotate(-45deg); - transform: translate3d(0,-6px,0) rotate(-45deg); + -webkit-transform: translate3d(0, -6px, 0) rotate(-45deg); + -moz-transform: translate3d(0, -6px, 0) rotate(-45deg); + -o-transform: translate3d(0, -6px, 0) rotate(-45deg); + -ms-transform: translate3d(0, -6px, 0) rotate(-45deg); + transform: translate3d(0, -6px, 0) rotate(-45deg); } - - .tg_head_logo_dropdown .dropdown-menu { border-radius: 0; padding: 9px 0 7px; - margin: -1px 0 0; float: none; right: 0; border: 1px solid rgba(15, 60, 96, 0.2); border-left-color: #b5c3d0; border-right-color: #b5c3d0; - -webkit-box-shadow: 0px 1px 3px 0px rgba(60,75,87,0.27); - -moz-box-shadow: 0px 1px 3px 0px rgba(60,75,87,0.27); - box-shadow: 0px 1px 3px 0px rgba(60,75,87,0.27); + -webkit-box-shadow: 0px 1px 3px 0px rgba(60, 75, 87, 0.27); + -moz-box-shadow: 0px 1px 3px 0px rgba(60, 75, 87, 0.27); + box-shadow: 0px 1px 3px 0px rgba(60, 75, 87, 0.27); overflow: hidden; } - @-webkit-keyframes rollIn { - from { transform: translateY(-220px); } - to { transform: translateY(0); } + from { + transform: translateY(-220px); + } + to { + transform: translateY(0); + } } - @keyframes rollIn { - from { transform: translateY(-220px); } - to { transform: translateY(0); } + from { + transform: translateY(-220px); + } + to { + transform: translateY(0); + } } - .tg_head_logo_dropdown.open .dropdown-menu { -webkit-animation: rollIn 0.1s ease-in; animation: rollIn 0.1s ease-in; @@ -167,16 +167,20 @@ .tg_head_logo_dropdown .dropdown-menu > li > a span { vertical-align: top; } - .icon-new-group { width: 20px; height: 14px; margin-right: 38px; display: inline-block; - background: url(../img/icons/General.png) no-repeat -10px -111px; - background-size: 40px 778px; vertical-align: top; margin-top: 3px; + background-image: url(../img/icons/General.png?1); + background-repeat: no-repeat; + background-position: -10px -111px; +} +.is_2x .icon-new-group { + background-image: url(../img/icons/General_2x.png?1); + background-size: 40px 778px; } .icon-contacts { width: 18px; @@ -185,7 +189,12 @@ margin-top: 2px; display: inline-block; vertical-align: top; - background: url(../img/icons/General.png) no-repeat -11px -135px; + background-image: url(../img/icons/General.png?1); + background-repeat: no-repeat; + background-position: -11px -135px; +} +.is_2x .icon-contacts { + background-image: url(../img/icons/General_2x.png?1); background-size: 40px 778px; } .icon-settings { @@ -195,7 +204,12 @@ margin-top: 1px; display: inline-block; vertical-align: top; - background: url(../img/icons/General.png) no-repeat -10px -163px; + background-image: url(../img/icons/General.png?1); + background-repeat: no-repeat; + background-position: -10px -163px; +} +.is_2x .icon-settings { + background-image: url(../img/icons/General_2x.png?1); background-size: 40px 778px; } .icon-faq { @@ -205,7 +219,12 @@ margin-top: 1px; display: inline-block; vertical-align: top; - background: url(../img/icons/General.png) no-repeat -10px -637px; + background-image: url(../img/icons/General.png?1); + background-repeat: no-repeat; + background-position: -10px -637px; +} +.is_2x .icon-faq { + background-image: url(../img/icons/General_2x.png?1); background-size: 40px 778px; } .icon-about { @@ -214,17 +233,14 @@ margin-right: 37px; display: inline-block; vertical-align: top; - background: url(../img/icons/General.png) no-repeat -10px -193px; - background-size: 40px 778px; + background-image: url(../img/icons/General.png?1); + background-repeat: no-repeat; + background-position: -10px -193px; } -.is_1x .icon-new-group, -.is_1x .icon-contacts, -.is_1x .icon-settings, -.is_1x .icon-faq, -.is_1x .icon-about { - background-image: url(../img/icons/General_1x.png); +.is_2x .icon-about { + background-image: url(../img/icons/General_2x.png?1); + background-size: 40px 778px; } - .tg_head_connecting_text { color: #b9cfe3; padding: 14px 15px; @@ -236,10 +252,10 @@ .tg_head_connecting_wrap .tg_head_btn { float: left; } -.tg_head_peer_dropdown { +.tg_head_msgs_edit_btn { float: right; } -.tg_head_msgs_edit_btn { +.tg_head_peer_dropdown { float: right; } .tg_head_peer_status { @@ -249,18 +265,16 @@ max-width: 100%; border-radius: 0; padding: 9px 0; - margin: -1px 0 0 0; border: 1px solid rgba(15, 60, 96, 0.2); - -webkit-box-shadow: 0px 1px 3px 0px rgba(60,75,87,0.27); - -moz-box-shadow: 0px 1px 3px 0px rgba(60,75,87,0.27); - box-shadow: 0px 1px 3px 0px rgba(60,75,87,0.27); + -webkit-box-shadow: 0px 1px 3px 0px rgba(60, 75, 87, 0.27); + -moz-box-shadow: 0px 1px 3px 0px rgba(60, 75, 87, 0.27); + box-shadow: 0px 1px 3px 0px rgba(60, 75, 87, 0.27); } .tg_head_peer_more_dropdown .dropdown-menu { left: auto; right: 0; } - .tg_head_peer_dropdown .dropdown-menu > li > a { font-size: 13px; line-height: 15px; @@ -270,12 +284,11 @@ .tg_head_peer_dropdown .dropdown-menu > li > a:hover { background: #f3f6fa; } - .tg_head_peer_return_btn { float: right; } .tg_head_peer_return_count { - color: #FFF; + color: #fff; margin-left: 3px; } .tg_head_peer_title_wrap { @@ -292,7 +305,6 @@ -ms-text-overflow: ellipsis; text-overflow: ellipsis; } - .tg_head_peer_title { display: inline-block; color: #fff; @@ -303,10 +315,9 @@ overflow: hidden; vertical-align: top; } - .tg_head_peer_media { padding: 14px 19px; - color: #FFF; + color: #fff; font-size: 13px; line-height: 20px; float: left; @@ -317,16 +328,18 @@ .icon-filter-documents, .icon-filter-audio { display: inline-block; - background: url(../img/icons/General.png) no-repeat 0 0; - background-size: 40px 778px; margin-right: 12px; vertical-align: top; -} -.is_1x .icon-filter-photos, -.is_1x .icon-filter-video, -.is_1x .icon-filter-documents, -.is_1x .icon-filter-audio { - background-image: url(../img/icons/General_1x.png); + background-image: url(../img/icons/General.png?1); + background-repeat: no-repeat; + background-position: 0 0; +} +.is_2x .icon-filter-photos, +.is_2x .icon-filter-video, +.is_2x .icon-filter-documents, +.is_2x .icon-filter-audio { + background-image: url(../img/icons/General_2x.png?1); + background-size: 40px 778px; } .icon-filter-photos { width: 18px; @@ -352,24 +365,21 @@ background-position: -13px -306px; margin-top: 0; } - - - /** initial setup **/ .nano { - position : relative; - width : 100%; - height : 100%; - overflow : hidden; + position: relative; + width: 100%; + height: 100%; + overflow: hidden; } .nano > .nano-content { - position : absolute; - overflow : scroll; - overflow-x : hidden; - top : 0; - right : 0; - bottom : 0; - left : 0; + position: absolute; + overflow: scroll; + overflow-x: hidden; + top: 0; + right: 0; + bottom: 0; + left: 0; } .nano > .nano-content:focus { outline: thin dotted; @@ -381,89 +391,84 @@ display: block; } .nano > .nano-pane { - background : rgba(0,0,0,.25); - position : absolute; - width : 10px; - right : 0; - top : 0; - bottom : 0; - visibility : hidden\9; /* Target only IE7 and IE8 with this hack */ - opacity : .01; - -webkit-transition : .2s; - -moz-transition : .2s; - -o-transition : .2s; - transition : .2s; - -moz-border-radius : 5px; - -webkit-border-radius : 5px; - border-radius : 5px; + background: rgba(0, 0, 0, 0.25); + position: absolute; + width: 10px; + right: 0; + top: 0; + bottom: 0; + visibility: hidden\9; + /* Target only IE7 and IE8 with this hack */ + opacity: .01; + -webkit-transition: .2s; + -moz-transition: .2s; + -o-transition: .2s; + transition: .2s; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } .nano > .nano-pane > .nano-slider { background: #444; - background: rgba(0,0,0,.5); - position : relative; - margin : 0 1px; - -moz-border-radius : 3px; - -webkit-border-radius : 3px; - border-radius : 3px; + background: rgba(0, 0, 0, 0.5); + position: relative; + margin: 0 1px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; } -.nano:hover > .nano-pane, .nano-pane.active, .nano-pane.flashed { - visibility : visible\9; /* Target only IE7 and IE8 with this hack */ - opacity : 0.99; +.nano:hover > .nano-pane, +.nano-pane.active, +.nano-pane.flashed { + visibility: visible\9; + /* Target only IE7 and IE8 with this hack */ + opacity: 0.99; } .composer_emoji_tooltip { z-index: 1001; } .composer_emoji_tooltip .nano > .nano-pane { - background : rgba(255,255,255,0.0); + background: rgba(255, 255, 255, 0); right: -2px; } .composer_emoji_tooltip .nano > .nano-pane > .nano-slider { background: #d1d1d1; margin: 0 3px 0 4px; } - .countries_modal_col .nano > .nano-pane { - background : rgba(3,36,64,0.08); - width : 3px; + background: rgba(3, 36, 64, 0.08); + width: 3px; right: 6px; top: 0; - -webkit-transition : .2s; - -moz-transition : .2s; - -o-transition : .2s; - transition : .2s; - -moz-border-radius : 0; - -webkit-border-radius : 0; - border-radius : 0; + -webkit-transition: .2s; + -moz-transition: .2s; + -o-transition: .2s; + transition: .2s; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } .countries_modal_col .nano > .nano-pane > .nano-slider { - background : rgba(3,46,79,0.22); + background: rgba(3, 46, 79, 0.22); margin: 0; - -moz-border-radius : 0; - -webkit-border-radius : 0; - border-radius : 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - - - .im_page_wrap { - background: #FFF; + background: #fff; max-width: 1010px; min-width: 300px; margin: 0 auto; - -webkit-box-shadow: 0px 1px 0 #dfe5ec; - -moz-box-shadow: 0px 1px 0 #dfe5ec; - box-shadow: 0px 1px 0 #dfe5ec; - + -moz-box-shadow: 0px 1px 0 #dfe5ec; + box-shadow: 0px 1px 0 #dfe5ec; border-radius: 0 0 3px 3px; - border-left: 1px solid #dfe5ec; border-right: 1px solid #dfe5ec; border-bottom: 1px solid #d2dbe3; overflow: hidden; } - - .footer_wrap { font-size: 11px; text-align: center; @@ -496,11 +501,9 @@ a.footer_link.active:active { color: #8499aa; text-decoration: none; } - .footer_link_divider { padding: 0 5px; } - .im_dialogs_col { margin-right: -7px; } @@ -512,7 +515,6 @@ a.footer_link.active:active { } .im_dialogs_scrollable_wrap { padding: 0 7px 0 0; - /* Hardware acceleration in Safari */ -webkit-transform: translateZ(0); -webkit-perspective: 1000; @@ -522,25 +524,24 @@ a.footer_link.active:active { padding: 0; } .im_dialogs_col .nano > .nano-pane { - background : rgba(0,0,0,0.0); - width : 12px; + background: rgba(0, 0, 0, 0); + width: 12px; right: 0px; - -moz-border-radius : 0; - -webkit-border-radius : 0; - border-radius : 0; - -webkit-transition : none; - -moz-transition : none; - -o-transition : none; - transition : none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; } .im_dialogs_col .nano > .nano-pane > .nano-slider { - background: rgba(30, 85,127 , 0.3); + background: rgba(30, 85, 127, 0.3); margin: 0 5px; - -moz-border-radius : 0; - -webkit-border-radius : 0; - border-radius : 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; } - .im_history_col_wrap { float: left; width: 69%; @@ -554,29 +555,27 @@ a.footer_link.active:active { .im_history_col .nano > .nano-pane, .contacts_modal_col .nano > .nano-pane, .im_dialogs_modal_col .nano > .nano-pane { - background : rgba(216,223,225,0.45); /*45% d8dfe5*/ - width : 9px; + background: rgba(216, 223, 225, 0.45); + /*45% d8dfe5*/ + width: 9px; right: 0; top: 0; - -moz-border-radius : 2px; - -webkit-border-radius : 2px; - border-radius : 2px; - - -webkit-transition : none; - -moz-transition : none; - -o-transition : none; - transition : none; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; } .contacts_modal_col .nano > .nano-pane { width: 5px; right: 4px; } - .im_dialogs_modal_col .nano > .nano-pane { width: 6px; right: 2px; } - .im_history_col .nano > .nano-pane { top: 10px; right: 8px; @@ -584,21 +583,17 @@ a.footer_link.active:active { .im_history_col .nano > .nano-pane > .nano-slider, .contacts_modal_col .nano > .nano-pane > .nano-slider, .im_dialogs_modal_col .nano > .nano-pane > .nano-slider { - background : rgba(137,160,179,0.50); /*50% 89a0b3*/ + background: rgba(137, 160, 179, 0.5); + /*50% 89a0b3*/ margin: 0; - -moz-border-radius : 2px; - -webkit-border-radius : 2px; - border-radius : 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; } - - - - .im_history_no_dialogs_wrap { margin: 122px 170px 60px; text-align: center; } - .im_history_appending { -webkit-transition: all ease-in-out 0.2s; -moz-transition: all ease-in-out 0.2s; @@ -606,7 +601,6 @@ a.footer_link.active:active { -o-transition: all ease-in-out 0.2s; transition: all ease-in-out 0.2s; } - .im_history_typing_wrap { line-height: 18px; width: 100%; @@ -626,7 +620,6 @@ a.footer_link.active:active { color: #999; font-weight: bold; } - /* Contacts modal */ .contacts_modal_window .modal-dialog { max-width: 420px; @@ -641,14 +634,13 @@ a.footer_link.active:active { .contacts_modal_members_list .active a.contacts_modal_contact, .contacts_modal_members_list .active a.contacts_modal_contact:hover { background: #6490b1; - color: #FFF; + color: #fff; } .contacts_modal_members_list .active a.contacts_modal_contact .md_modal_list_peer_description, .contacts_modal_members_list .active a.contacts_modal_contact:hover .md_modal_list_peer_description, .contacts_modal_members_list .active a.contacts_modal_contact .md_modal_list_peer_description .status_online { - color: #FFF; + color: #fff; } - .icon-message-status { pointer-events: none; background: #4eabf1; @@ -681,14 +673,13 @@ a.footer_link.active:active { .im_message_error_btn .icon-message-status:hover { opacity: 1; } - /* Messages edit panel */ .im_edit_delete_btn, .im_edit_forward_btn, .im_edit_reply_btn { border-radius: 2px; padding: 7px 17px; - font-weight: normal; + font-weight: bold; font-size: 12px; line-height: 18px; margin: 6px 0 6px 14px; @@ -708,8 +699,6 @@ a.footer_link.active:active { border-radius: 2px; overflow: hidden; margin: 6px 6px; -} -.im_edit_cancel_link { float: right; } .im_edit_selected_actions { @@ -719,7 +708,6 @@ a.footer_link.active:active { .im_selected_count { color: #b9cfe3; } - .im_submit { color: #499dd9; font-size: 13px; @@ -738,7 +726,6 @@ a.footer_link.active:active { color: #3589c5; background: inherit; } - .composer_emoji_panel { display: block; height: 30px; @@ -752,10 +739,6 @@ a.footer_link.active:active { border-radius: 2px; margin: -1px 0 2px -1px; } -/*.composer_emoji_panel a:hover { - background-color: #edf2f5; -}*/ - .im_message_selected .im_message_date, .im_message_selected .im_message_document_size, .im_message_selected .im_message_audio_duration, @@ -768,7 +751,6 @@ a.footer_link.active:active { .im_history_selectable .im_message_outer_wrap:hover .im_message_fwd_date { color: #899daf; } - .im_content_message_select_area { display: none; cursor: pointer; @@ -786,11 +768,13 @@ a.footer_link.active:active { width: 26px; height: 26px; margin: 16px 0 0 40px; - background: url(../img/icons/IconsetW.png) -9px -516px no-repeat; - background-size: 42px 1171px; + background-image: url(../img/icons/IconsetW.png?1); + background-repeat: no-repeat; + background-position: -9px -516px; } -.is_1x .icon-select-tick { - background-image: url(../img/icons/IconsetW_1x.png); +.is_2x .icon-select-tick { + background-image: url(../img/icons/IconsetW_2x.png?1); + background-size: 42px 1171px; } @media (min-width: 1024px) { .im_content_message_select_area { @@ -800,7 +784,6 @@ a.footer_link.active:active { position: relative; } } - .im_message_selected .icon-select-tick, .im_history_selectable .im_message_outer_wrap:hover .icon-select-tick, .im_content_message_select_area:hover .icon-select-tick { @@ -811,7 +794,6 @@ a.footer_link.active:active { .im_message_selected .icon-select-tick { opacity: 1 !important; } - /* Dialogs modal */ .peer_select_window .modal-dialog { max-width: 420px; @@ -820,8 +802,10 @@ a.footer_link.active:active { padding-top: 15px; } .peer_select_modal_footer { - box-shadow: 0 -1px 0px rgba(0,0,0,0.05); padding: 15px 10px 15px; + -webkit-box-shadow: 0 -1px 0px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 -1px 0px rgba(0, 0, 0, 0.05); + box-shadow: 0 -1px 0px rgba(0, 0, 0, 0.05); } .peer_select_modal_recipients_wrap { padding: 6px 0 0 10px; @@ -842,23 +826,19 @@ a.footer_link.active:active { text-overflow: ellipsis; vertical-align: bottom; } - @media (max-height: 600px), (max-width: 1010px) { .im_page_wrap { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; border-bottom: 0; border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } - .footer_wrap { display: none; } } - @media (max-width: 900px) { - /* Status ticks */ .icon-message-status, .im_message_error_btn, @@ -869,30 +849,32 @@ a.footer_link.active:active { display: inline-block; width: 16px; height: 10px; - background: url(../img/icons/Checks2_2x.png); - background-size: 16px 10px; top: 2px; position: relative; + background-image: url(../img/icons/Checks2.png?1); + background-repeat: no-repeat; + background-position: 0 0; } - .is_1x .im_message_out .icon-message-status-tick { - background-image: url(../img/icons/Checks2_1x.png); + .is_2x .im_message_out .icon-message-status-tick { + background-image: url(../img/icons/Checks2_2x.png?1); + background-size: 16px 10px; } .im_message_pending .icon-message-status-tick { display: none; } .im_message_unread .icon-message-status-tick { - background: url(../img/icons/Checks1_2x.png); - background-size: 16px 10px; + background-image: url(../img/icons/Checks1.png?1); + background-repeat: no-repeat; + background-position: 0 0; } - .is_1x .im_message_unread .icon-message-status-tick { - background-image: url(../img/icons/Checks1_1x.png); + .is_2x .im_message_unread .icon-message-status-tick { + background-image: url(../img/icons/Checks1_2x.png?1); + background-size: 16px 10px; } .im_message_date { padding: 0; } } - - .im_message_fwd_author_wrap { margin: 1px 0 4px; display: inline-block; @@ -905,7 +887,6 @@ a.footer_link.active:active { .im_message_fwd .im_message_media { margin-left: 52px; } - .im_send_panel_wrap { max-width: 554px; padding-bottom: 23px; @@ -915,7 +896,6 @@ a.footer_link.active:active { left: 70px; right: 72px; } - .im_panel_peer_photo, .im_panel_own_photo { width: 52px; @@ -940,10 +920,9 @@ a.im_panel_peer_photo .peer_initials { font-size: 18px; line-height: 50px; } - .im_panel_peer_online { background: #6ec26d; - border: 2px solid #FFF; + border: 2px solid #fff; display: block; width: 14px; height: 14px; @@ -953,31 +932,6 @@ a.im_panel_peer_photo .peer_initials { margin-top: -12px; margin-left: 36px; } - -/*.composer_emoji_insert_btn { - display: block; - position: absolute; - right: 3px; - top: 2px; - cursor: pointer; - padding: 0; - - width: 22px; - height: 22px; - margin-top: 1px; -}*/ -/*.icon-emoji { - display: inline-block; - width: 22px; - height: 22px; - vertical-align: top; - background: url(../img/icons/General.png) no-repeat -9px -335px; - background-size: 40px 778px; - opacity: 0.8; -}*/ -.is_1x .icon-emoji { - background-image: url(../img/icons/General_1x.png); -} .composer_emoji_insert_btn:hover .icon-emoji { opacity: 1; } @@ -986,19 +940,6 @@ a.im_panel_peer_photo .peer_initials { background-position: -9px -367px; opacity: 1; } - - - - - - - - - - - - - .im_send_field_wrap { margin-bottom: 15px; position: relative; @@ -1023,32 +964,31 @@ a.im_panel_peer_photo .peer_initials { outline: none; box-shadow: 0 2px 0 0 #77b7e4; } - +.icon-paperclip { + display: inline-block; + width: 18px; + height: 17px; + vertical-align: top; + opacity: 0.8; + margin: 0; + background-image: url(../img/icons/General.png?1); + background-repeat: no-repeat; + background-position: -11px -455px; +} +.is_2x .icon-paperclip { + background-image: url(../img/icons/General_2x.png?1); + background-size: 40px 778px; +} .im_attach { cursor: pointer; display: block; overflow: hidden; position: relative; - width: 18px; height: 17px; margin-right: 28px; margin-top: 6px; } - -.icon-paperclip { - display: inline-block; - width: 18px; - height: 17px; - vertical-align: top; - background: url(../img/icons/General.png) no-repeat -11px -455px; - background-size: 40px 778px; - opacity: 0.8; - margin: 0; -} -.is_1x .icon-paperclip { - background-image: url(../img/icons/General_1x.png); -} .im_attach:hover .icon-paperclip { opacity: 1; } @@ -1056,33 +996,30 @@ a.im_panel_peer_photo .peer_initials { background-position: -11px -482px; opacity: 1; } - - .im_media_attach { cursor: pointer; display: block; overflow: hidden; position: relative; padding: 0; - width: 20px; height: 18px; margin-top: 5px; margin-right: 25px; } - - .icon-camera { display: inline-block; width: 20px; height: 18px; vertical-align: top; - background: url(../img/icons/General.png) no-repeat -10px -399px; - background-size: 40px 778px; opacity: 0.8; + background-image: url(../img/icons/General.png?1); + background-repeat: no-repeat; + background-position: -10px -399px; } -.is_1x .icon-camera { - background-image: url(../img/icons/General_1x.png); +.is_2x .icon-camera { + background-image: url(../img/icons/General_2x.png?1); + background-size: 40px 778px; } .im_media_attach:hover .icon-camera { opacity: 1; @@ -1091,7 +1028,6 @@ a.im_panel_peer_photo .peer_initials { background-position: -10px -427px; opacity: 1; } - .im_send_reply_wrap { margin-bottom: 5px; } @@ -1106,7 +1042,7 @@ a.im_panel_peer_photo .peer_initials { height: 18px; margin-right: 6px; margin-top: 5px; - -webkit-transform: translate3d(0,0,0); + -webkit-transform: translate3d(0, 0, 0); padding-top: 7px; } .im_send_reply_cancel .icon-reply-bar { @@ -1122,21 +1058,19 @@ a.im_panel_peer_photo .peer_initials { .icon-reply-bar:first-child { -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); transform: rotate(-45deg); transform-origin: 50% 50%; } .icon-reply-bar:last-child { - -webkit-transform: translate3d(0,-2px,0) rotate(45deg); - -moz-transform: translate3d(0,-2px,0) rotate(45deg); - -ms-transform: translate3d(0,-2px,0) rotate(45deg); - -o-transform: translate3d(0,-2px,0) rotate(45deg); - transform: translate3d(0,-2px,0) rotate(45deg); + -webkit-transform: translate3d(0, -2px, 0) rotate(45deg); + -moz-transform: translate3d(0, -2px, 0) rotate(45deg); + -o-transform: translate3d(0, -2px, 0) rotate(45deg); + -ms-transform: translate3d(0, -2px, 0) rotate(45deg); + transform: translate3d(0, -2px, 0) rotate(45deg); } - - -@media (max-height: 700px) { +@media (max-height: 600px) { a.im_panel_peer_photo, a.im_panel_own_photo { display: none; @@ -1165,7 +1099,7 @@ a.im_panel_peer_photo .peer_initials { } .im_media_attach { position: absolute; - top: -7px; + top: -6px; left: -43px; width: 19px; height: 24px; @@ -1175,12 +1109,15 @@ a.im_panel_peer_photo .peer_initials { width: 19px; height: 23px; vertical-align: text-top; - background: url(../img/icons/IconsetW.png) -12px -68px no-repeat; - background-size: 42px 1171px; opacity: 0.8; + margin-top: -1px; + background-image: url(../img/icons/IconsetW.png?1); + background-repeat: no-repeat; + background-position: -12px -68px; } - .is_1x .icon-camera { - background-image: url(../img/icons/IconsetW_1x.png); + .is_2x .icon-camera { + background-image: url(../img/icons/IconsetW_2x.png?1); + background-size: 42px 1171px; } .im_media_attach:hover .icon-camera, .im_media_attach:active .icon-camera { @@ -1203,11 +1140,13 @@ a.im_panel_peer_photo .peer_initials { vertical-align: text-top; opacity: 1; margin: 0; - background: url(../img/icons/IconsetW.png) -10px -771px no-repeat; - background-size: 42px 1171px; + background-image: url(../img/icons/IconsetW.png?1); + background-repeat: no-repeat; + background-position: -10px -771px; } - .is_1x .icon-emoji { - background-image: url(../img/icons/IconsetW_1x.png); + .is_2x .icon-emoji { + background-image: url(../img/icons/IconsetW_2x.png?1); + background-size: 42px 1171px; } .composer_emoji_insert_btn:active .icon-emoji, .is_1x .composer_emoji_insert_btn:active .icon-emoji, @@ -1215,7 +1154,6 @@ a.im_panel_peer_photo .peer_initials { .is_1x .composer_emoji_insert_btn.composer_emoji_insert_btn_on .icon-emoji { background-position: -10px -803px; } - .im_edit_panel_wrap { padding-bottom: 8px; } @@ -1223,7 +1161,6 @@ a.im_panel_peer_photo .peer_initials { margin-bottom: 7px; } } - /* Peer modals */ .user_modal_window .modal-dialog { max-width: 480px; @@ -1259,7 +1196,6 @@ a.im_panel_peer_photo .peer_initials { .modal_section_body dd { display: inline-block; } - .user_modal_main_btn { border: 0; font-size: 12px; @@ -1279,7 +1215,6 @@ a.im_panel_peer_photo .peer_initials { .user_modal_other_btn .dropdown-menu { margin-left: -3px; } - .user_modal_settings_wrap { margin-top: 25px; } @@ -1289,8 +1224,6 @@ a.im_panel_peer_photo .peer_initials { .user_modal_clear { margin-top: 20px; } - - .chat_modal_window .modal-dialog { max-width: 480px; } @@ -1302,7 +1235,6 @@ a.im_panel_peer_photo .peer_initials { color: #999; margin-bottom: 16px; } - .chat_modal_actions_wrap { float: right; position: relative; @@ -1313,7 +1245,6 @@ a.im_panel_peer_photo .peer_initials { .chat_modal_actions_wrap > span.btn { padding: 7px 10px; } - .chat_modal_main_btn { border: 0; font-size: 12px; @@ -1355,7 +1286,6 @@ a.im_panel_peer_photo .peer_initials { .chat_modal_other_btn .dropdown-menu { margin-left: -3px; } - .chat_modal_photo_update_link { display: block; padding: 5px 14px; @@ -1373,11 +1303,9 @@ a.im_panel_peer_photo .peer_initials { color: #262626; background-color: #f5f5f5; } - .chat_modal_settings_wrap { margin-top: 10px; } - .settings_modal_window .modal-dialog { max-width: 480px; } @@ -1422,15 +1350,14 @@ a.im_panel_peer_photo .peer_initials { .settings_profile_save_btn { width: 50px; } - .settings_profile_edit_form { margin-bottom: 0; } .settings_profile_edit_form input { font-size: 12px; line-height: normal; - background: #F2F2F2; - border: 1px solid #F2F2F2; + background: #f2f2f2; + border: 1px solid #f2f2f2; border-radius: 0; padding: 6px 6px 6px 6px; margin-bottom: 0; @@ -1438,16 +1365,14 @@ a.im_panel_peer_photo .peer_initials { } .settings_profile_edit_form input:focus, .settings_profile_edit_form input:active { - background-color: #FFF; + background-color: #fff; } - .settings_send_choose_form input { margin-top: 2px; } .settings_send_choose_form { margin-bottom: 20px; } - .settings_user_phone, .settings_version { color: #999; @@ -1495,7 +1420,6 @@ a.im_panel_peer_photo .peer_initials { height: 6px; margin-top: 2px; } - .icon-volume-outer1 .icon-volume-inner2, .icon-volume-outer1 .icon-volume-inner3, .icon-volume-outer1 .icon-volume-inner4, @@ -1504,14 +1428,11 @@ a.im_panel_peer_photo .peer_initials { .icon-volume-outer3 .icon-volume-inner4 { display: none; } - .settings_volume_slider { width: 100%; max-width: 362px; display: inline-block; } - - .im_message_selected .im_message_outer_wrap, .im_message_focus .im_message_outer_wrap { background: #f2f6fa; @@ -1522,7 +1443,6 @@ a.im_panel_peer_photo .peer_initials { .im_history_selectable .im_message_outer_wrap:hover { background: #f2f6fa; } - .im_message_wrap { max-width: 560px; padding: 0 15px 0 15px; @@ -1530,10 +1450,10 @@ a.im_panel_peer_photo .peer_initials { position: static; } .im_content_message_wrap { - margin: 8px 10px 8px 16px + margin: 8px 10px 8px 16px; } .im_grouped_short .im_content_message_wrap { - margin: 6px 10px 6px 16px + margin: 6px 10px 6px 16px; } .im_grouped_short:last-child .im_content_message_wrap { margin-bottom: 8px; @@ -1543,13 +1463,10 @@ a.im_panel_peer_photo .peer_initials { position: relative; } } - - .im_message_author { margin: 1px 0 4px; display: inline-block; } - /* Groupings */ .im_message_fwd_from { margin-top: 5px; @@ -1588,7 +1505,6 @@ a.im_panel_peer_photo .peer_initials { .im_grouped_fwd_short .im_message_fwd .im_content_message_select_area { margin-top: -8px; } - .im_history_appending .im_content_message_select_area { height: 52px; } @@ -1609,14 +1525,12 @@ a.im_panel_peer_photo .peer_initials { .im_grouped_fwd_short .im_message_fwd_from { display: none; } - .im_grouped_short .im_message_fwd .im_message_date, .im_grouped .im_message_fwd .im_message_date, .im_grouped_fwd .im_message_fwd .im_message_date, .im_grouped_fwd_short .im_message_fwd .im_message_date { display: none; } - .im_grouped_fwd .im_message_fwd, .im_grouped_fwd_short .im_message_fwd { margin-top: 8px; @@ -1625,15 +1539,12 @@ a.im_panel_peer_photo .peer_initials { .im_grouped_fwd_short .im_message_fwd { margin-top: 8px; } - - .tooltip-inner { - background: rgba(0,0,0, 0.8); + background: rgba(0, 0, 0, 0.8); } .tooltip-arrow { opacity: 0.8; } - .im_dialogs_scrollable_wrap a.im_dialog { padding: 7px 16px; } @@ -1664,19 +1575,16 @@ div.im_dialog_photo .peer_initials { .active .im_dialog_date, .active a.im_dialog:hover .im_dialog_date, .active a.im_dialog_selected .im_dialog_date { - color: #FFF; + color: #fff; } - /* Import contact modal */ .import_contact_modal_window .modal-dialog { max-width: 480px; } - .modal-content-animated { -webkit-transition: margin-top linear 0.2s; transition: margin-top linear 0.2s; } - .countries_modal_search { padding: 12px 12px 12px; margin: 0; @@ -1688,8 +1596,25 @@ div.im_dialog_photo .peer_initials { .countries_modal_wrap .md_modal_body { padding-bottom: 15px; } - - +.modal_close { + width: 20px; + height: 21px; + float: right; + margin: 43px 40px 0 0; + opacity: 0.5; + pointer-events: none; + -webkit-transition: .2s; + -moz-transition: .2s; + -o-transition: .2s; + transition: .2s; + background-image: url(../img/icons/PhotoIcons.png?1); + background-repeat: no-repeat; + background-position: -10px -10px; +} +.is_2x .modal_close { + background-image: url(../img/icons/PhotoIcons_2x.png?1); + background-size: 40px 200px; +} .modal_close_wrap { display: none; cursor: pointer; @@ -1699,29 +1624,13 @@ div.im_dialog_photo .peer_initials { width: 50%; height: 100%; } +.modal_close_wrap:hover .modal_close { + opacity: 1; +} .modal_close_wrap_wnext { width: 104px; height: 150px; } -.modal_close { - background: url(../img/icons/PhotoIcons.png) -10px -10px no-repeat; - background-size: 40px 200px; - width: 20px; - height: 21px; - float: right; - margin: 43px 40px 0 0; - opacity: 0.5; - pointer-events: none; - - -webkit-transition : .2s; - -moz-transition : .2s; - -o-transition : .2s; - transition : .2s; -} -.modal_close_wrap:hover .modal_close { - opacity: 1; -} - .modal_prev_wrap, .modal_next_wrap { display: none; @@ -1735,14 +1644,8 @@ div.im_dialog_photo .peer_initials { left: auto; right: 0; } -.modal_prev_active_wrap, -.modal_next_active_wrap { - cursor: pointer; -} .modal_prev, .modal_next { - background: url(../img/icons/PhotoIcons.png) -12px -41px no-repeat; - background-size: 40px 200px; width: 16px; height: 24px; opacity: 0.15; @@ -1750,36 +1653,47 @@ div.im_dialog_photo .peer_initials { top: 50%; pointer-events: none; margin: 0 0 0 38px; - - -webkit-transition : .2s; - -moz-transition : .2s; - -o-transition : .2s; - transition : .2s; + -webkit-transition: .2s; + -moz-transition: .2s; + -o-transition: .2s; + transition: .2s; + background-image: url(../img/icons/PhotoIcons.png?1); + background-repeat: no-repeat; + background-position: -12px -41px; +} +.is_2x .modal_prev, +.is_2x .modal_next { + background-image: url(../img/icons/PhotoIcons_2x.png?1); + background-size: 40px 200px; } .modal_next { margin: 0 0 0 50px; background-position: -14px -75px; } -.modal_prev_active_wrap .modal_prev, +.modal_prev_active_wrap { + cursor: pointer; +} +.modal_prev_active_wrap .modal_prev { + opacity: 0.5; +} +.modal_prev_active_wrap:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.modal_prev_active_wrap:hover .modal_prev { + opacity: 1; +} +.modal_next_active_wrap { + cursor: pointer; +} .modal_next_active_wrap .modal_next { opacity: 0.5; } - -.modal_prev_active_wrap:hover, .modal_next_active_wrap:hover { - background-color: rgba(0,0,0,0.2); + background-color: rgba(0, 0, 0, 0.2); } -.modal_prev_active_wrap:hover .modal_prev, .modal_next_active_wrap:hover .modal_next { opacity: 1; } - -.is_1x .modal_close, -.is_1x .modal_prev, -.is_1x .modal_next { - background-image: url(../img/icons/PhotoIcons_1x.png); -} - @media (min-width: 800px) { .modal_close_wrap, .modal_next_wrap, @@ -1787,7 +1701,12 @@ div.im_dialog_photo .peer_initials { display: block; } } - +.media_modal_bottom_panel { + max-width: 1000px; + margin: 0 auto; + color: rgba(255, 255, 255, 0.6); + position: relative; +} .media_modal_bottom_panel_wrap { position: fixed; bottom: 0; @@ -1796,13 +1715,6 @@ div.im_dialog_photo .peer_initials { height: 64px; background: #313131; } -.media_modal_bottom_panel { - max-width: 1000px; - margin: 0 auto; - color: rgba(255, 255, 255, 0.6); - position: relative; -} - .media_modal_title_wrap { max-width: 300px; margin: 0 auto; @@ -1852,15 +1764,14 @@ div.media_modal_date { white-space: nowrap; text-overflow: ellipsis; } - +.media_modal_wrap .modal-body { + padding: 16px; +} .photo_modal_window, .video_modal_window, .document_modal_window { padding: 0; } -.media_modal_wrap .modal-body { - padding: 16px; -} .video_modal_window .modal-body { padding: 0; } @@ -1875,22 +1786,22 @@ div.media_modal_date { height: 64px; } .media_modal_action_btn:hover { - background: rgba(0,0,0,0.2); + background: rgba(0, 0, 0, 0.2); } - .media_modal_action_btn i { - background: url(../img/icons/PhotoIcons.png) 0 0 no-repeat; - background-size: 40px 200px; display: block; opacity: 0.5; + background-image: url(../img/icons/PhotoIcons.png?1); + background-repeat: no-repeat; + background-position: 0 0; +} +.is_2x .media_modal_action_btn i { + background-image: url(../img/icons/PhotoIcons_2x.png?1); + background-size: 40px 200px; } .media_modal_action_btn:hover i { opacity: 1; } -.is_1x .media_modal_action_btn i { - background-image: url(../img/icons/PhotoIcons_1x.png); -} - .media_modal_action_btn i.media_modal_action_btn_download { background-position: -12px -163px; width: 16px; diff --git a/css/mobile.css b/css/mobile.css index 7e226e95..a43f4529 100644 --- a/css/mobile.css +++ b/css/mobile.css @@ -1,9 +1,11 @@ +/* Thanks to @brandonb927 + https://gist.github.com/brandonb927/3874012 + + Prepending 'only screen and ' to each media query breaks nested media queries */ +/* app mobile css */ html { - background: #FFF; + background: #fff; } - - - .dropdown-menu { border-radius: 0; } @@ -14,7 +16,6 @@ html { .dropdown-menu .divider { margin: 0; } - .tg_page_head .navbar-quick-nav, .tg_page_head .navbar-toggle { display: none; @@ -31,19 +32,14 @@ html { .tg_page_head .navbar-inverse { background: #5682a3; border: 0; - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.11); - -moz-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.11); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.11); - + -moz-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.11); + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.11); margin: 0; } .ios_standalone .tg_page_head .navbar > .container { margin-top: 20px; } -.ios_standalone .modal.mobile_modal { - border-top: 20px solid #497495; -} .tg_page_head .navbar > .container .navbar-brand { padding: 8px 15px; margin-left: 0; @@ -55,8 +51,6 @@ html { .tg_page_head .navbar-menu .navbar-nav.navbar-right { margin-right: 0; } - - .tg_page_head .navbar-inverse .navbar-nav > li > a { padding-top: 13px; padding-bottom: 13px; @@ -64,7 +58,7 @@ html { font-size: 13px; } .tg_page_head .navbar-inverse .navbar-nav > li > a:hover { - color: #FFF; + color: #fff; } .tg_page_head .navbar-inverse .navbar-toggle { border-color: #497495; @@ -75,18 +69,18 @@ html { .tg_page_head .navbar-inverse .navbar-form { border-color: #497495; } - .tg_page_head .navbar-inverse .navbar-toggle:hover, .tg_page_head .navbar-inverse .navbar-toggle:active, .tg_page_head .navbar-inverse .navbar-toggle:focus { - background-color: rgba(255,255,255,0.1); + background-color: rgba(255, 255, 255, 0.1); } - - .tg_page_head .navbar > .container .navbar-brand { padding-left: 9px; outline: none; } +.ios_standalone .modal.mobile_modal { + border-top: 20px solid #497495; +} .im_history_panel_edit_link { margin-right: 0; } @@ -105,13 +99,10 @@ html { padding: 12px 20px 11px; border-radius: 0; } - .tg_page_head .navbar-inverse .navbar-toggle:hover, -.tg_page_head .navbar-inverse .open .navbar-toggle { - background-color: rgba(0,0,0,0.1); +.tg_page_head .navbar-inverse .open .navbar-toggle { + background-color: rgba(0, 0, 0, 0.1); } - - .navbar_peer_not_selected .navbar-toggle-wrap .navbar-toggle { padding: 16px 17px; } @@ -123,7 +114,7 @@ html { margin-left: 6px; margin-right: 6px; } -.navbar-toggle-wrap .navbar-toggle .icon-bar + .icon-bar { +.navbar-toggle-wrap .navbar-toggle .icon-bar + .icon-bar { margin-top: 3px; } .navbar_peer_not_selected .navbar-toggle-wrap .navbar-toggle .icon-bar { @@ -134,12 +125,6 @@ html { margin-left: 0; margin-right: 0; } -.navbar-toggle-wrap .navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -.navbar-toggle .dropdown-toggle { - display: block; -} .navbar-toggle-wrap .dropdown-menu { margin-top: 6px; right: -40px; @@ -150,7 +135,12 @@ html { .tg_modal_head .navbar-toggle-wrap .dropdown-menu { right: 6px; } - +.navbar-toggle-wrap .navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +.navbar-toggle .dropdown-toggle { + display: block; +} .navbar-search-wrap { display: none; float: right; @@ -163,23 +153,24 @@ html { .navbar-search-wrap:hover, .navbar-search-wrap:link, .navbar-search-wrap:active { - background-color: rgba(0,0,0,0.1); + background-color: rgba(0, 0, 0, 0.1); } .icon-search { display: inline-block; width: 21px; height: 21px; - background: url(../img/icons/MobileIcons_2x.png) 0 0 no-repeat; - background-size: 21px 52px; + background-image: url(../img/icons/MobileIcons.png?1); + background-repeat: no-repeat; + background-position: 0 0; } -.is_1x .icon-search { - background-image: url(../img/icons/MobileIcons_1x.png); +.is_2x .icon-search { + background-image: url(../img/icons/MobileIcons_2x.png?1); + background-size: 21px 52px; } .tg_page_head .navbar_peer_not_selected .navbar-search-wrap, .tg_modal_head .navbar-search-wrap { display: block; } - .tg_page_head .navbar-quick-nav { display: block; float: none; @@ -197,18 +188,18 @@ html { width: 11px; height: 19px; vertical-align: text-top; - - background: url(../img/icons/IconsetW.png) -15px -835px no-repeat; - background-size: 42px 1171px; opacity: 0.8; + background-image: url(../img/icons/IconsetW.png?1); + background-repeat: no-repeat; + background-position: -15px -835px; } -.is_1x .icon-back { - background-image: url(../img/icons/IconsetW_1x.png); +.is_2x .icon-back { + background-image: url(../img/icons/IconsetW_2x.png?1); + background-size: 42px 1171px; } .tg_page_head .navbar-quick-nav a:active .icon-back { opacity: 1; } - .tg_page_head .navbar > .container .navbar-brand { display: none; } @@ -221,17 +212,16 @@ html { .tg_page_head .navbar { min-height: 46px; } - .tg_page_head .navbar-inverse .navbar-quick-nav > li > a { padding-left: 16px; padding: 6px 10px 2px 28px; color: #b9cfe3; font-size: 13px; height: 46px; + /*&:active,*/ } -.tg_page_head .navbar-inverse .navbar-quick-nav > li > a:hover/*, -.tg_page_head .navbar-inverse .navbar-quick-nav > li > a:active*/ { - background-color: rgba(0,0,0,0.1); +.tg_page_head .navbar-inverse .navbar-quick-nav > li > a:hover { + background-color: rgba(0, 0, 0, 0.1); } .navbar-quick-nav .icon-back { position: absolute; @@ -240,7 +230,7 @@ html { } .navbar-quick-nav h4 { font-size: 15px; - color: #FFF; + color: #fff; margin: 0; white-space: nowrap; text-overflow: ellipsis; @@ -268,9 +258,8 @@ html { } .navbar-quick-profile-back .status_online, .navbar-quick-group-back .status_online { - color: #FFF; + color: #fff; } - .navbar-menu { display: none; } @@ -286,13 +275,13 @@ html { padding-left: 0; } .navbar-offline-text { - color: #FFF; + color: #fff; font-size: 15px; } .tg_page_head .navbar-inverse .navbar-offline > li > a { padding-top: 13px; padding-bottom: 12px; - color: #FFF; + color: #fff; font-size: 15px; } .tg_page_head .navbar_offline > .container .navbar-brand { @@ -303,7 +292,6 @@ html { .navbar_offline .navbar-history-edit { display: none; } - .navbar-peer-wrap { display: block; float: right; @@ -320,8 +308,6 @@ html { .navbar_peer_not_selected .navbar-peer-wrap { display: none; } - - .navbar_history_select .navbar-peer-wrap, .navbar_history_select .navbar-toggle-wrap { display: none; @@ -332,28 +318,26 @@ html { .tg_page_head .navbar-quick-nav li.navbar-quick-left { float: left; } -.tg_page_head .navbar-inverse .navbar-quick-nav > .navbar-quick-right > a, -.tg_page_head .navbar-inverse .navbar-quick-nav > .navbar-quick-left > a { - font-size: 15px; - color: #FFF; - padding: 14px 15px; -} .tg_page_head .navbar-quick-nav li.navbar-quick-title { position: static; float: none; - color: #FFF; + color: #fff; font-size: 15px; font-weight: bold; padding: 14px 0; text-align: center; } - +.tg_page_head .navbar-inverse .navbar-quick-nav > .navbar-quick-right > a, +.tg_page_head .navbar-inverse .navbar-quick-nav > .navbar-quick-left > a { + font-size: 15px; + color: #fff; + padding: 14px 15px; +} .mobile_scrollable_wrap { overflow: hidden; overflow-y: scroll; -webkit-overflow-scrolling: touch; } - .login_head_bg { display: none; } @@ -381,11 +365,9 @@ html { box-shadow: none; padding: 44px 40px 44px; } - .icon-next-submit { margin-top: -3px; } - .im_dialogs_empty_header { font-size: 19px; margin-bottom: 10px; @@ -401,7 +383,6 @@ html { .im_dialogs_add_contact + .im_dialogs_import_phonebook { margin-top: 10px; } - .im_page_wrap { background: none; box-shadow: none; @@ -415,8 +396,6 @@ html { .im_message_focus .im_message_outer_wrap { background: rgba(225, 233, 240, 0.35); } - - .im_message_body { padding: 7px 10px; border-radius: 3px; @@ -435,13 +414,12 @@ html { .im_message_selected .im_message_document, .im_message_selected .im_message_audio { background: #497495; - color: #FFF; + color: #fff; } .im_message_selected .im_message_body_media { background: none; color: inherit; } - .im_service_message { font-size: 13px; } @@ -464,26 +442,10 @@ html { background: #e4ecf2; } .im_message_document { + position: relative; width: auto; max-width: 250px; } -.im_message_video { - width: auto; - max-width: 250px; -} -.im_message_contact { - width: 200px; -} -.im_message_contact_name, -.im_message_contact_phone { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - max-width: 150px; -} -.im_message_document { - position: relative; -} .im_message_document .icon-document, .im_message_document_thumb_wrap { position: absolute; @@ -493,6 +455,7 @@ html { } .im_message_document_thumb_wrap { background-color: transparent; + position: absolute; } .im_message_document_info { float: none; @@ -500,19 +463,17 @@ html { width: auto; min-height: 38px; } +.im_message_document_info .cancelable_progress_wrap { + margin-top: 4px; +} .im_message_document_thumbed .im_message_document_info { margin-left: 110px; + min-height: 100px; } .im_message_document_size { display: block; padding-left: 0; } -.im_message_document_thumbed .im_message_document_info { - min-height: 100px; -} -.im_message_document_info .cancelable_progress_wrap { - margin-top: 4px; -} .im_message_document_thumbed .im_message_document_name_wrap, .im_message_document_name_wrap { width: auto; @@ -520,19 +481,30 @@ html { .im_message_document_progress .im_message_document_size { display: inline; } -.im_message_document_progress .im_message_document_name { +.im_message_document_progress .im_message_document_name { max-width: 50%; } -.im_message_document_progress.im_message_document_thumbed .im_message_document_name { +.im_message_document_progress.im_message_document_thumbed .im_message_document_name { display: inline; max-width: none; } - .im_message_document_thumbed .im_message_document_name { white-space: normal; } - - +.im_message_video { + width: auto; + max-width: 250px; +} +.im_message_contact { + width: 200px; +} +.im_message_contact_name, +.im_message_contact_phone { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + max-width: 150px; +} .im_message_document_thumbed .im_message_upload_progress_wrap, .im_message_document_thumbed .im_message_download_progress_wrap { width: 130px; @@ -542,7 +514,6 @@ html { .im_message_video_duration { font-size: 13px; } - a.im_message_video_thumb { margin-right: 0; } @@ -554,15 +525,9 @@ img.im_message_video_thumb, -ms-filter: none; filter: none; } - -.im_message_document_thumb_wrap { - position: absolute; -} .im_grouped .im_message_body { margin-left: 0; } - - .im_history_panel_wrap { display: none; margin: 0 15px; @@ -570,7 +535,6 @@ img.im_message_video_thumb, .im_send_panel_wrap { padding: 10px 0 12px; } - .im_history_scrollable_wrap.im_history_to_bottom { overflow: hidden; position: relative; @@ -578,9 +542,8 @@ img.im_message_video_thumb, .im_history { position: static; } - .icon-select-tick { - margin: 10px 0 0 -24px + margin: 10px 0 0 -24px; } .im_message_wrap { padding: 0 8px; @@ -592,26 +555,24 @@ img.im_message_video_thumb, margin: 8px 0 8px; max-width: 100%; } -.im_message_out.im_content_message_wrap { +.im_content_message_wrap.im_message_out { padding-left: 80px; padding-right: 0; float: right; } -.im_message_in.im_content_message_wrap { +.im_content_message_wrap.im_message_in { padding-left: 0; padding-right: 60px; } -.im_history_messages_group .im_message_in.im_content_message_wrap, -.im_history_messages_group .im_grouped_short .im_message_in.im_content_message_wrap, -.im_history_messages_group .im_grouped .im_message_in.im_content_message_wrap { +.im_history_messages_group .im_content_message_wrap.im_message_in, +.im_history_messages_group .im_grouped_short .im_content_message_wrap.im_message_in, +.im_history_messages_group .im_grouped .im_content_message_wrap.im_message_in { padding-left: 45px; } .im_grouped_short .im_content_message_wrap, .im_grouped .im_content_message_wrap { margin-top: 0; } - - .im_message_reply_wrap { margin-top: 2px; } @@ -633,10 +594,6 @@ img.im_message_video_thumb, padding: 0 0 0 8px; overflow: hidden; } -.im_message_date { - font-size: 10px; - padding: 0; -} .im_message_out .im_message_meta { width: 80px; left: 0; @@ -644,11 +601,13 @@ img.im_message_video_thumb, margin-left: 0; padding: 0 8px 0 0; } - +.im_message_date { + font-size: 10px; + padding: 0; +} .im_message_out .im_message_fwd_date { color: #93a2ae; } - .im_message_out .icon-document { background-color: #dae6f0; background-position: -2px -542px; @@ -671,8 +630,6 @@ img.im_message_video_thumb, .im_history_selectable .im_message_outer_wrap:hover .im_message_fwd_date { color: #68839c; } - - .im_message_from_photo, .im_message_fwd_photo { width: 40px; @@ -711,10 +668,6 @@ a.im_message_from_photo { .im_message_wrap { padding: 0 7px; } - - - - .im_message_out .icon-message-status-tick { border: 0; display: inline-block; @@ -727,21 +680,14 @@ a.im_message_from_photo { margin-right: 2px; opacity: 1; margin-top: 6px; -} -.im_message_out .icon-message-status-tick, -.is_1x .im_message_out .icon-message-status-tick { background: none; } -.im_message_unread .icon-message-status-tick, -.is_1x .im_message_unread .icon-message-status-tick { +.im_message_unread .icon-message-status-tick { background: #43A4DB; } -.im_message_pending .icon-message-status-tick, -.is_1x .im_message_pending .icon-message-status-tick { +.im_message_pending .icon-message-status-tick { background: #9fd2ee; } - - .im_dialogs_search_field, .contacts_modal_search_field { font-size: 1.2em; @@ -775,8 +721,6 @@ a.im_message_from_photo { padding: 5px 0; margin: 0; } - - .im_dialogs_col_wrap { border: 0; padding-bottom: 0; @@ -788,7 +732,6 @@ a.im_message_from_photo { max-width: auto; min-width: auto; } - .im_dialogs_col_wrap, .im_page_peer_not_selected .im_history_col_wrap { display: none; @@ -796,19 +739,17 @@ a.im_message_from_photo { .im_page_peer_not_selected .im_dialogs_col_wrap { display: block; } - .im_dialogs_panel { display: none; padding-left: 9px; padding-right: 9px; } -.im_dialogs_panel_search.im_dialogs_panel { +.im_dialogs_panel.im_dialogs_panel_search { display: block; } .im_page_split .im_dialogs_search { margin-right: 0; } - .im_dialogs_scrollable_wrap a.im_dialog { border-bottom: 1px solid #eee; border-top: 1px solid #eee; @@ -816,7 +757,6 @@ a.im_message_from_photo { border-radius: 0 !important; padding-right: 11px; } - .im_dialog_wrap:last-child a.im_dialog { border-bottom: 0; } @@ -829,7 +769,6 @@ a.im_message_from_photo { div.im_dialog_photo { margin: 0 12px 0 0; } - .im_dialog_peer, .im_dialog_message { font-size: 1.3em; @@ -887,14 +826,11 @@ a.im_dialog_selected .im_dialog_message_text { .im_history_selectable .im_message_selected:hover .audio_player_duration, .im_history_selectable .im_message_selected:hover .audio_player_size, .im_history_selectable .im_message_selected:hover .im_message_fwd_date { - color: #FFF; + color: #fff; } - - a.im_message_fwd_author { color: #323232; } - .im_dialogs_scrollable_wrap a.im_dialog:hover, .im_dialogs_scrollable_wrap a.im_dialog_selected, .im_dialogs_scrollable_wrap .active a.im_dialog, @@ -903,34 +839,30 @@ a.im_message_fwd_author { border-radius: 0; background-color: #f4f4f4; } - -.modal.mobile_modal { - background: #FFF; +.mobile_modal.modal { + background: #fff; padding: 0; } .mobile_modal .modal-content { border-radius: 0; box-shadow: none; } -.mobile_modal .modal-dialog { - margin: 0 auto; -} .mobile_modal .modal-content .modal-body { padding-left: 0; padding-right: 0; } +.mobile_modal .modal-dialog { + margin: 0 auto; +} .mobile_modal .modal-footer { padding-left: 0; padding-right: 0; padding-bottom: 9px; } - .mobile_modal_body, .mobile_modal .modal-content .mobile_modal_body { padding: 9px; } - - .mobile_user_modal_photo_profile_wrap { padding: 3px; margin-bottom: 15px; @@ -958,7 +890,7 @@ a.im_message_fwd_author { font-size: 16px; font-weight: bold; margin-bottom: 7px; - margin-top: 11px + margin-top: 11px; } .mobile_user_modal_status { font-size: 14px; @@ -996,7 +928,6 @@ a.mobile_modal_action .tg_checkbox_label { vertical-align: baseline; line-height: inherit; } - .mobile_modal_section { display: block; border-bottom: 1px solid #e0e0e0; @@ -1019,7 +950,6 @@ a.mobile_modal_action .tg_checkbox_label { .mobile_modal_section_body { padding: 0 12px; } - .user_modal_other_btn button { padding-right: 0; } @@ -1037,7 +967,6 @@ a.mobile_modal_action .tg_checkbox_label { left: auto; right: -9px; } - .photo_modal_window .modal-content, .video_modal_window .modal-content { border-radius: 0; @@ -1046,20 +975,15 @@ a.mobile_modal_action .tg_checkbox_label { padding: 0 0 0; } .media_modal_actions, -.media_modal_info{ +.media_modal_info { margin: 10px; } - - - - .im_send_form { position: relative; left: 0; right: 0; max-width: none; } - .im_submit { width: 50px; min-width: 0; @@ -1073,18 +997,35 @@ a.mobile_modal_action .tg_checkbox_label { .im_submit, .im_submit:active, .im_submit:hover { - background: url(../img/icons/IconsetW.png) 2px -860px no-repeat; - background-size: 42px 1171px; color: transparent; box-shadow: none; + background-image: url(../img/icons/IconsetW.png?1); + background-repeat: no-repeat; + background-position: 2px -860px; +} +.is_2x .im_submit, +.is_2x .im_submit:active, +.is_2x .im_submit:hover { + background-image: url(../img/icons/IconsetW_2x.png?1); + background-size: 42px 1171px; } -.is_1x .im_submit { - background-image: url(../img/icons/IconsetW_1x.png); +.icon-paperclip { + display: inline-block; + width: 19px; + height: 23px; + vertical-align: text-top; + opacity: 0.8; + background-image: url(../img/icons/IconsetW.png?1); + background-repeat: no-repeat; + background-position: -12px -68px; +} +.is_2x .icon-paperclip { + background-image: url(../img/icons/IconsetW_2x.png?1); + background-size: 42px 1171px; } - .im_attach { cursor: pointer; - display: block; + display: none; overflow: hidden; position: absolute; right: 0; @@ -1094,42 +1035,17 @@ a.mobile_modal_action .tg_checkbox_label { height: 32px; padding: 3px 13px 4px 16px; } - -.icon-paperclip { - display: inline-block; - width: 19px; - height: 23px; - vertical-align: text-top; - background: url(../img/icons/IconsetW.png) -12px -68px no-repeat; - background-size: 42px 1171px; - opacity: 0.8; -} -.is_1x .icon-paperclip { - background-image: url(../img/icons/IconsetW_1x.png); -} .im_attach:hover .icon-paperclip, .im_attach:active .icon-paperclip { background-position: -12px -100px; opacity: 1; } - -.im_attach, .im_send_form_empty .im_submit { display: none; } .im_send_form_empty .im_attach { display: block; } - -.composer_emoji_insert_btn { - position: absolute; - left: 0; - top: 0; - margin: 0; - padding: 3px 13px 4px 13px; - width: 48px; - height: 32px; -} .icon-emoji { display: inline-block; width: 22px; @@ -1137,19 +1053,29 @@ a.mobile_modal_action .tg_checkbox_label { vertical-align: text-top; opacity: 1; margin: 0; - background: url(../img/icons/IconsetW.png) -10px -771px no-repeat; + background-image: url(../img/icons/IconsetW.png?1); + background-repeat: no-repeat; + background-position: -10px -771px; +} +.is_2x .icon-emoji { + background-image: url(../img/icons/IconsetW_2x.png?1); background-size: 42px 1171px; } -.is_1x .icon-emoji { - background-image: url(../img/icons/IconsetW_1x.png); +.composer_emoji_insert_btn { + position: absolute; + left: 0; + top: 0; + margin: 0; + padding: 3px 13px 4px 13px; + width: 48px; + height: 32px; } -.composer_emoji_insert_btn:active .icon-emoji, -.is_1x .composer_emoji_insert_btn:active .icon-emoji, .composer_emoji_insert_btn.on .icon-emoji, -.is_1x .composer_emoji_insert_btn.on .icon-emoji { +.composer_emoji_insert_btn:active .icon-emoji, +.is_1x .composer_emoji_insert_btn.on .icon-emoji, +.is_1x .composer_emoji_insert_btn:active .icon-emoji { background-position: -10px -803px; } - .im_send_field_wrap { margin-right: 50px; margin-left: 48px; @@ -1174,12 +1100,10 @@ a.mobile_modal_action .tg_checkbox_label { .composer_rich_textarea:focus { box-shadow: none; outline: 0; - background: #FFF; + background: #fff; border-color: #d9dbde; content: none; } - - .composer_emoji_tooltip { margin-left: 6px; margin-top: -170px; @@ -1197,13 +1121,12 @@ a.mobile_modal_action .tg_checkbox_label { padding: 5px; margin: -1px 0 0 -1px; } -.icon-tooltip-tail { - display: none; -} .composer_emoji_tooltip_tab { margin: 0 5px; } - +.icon-tooltip-tail { + display: none; +} .composer_sticker_btn { width: 80px; height: 80px; @@ -1213,8 +1136,6 @@ a.mobile_modal_action .tg_checkbox_label { max-width: 64px; max-height: 64px; } - - .contacts_modal_search { padding: 3px 0 12px; } @@ -1226,24 +1147,21 @@ a.mobile_modal_action .tg_checkbox_label { border-radius: 0; border-bottom: 1px solid #eee; } +.contacts_modal_members_list a.contacts_modal_contact:hover { + background: inherit; +} .contacts_modal_members_list li.contacts_modal_contact_wrap { margin: 0; } .contacts_modal_members_list li:last-child a { border-bottom: 0; } -.contacts_modal_members_list a.contacts_modal_contact:hover { - background: inherit; -} - .mobile_modal .peer_select_modal_wrap .modal-body { padding: 0; } .settings_about_section_body { padding-right: 0; } - - .countries_modal_search { padding: 3px 3px 12px; margin: 0; @@ -1258,39 +1176,33 @@ a.mobile_modal_action .tg_checkbox_label { .countries_scrollable_wrap a.countries_modal_country { padding: 8px 8px; } - .import_modal_phonebook_wrap { margin-top: 40px; text-align: center; } - - - - .media_modal_bottom_panel_wrap { position: fixed; bottom: 0; left: 0; right: 0; height: 46px; - background: rgba(0,0,0,0.6); + background: rgba(0, 0, 0, 0.6); z-index: 1030; } .media_modal_bottom_panel { - color: #FFF; + color: #fff; } - .media_modal_top_panel_wrap { position: fixed; top: 0; left: 0; right: 0; height: 46px; - background: rgba(0,0,0,0.6); + background: rgba(0, 0, 0, 0.6); z-index: 1030; } .media_modal_top_panel { - color: #FFF; + color: #fff; } .media_modal_top_actions .navbar-quick-media-back { color: inherit; @@ -1313,7 +1225,6 @@ h4.media_modal_title_wrap { color: inherit; margin: 8px 0 11px 0; } - .media_modal_info_wrap { line-height: 16px; padding: 7px 20px; @@ -1334,7 +1245,6 @@ a.media_modal_date:hover { font-size: 12px; color: #999; } - .photo_modal_window, .video_modal_window, .document_modal_window { @@ -1360,20 +1270,20 @@ a.media_modal_date:hover { .tg_page_head .navbar-inverse .navbar-quick-nav > .navbar-quick-left > a.media_modal_action_btn { padding: 0; } - .media_modal_action_btn i { - background: url(../img/icons/PhotoIcons.png) 0 0 no-repeat; - background-size: 40px 200px; display: block; opacity: 0.8; + background-image: url(../img/icons/PhotoIcons.png?1); + background-repeat: no-repeat; + background-position: 0 0; +} +.is_2x .media_modal_action_btn i { + background-image: url(../img/icons/PhotoIcons_2x.png?1); + background-size: 40px 200px; } .media_modal_action_btn:active i { opacity: 1; } -.is_1x .media_modal_action_btn i { - background-image: url(../img/icons/PhotoIcons_1x.png); -} - .media_modal_action_btn i.media_modal_action_btn_download { background-position: -12px -163px; width: 16px; @@ -1391,4 +1301,4 @@ a.media_modal_date:hover { width: 14px; height: 18px; margin: 13px 17px; -} \ No newline at end of file +} diff --git a/img/icons/AboutLogos_1x.png b/img/icons/AboutLogos.png similarity index 100% rename from img/icons/AboutLogos_1x.png rename to img/icons/AboutLogos.png diff --git a/img/icons/Checks1_1x.png b/img/icons/Checks1.png similarity index 100% rename from img/icons/Checks1_1x.png rename to img/icons/Checks1.png diff --git a/img/icons/Checks2_1x.png b/img/icons/Checks2.png similarity index 100% rename from img/icons/Checks2_1x.png rename to img/icons/Checks2.png diff --git a/img/icons/General.png b/img/icons/General.png index aa2e7ec8..045dccad 100644 Binary files a/img/icons/General.png and b/img/icons/General.png differ diff --git a/img/icons/General_1x.png b/img/icons/General_1x.png deleted file mode 100644 index 045dccad..00000000 Binary files a/img/icons/General_1x.png and /dev/null differ diff --git a/img/icons/General_2x.png b/img/icons/General_2x.png new file mode 100644 index 00000000..aa2e7ec8 Binary files /dev/null and b/img/icons/General_2x.png differ diff --git a/img/icons/IconsetSmiles.png b/img/icons/IconsetSmiles.png index 6618c24b..b244cb76 100644 Binary files a/img/icons/IconsetSmiles.png and b/img/icons/IconsetSmiles.png differ diff --git a/img/icons/IconsetSmiles_1x.png b/img/icons/IconsetSmiles_1x.png deleted file mode 100644 index b244cb76..00000000 Binary files a/img/icons/IconsetSmiles_1x.png and /dev/null differ diff --git a/img/icons/IconsetSmiles_2x.png b/img/icons/IconsetSmiles_2x.png new file mode 100644 index 00000000..6618c24b Binary files /dev/null and b/img/icons/IconsetSmiles_2x.png differ diff --git a/img/icons/IconsetW.png b/img/icons/IconsetW.png index 39e592bf..92d5ec04 100644 Binary files a/img/icons/IconsetW.png and b/img/icons/IconsetW.png differ diff --git a/img/icons/IconsetW_1x.png b/img/icons/IconsetW_1x.png deleted file mode 100644 index 92d5ec04..00000000 Binary files a/img/icons/IconsetW_1x.png and /dev/null differ diff --git a/img/icons/IconsetW_2x.png b/img/icons/IconsetW_2x.png new file mode 100644 index 00000000..39e592bf Binary files /dev/null and b/img/icons/IconsetW_2x.png differ diff --git a/img/icons/MobileIcons_1x.png b/img/icons/MobileIcons.png similarity index 100% rename from img/icons/MobileIcons_1x.png rename to img/icons/MobileIcons.png diff --git a/img/icons/PhotoIcons.png b/img/icons/PhotoIcons.png index 70e31b97..93f4ba86 100644 Binary files a/img/icons/PhotoIcons.png and b/img/icons/PhotoIcons.png differ diff --git a/img/icons/PhotoIcons_1x.png b/img/icons/PhotoIcons_1x.png deleted file mode 100644 index 93f4ba86..00000000 Binary files a/img/icons/PhotoIcons_1x.png and /dev/null differ diff --git a/img/icons/PhotoIcons_2x.png b/img/icons/PhotoIcons_2x.png new file mode 100644 index 00000000..70e31b97 Binary files /dev/null and b/img/icons/PhotoIcons_2x.png differ diff --git a/js/app.js b/js/app.js index b0663cad..f3769e9f 100644 --- a/js/app.js +++ b/js/app.js @@ -14,9 +14,9 @@ for(t=0,n=s.length;n>t;++t)for(e=s[t],i=0,a=e.length;a>i;++i)c[o++]=e[i];for(t=3 }function Dt(e,t,n){e[t]=((((4278255360&e[t])>>>0)+((4278255360&n)>>>0)&4278255360)>>>0|(16711935&e[t])+(16711935&n)&16711935)>>>0}function Pt(e,t){return((4278124286&(e^t))>>>1)+((e&t)>>>0)>>>0}function Nt(e){return 256>e&&e>0?e:0>=e?0:~e>>24&255}function Ut(e,t){return Nt(e+parseInt((e-t)/2,10))}function Ot(){return ki}function Lt(e,t){return e&=255,t&=255,e>127&&(e-=256),t>127&&(t-=256),e*t>>>5}function Rt(e,t,n,i,a,o,r){var s=h,c=8>>e.n,l=e.U,d=e.u;if(8>c){e=(1<s;++s){t=0;for(var p=h,p=0;l>p;++p)0==(p&e)&&(t=i[a++]>>8&255),o[r++]=d[t&u],t>>=c}}else for(s=t;n>s;++s)for(p=0;l>p;++p)o[r++]=d[i[a++]>>8&255]}function Bt(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>16&255,i[a++]=o>>8&255,i[a++]=o>>0&255,i[a++]=o>>24&255}}function Ft(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>16&240|o>>12&15,i[a++]=o>>0&240|o>>28&15}}function jt(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>24&255,i[a++]=o>>16&255,i[a++]=o>>8&255,i[a++]=o>>0&255}}function qt(e,t,n,i){return E(e,8)!=_i?0:(t[0]=E(e,vi)+1,n[0]=E(e,vi)+1,i[0]=E(e,1),E(e,yi),1)}function Ht(e,t){var n=h;return 4>e?e+1:(n=e-2>>1,(2+(1&e)<t.ya){var n=e.Y,i=0;for(u(n!=m);0!=n[i].s;){var a=n,o=t,r=o.T>>o.g&1;o.L?o.fa=1:(++o.g,8<=o.g&&x(o),o.Q==o.ya&&32==o.g&&(o.L=1)),i=i+a[i].s+r}return n[i].kc}for(n=e.Y,i=0,u(n!=m);0!=n[i].s;)a=n,o=t.T>>t.g&1,++t.g,i=i+a[i].s+o;return n[i].kc}function Vt(e,t){if(e!=m)for(var n=h,i=h,n=0;t>n;++n)for(var a=e[n].va,i=0;$i>i;++i)D(a[i])}function Wt(e,t,n){return t=0==e.eb?0:e.ac[e.bd+e.Ec*(n>>e.eb)+(t>>e.eb)],u(tp),u(f<=i.Vb),i.Qc){case Ii:for(g=0,i=l+(f-p)*i.U;i>l;){var f=d,v=l,y=f[v]>>8&255,b=(16711935&f[v])>>>0,b=b+(y<<16|y),b=16711935&b;d[l++]=((4278255360&f[v])>>>0|b)>>>0,32==p&&g++}break;case Ei:var w=i,$=p,g=f,v=d,y=l,b=w.U;if(0==$){var k=h;for(Dt(v,y,ki),k=1;b>k;++k)Dt(v,y+k,v[y+k-1]);y+=b,++$}for(var S=(1<>w.n)*C;g>$;){var x=M,A=w,E=m;for(Dt(v,y,v[y-b+0]),E=Io[x[A++]>>8&15],k=1;b>k;++k){var T=_;0==(k&S)&&(E=Io[x[A++]>>8&15]),T=E(v[y+k-1],v,y+k-b),Dt(v,y+k,T)}y+=b,++$,0==($&S)&&(w+=C)}f!=i.Vb&&(i=i.U,t(d,l-i,d,l+(f-p-1)*i,i));break;case Ti:for(g=i.U,v=(1<>i.n)*y;f>p;){for(k=b,$=i,S=e(Do),C=h,C=0;g>C;++C)0==(C&v)&&(M=k[$++],w=S,w.Cc=M>>0&255,w.Bc=M>>8&255,w.Kc=M>>16&255),M=d[l+C],w=M>>>8,x=M>>>16,A=M,x+=Lt(S.Cc,w),x&=255,A+=Lt(S.Bc,w),A+=Lt(S.Kc,x),A&=255,d[l+C]=(4278255360&M|x<<16|A)>>>0;l+=g,++p,0==(p&v)&&(i+=y)}break;case Di:g==d&&0=a)){Gt(e,a,n,i);var o=e.N,n=e.Xa,r=[e.vb],i=e.O,a=t,s=r,c=o.width;if(u(a>i),u(o.to.K&&(a=o.K),i=a?i=0:(s[0]+=o.t,o.w=i-o.k,o.m=o.Ka-o.t,o.h=a-i,i=1),i){if(r=r[0],i=e.Ib,a=o.width,i.Jf;){var y=h[f++];_[v++]=y>>16&255,_[v++]=y>>8&255,_[v++]=y>>0&255}break;case Bn:Bt(h,f,g,_,v);break;case Vn:Bt(h,f,g,_,v),WebPApplyAlphaMultiply(_,0,g,1,0);break;case Fn:for(g=f+g;g>f;)y=h[f++],_[v++]=y>>0&255,_[v++]=y>>8&255,_[v++]=y>>16&255;break;case jn:jt(h,f,g,_,v);break;case Wn:jt(h,f,g,_,v),WebPApplyAlphaMultiply(_,0,g,1,0);break;case qn:jt(h,f,g,_,v);break;case Gn:jt(h,f,g,_,v),WebPApplyAlphaMultiply(_,1,g,1,0);break;case Hn:Ft(h,f,g,_,v);break;case Kn:Ft(h,f,g,_,v),WebPApplyAlphaMultiply4444(_,g,1,0);break;case zn:for(g=f+g;g>f;)y=h[f++],_[v++]=y>>16&248|y>>13&7,_[v++]=y>>5&224|y>>3&31;break;default:u(0)}r+=a,p+=d}n=o}e.xa+=n}else e.xa=o.I?EmitRescaledRowsYUVA(e,n,r,a,o.h):EmitRowsYUVA(e,n,r,a,o.m,o.h);u(e.xa<=i.height)}e.O=t,u(e.O<=e.v)}}function Zt(e,t,n,i,a,o){var r=1,s=0,c=0,l=e.o,d=e.cb,p=d.Db,f=n,g=n;n+=i*a,a=Mi+xi;var _=a+d.xb,v=0f;){var w=h;if(b||(0==(s&y)&&(p=Wt(d,s,c)),A(l),w=zt(p.va[Ro],l)),Mi>w||b){if(!b){var $=r=b=h,k=h;A(l),b=zt(p.va[Bo],l),r=w,A(l),$=zt(p.va[Fo],l),A(l),k=zt(p.va[jo],l),t[f]=(k<<24>>>0)+(b<<16)+(r<<8)+$}if(b=!1,++f,++s,s>=i&&(s=0,++c,o!=m&&0==c%Po&&o(e,c),v!=m))for(;f>g;)r=t[g++],v.ea[Ki*r>>>v.bb]=r}else if(a>w){for($=$=h,r=Ht(w-Mi,l),w=zt(p.va[qo],l),A(l),$=Ht(w,l),$>Wo?$-=Wo:(w=Go[$-1],w=(w>>4)*i+(8-(15&w)),$=w>=1?w:1),w=h,w=0;r>w;++w)t[f+w]=t[f+w-$];for(f+=r,s+=r;s>=i;)s-=i,++c,o!=m&&0==c%Po&&o(e,c);if(n>f&&(p=Wt(d,s,c),v!=m))for(;f>g;)r=t[g++],v.ea[Ki*r>>>v.bb]=r}else if(_>w){for(b=w-a,u(v!=m);f>g;)w=t[g++],v.ea[Ki*w>>>v.bb]=w;w=t,$=f,k=v,u(b<=-1>>>k.bb),w[$]=k.ea[b],b=!0;continue e}(r=!l.fa)||End}return o!=m&&o(e,c),l.fa||!r||l.L&&n>f?(r=0,e.a=l.L?ai:ni):f==n&&(e.Ob=xa),r}function Yt(e){u(e),e.ac=m,Vt(e.Db,e.hc);var t=e.Yb;t!=m&&(t.ea=m,t.ea=m),u(e)}function Xt(){var t=e(Pa);return t==m?m:(t.a=Qn,t.Wa=Ea,t.Ob=Ea,t)}function Jt(e){var t=h;if(e!=m){for(Yt(e.cb),e.V=m,e.V=m,t=0;t16?0:_>4?1:_>2?2:3,g[0]=St(r.U,y),r.n=y,g=y=Qt(_,1,0,v,r.u))if(g=_,v=r,y=h,_=1<<(8>>>v.n)>>>0,b=Array(_),b==m)g=0;else{var w=v.u[0],$=v.b;for(b[0]=v.u[0][v.b+0],y=1;g>y;++y)b[y]=((((4278255360&w[$+y])>>>0)+((4278255360&b[y-1])>>>0)&4278255360)>>>0|(16711935&w[$+y])+(16711935&b[y-1])&16711935)>>>0;for(;_>y;++y)b[y]=0;v.u[0]=m,v.b=m,v.u[0]=b,v.b=0,g=1}y=g;break;case Ii:break;default:u(0)}r.u=r.u[0],r=y}}if(r&&E(s,1)&&(f=E(s,4),r=f>=1&&wi>=f,!r)){a.a=ni;break}if(r)e:{var r=a,k=t[0],S=n[0],g=f,$=w=h,$=r.o,v=r.cb,y=[m],_=m,b=1;if(i&&E($,1)){var w=E($,3)+2,k=St(k,w),C=St(S,w),S=k*C;if(!Qt(k,C,0,r,y)){r.a=ni,Vt(_,b),r=0;break e}for(y=y[0],v.eb=w,w=0;S>w;++w)k=y[w]>>>8&65535,y[w]=k,k>=b&&(b=k+1)}if($.fa)Vt(_,b),r=0;else if(u(65536>=b),_=l(b,Ia),_==m)r.a=ei,Vt(_,b),r=0;else{for(w=0;b>w;++w)for(S=_[w].va,$=0;$i>$;++$){k=Ho[$],0==$&&g>0&&(k+=1<F;++F)if(L[F]!=Wi){if(0>O[F]||O[F]>=M){(B=B&&T(x))||D(x),U=B;break n}if(!P(x,O[F],L[F],R[F])){(B=B&&T(x))||D(x),U=B;break n}}(B=(B=1)&&T(x))||D(x),U=B}else U=0}}else{if(U=h,L=[],O=E(C,4)+4,O>zo){k.a=ni,k=0;break t}if(R=Array(M),R==m){k.a=ei,k=0;break t}for(U=0;O>U;++U)L[Vo[U]]=E(C,3);n:{var U=k,j=L,L=M,O=R,B=0,F=U.o,q=h,H=h,z=Si,V=e(Vi);if(N(V,j,zo)){if(E(F,1)){if(q=2+2*E(F,3),H=2+E(F,q),H>L){U.a=ni,D(V),U=B;break n}}else H=L;for(q=0;L>q;){var W=h;if(0==H--)break;if(A(F),W=zt(V,F),No>W)O[q++]=W,0!=W&&(z=W);else{var j=W==Uo,W=W-No,G=Lo[W],W=E(F,Oo[W])+G;if(q+W>L){U.a=ni,D(V),U=B;break n}for(j=j?z:0;00){if(d.xb=1<0),g.ea=c(v,0),g.ea==m?f=0:(g.bb=32-f,f=1),!f){a.a=ei,r=0;break}}else d.xb=0;if(f=a,g=t[0],v=n[0],y=f.cb,_=y.eb,f.l=g,f.v=v,y.Ec=St(g,_),y.Dc=0==_?-1:(1<<_)-1,i){a.Ob=Aa;break}if(p=Array(t*n),f=0,p==m){a.a=ei,r=0;break}r=(r=Zt(a,p,f,t,n,m))&&!s.fa;break}return r?(o!=m?o[0]=p:(u(p==m),u(i)),i||Yt(d)):(Yt(d),a.a==ni&&a.o.L&&(a.a=ai)),r}function en(e,t){var n=e.l*e.v,i=n+t+t*Po;return u(e.l<=t),e.V=Array(i),e.Ha=0,e.V==m?(e.Xa=m,e.a=ei,0):(e.Xa=e.V,e.vb=e.Ha+n+t,1)}function tn(e,t){var n=t-e.O,i=e.V,a=e.Ha+e.l*e.O;if(!(0>=n)){Gt(e,n,i,a);for(var a=e.N.width,n=a*n,i=e.N.ka,a=e.N.fd+a*e.O,o=e.Xa,r=e.vb,s=h,s=0;n>s;++s)i[a+s]=o[r+s]>>>8&255;e.O=e.xa=t}}function nn(e,t){var n=[h],i=[h],a=[h];return e==m?0:t==m?(e.a=ti,0):(e.N=t,e.a=Qn,M(e.o,t.data,t.b,t.e),qt(e.o,n,i,a)?(e.Ob=Ea,t.width=n[0],t.height=i[0],e.Wa=Aa,Qt(n[0],i[0],1,e,m)?1:(Jt(e),u(e.a!=Qn),0)):(e.a=ni,Jt(e),u(e.a!=Qn),0))}function an(e){var t=m,n=m;return e==m?0:(t=e.N,u(t!=m),n=t.ka,u(n!=m),e.Ib=n.j,e.Hc=n.Hc,u(e.Ib!=m),On(n.Qa,t,jn)?!en(e,t.width)||t.I&&!AllocateAndInitRescaler(e,t)?(Jt(e),u(e.a!=Qn),0):(e.Wa=xa,Zt(e,e.V,e.Ha,e.l,e.v,Kt)?(n.ec=e.xa,Jt(e),1):(Jt(e),u(e.a!=Qn),0)):(e.a=ti,Jt(e),u(e.a!=Qn),0))}function ft(e,t){return 0>e?0:e>t?t:e}function on(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,_,v){var y,b=g-1>>1,w=a[o+0]|r[s+0]<<16,$=c[l+0]|d[u+0]<<16;if(e){var k=3*w+$+131074>>2;_(e[t+0],255&k,k>>16,p,m)}for(n&&(k=3*$+w+131074>>2,_(n[i+0],255&k,k>>16,h,f)),y=1;b>=y;++y){var S=a[o+y]|r[s+y]<<16,C=c[l+y]|d[u+y]<<16,k=w+S+$+C+524296,M=k+2*(S+$)>>3,x=k+2*(w+C)>>3;e&&(k=M+w>>1,w=x+S>>1,_(e[t+2*y-1],255&k,k>>16,p,m+(2*y-1)*v),_(e[t+2*y-0],255&w,w>>16,p,m+(2*y-0)*v)),n&&(k=x+$>>1,w=M+C>>1,_(n[i+2*y-1],255&k,k>>16,h,f+(2*y-1)*v),_(n[i+2*y+0],255&w,w>>16,h,f+(2*y+0)*v)),w=S,$=C}1&g||(e&&(k=3*w+$+131074>>2,_(e[t+g-1],255&k,k>>16,p,m+(g-1)*v)),n&&(k=3*$+w+131074>>2,_(n[i+g-1],255&k,k>>16,h,f+(g-1)*v)))}function rn(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g){on(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,Ct,3)}function sn(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g){on(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,Et,3)}function cn(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g){on(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,It,4)}function ln(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g){on(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,Tt,4)}function dn(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g){on(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,xt,4)}function un(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g){on(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,At,2)}function pn(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g){on(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,Mt,2)}function mn(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h){var f;for(f=0;p-1>f;f+=2)m(e[t+0],a[o+0],r[s+0],c,l),m(e[t+1],a[o+0],r[s+0],c,l+h),m(n[i+0],a[o+0],r[s+0],d,u),m(n[i+1],a[o+0],r[s+0],d,u+h),t+=2,i+=2,o++,s++,l+=2*h,u+=2*h;f==p-1&&(m(e[t+0],a[o+0],r[s+0],c,l),m(n[i+0],a[o+0],r[s+0],d,u))}function hn(e,t,n,i,a,o,r,s,c,l,d,u,p){mn(e,t,n,i,a,o,r,s,c,l,d,u,p,It,4)}function fn(e,t,n,i,a,o,r,s,c,l,d,u,p){mn(e,t,n,i,a,o,r,s,c,l,d,u,p,Tt,4)}function gn(e,t,n,i,a,o,r,s,c,l,d,u,p){mn(e,t,n,i,a,o,r,s,c,l,d,u,p,xt,4)}function _n(e,t,n,i,a,o,r,s,c,l,d,u,p){mn(e,t,n,i,a,o,r,s,c,l,d,u,p,At,2)}function vn(e,t,n,i,a,o){for(;0d;++d){var u=c[l+4*d];if(255!=u){var u=32897*u,m=r,f=s+4*d+0;r[s+4*d+0]*u>>>23,m[f]=p,m=r,f=s+4*d+1,r[s+4*d+1]*u>>>23,m[f]=p,m=r,f=s+4*d+2,r[s+4*d+2]*u>>>23,m[f]=p}}t+=o}}function yn(e,n){var i,a=n.j.c.Va,o=a.y,r=a.D+e.w*a.F,s=a.c,c=a.B+(e.w>>1)*a.nb,l=a.S,d=a.C+(e.w>>1)*a.rb,u=e.m,p=e.h,m=parseInt((u+1)/2,10),h=parseInt((p+1)/2,10);for(i=0;p>i;++i)t(o,r+i*a.F,e.y,e.D+i*e.F,u);for(i=0;h>i;++i)t(s,c+i*a.nb,e.c,e.B+i*e.Da,m),t(l,d+i*a.rb,e.S,e.C+i*e.Da,m);return e.h}function bn(e,t){var n,i=t.j,a=i.c.RGBA,o=a.ma,r=a.Sa+e.w*a.f,s=e.y,c=e.D,l=e.c,d=e.B,u=e.S,p=e.C,i=ir[i.J],m=e.m,h=e.h-1;for(n=0;h>n;n+=2)i(s,c,s,c+e.F,l,d,u,p,o,r,o,r+a.f,m),c+=2*e.F,d+=e.Da,p+=e.Da,r+=2*a.f;return n==h&&i(s,c,s,c,l,d,u,p,o,r,o,r,m),e.h}function wn(e,n){var i=e.h,a=n.j.c.RGBA,o=a.ma,r=a.Sa+e.w*a.f,s=nr[n.j.J],c=e.y,l=e.D,d=e.c,u=e.B,p=e.S,h=e.C,f=n.Qb,g=n.Rb,_=n.lc,v=n.mc,y=e.w,b=e.w+e.h,w=e.m,$=parseInt((w+1)/2,10);for(0==y?s(m,m,c,l,d,u,p,h,d,u,p,h,m,m,o,r,w):(s(n.Sb,n.Tb,c,l,f,g,_,v,d,u,p,h,o,r-a.f,o,r,w),++i);b>y+2;y+=2)f=d,g=u,_=p,v=h,u+=e.Da,h+=e.Da,r+=2*a.f,l+=2*e.F,s(c,l-e.F,c,l,f,g,_,v,d,u,p,h,o,r-a.f,o,r,w);return l+=e.F,e.k+bu;++u)t(l,d,i,a,1*s),a+=e.width,d+=o.Fa;else if(o.p!=m)for(u=0;c>u;++u)r(l,d,255,s),d+=o.Fa;return 0}function kn(e,t,n){var i=e.w;return n[0]=e.h,e.Bb&&(0==i?--n[0]:(--i,t[0]-=e.width),e.k+e.w+e.h==e.K&&(n[0]=e.K-e.k-i)),i}function Sn(e,t){var n=e.p,i=[e.q];if(n!=m){for(var a=e.m,o=t.j.J,r=o==qn||o==Gn,s=t.j.c.RGBA,c=[h],l=kn(e,i,c),i=i[0],d=s.ma,l=s.Sa+l*s.f,u=l+(r?0:3),p=255,f=h,g=h,g=0;gf;++f){var _=n[i+f];d[u+4*f]=_,p&=_}i+=e.width,u+=s.f}255!=p&&b(o)&&WebPApplyAlphaMultiply(d,l,r,a,c,s.f)}return 0}function Cn(e,t){var n=e.p,i=[e.q];if(n!=m){var a=e.m,o=t.j.J,r=t.j.c.RGBA,s=[h],c=kn(e,i,s),i=i[0],l=r.ma,c=r.Sa+c*r.f,d=c+1,u=15,p=h;for(j=0;jp;++p){var f=n[i+p]>>4;l[d+2*p]=240&l[d+2*p]|f,u&=f}i+=e.width,d+=r.f}15!=u&&b(o)&&WebPApplyAlphaMultiply4444(l,c,a,s,r.f)}return 0}function Mn(e){var t=e.ka,n=t.j.J,i=Zn>n,a=n==Bn||n==jn||n==qn||n==Hn||n==Yn||b(n);if(t.memory=m,t.$a=m,t.zb=m,t.ad=m,!On(t.Qa,e,a?Zn:Yn))return 0;if(e.I){if(!(i?InitRGBRescaler(e,t):InitYUVRescaler(e,t)))return alert("memory error #1"),0}else{if(i){if(t.$a=bn,e.Bb){var o,r=e.m+1>>1,s=e.m+2*r,c=[];for(o=0;s>o;++o)c.push(205);if(c.push(0),t.memory=c,t.memory==m)return alert("memory error #2"),0;t.Sb=t.memory,t.Tb=0,t.Qb=t.Sb,t.Rb=t.Tb+e.m,t.lc=t.Qb,t.mc=t.Rb+r,t.$a=wn,nr[Rn]=rn,nr[Bn]=cn,nr[Fn]=sn,nr[jn]=ln,nr[qn]=dn,nr[Hn]=un,nr[zn]=pn}}else t.$a=yn;a&&(b(n)&&(WebPApplyAlphaMultiply=vn,nr[Vn]=cn,nr[Wn]=ln,nr[Gn]=dn,nr[Kn]=un),t.zb=n==Hn||n==Kn?Cn:i?Sn:$n)}if(i&&!tr){for(e=0;256>e;++e)Zo[e]=89858*(e-128)+Ko>>Ao,Jo[e]=-22014*(e-128)+Ko,Xo[e]=-45773*(e-128),Yo[e]=113618*(e-128)+Ko>>Ao;for(e=Eo;To>e;++e)t=76283*(e-16)+Ko>>Ao,Qo[e-Eo]=ft(t,255),er[e-Eo]=ft(t+8>>4,15);tr=1}return 1}function xn(e){var t=e.ka,n=e.m,i=e.h;return u(!(1&e.w)),0>=n||0>=i?0:(n=t.$a(e,t),t.ec+=n,t.zb&&t.zb(e,t),1)}function An(e){e=e.ka,e.memory="",e.memory=m}function En(e,t){return e[t+0]|e[t+1]<<8|e[t+2]<<16}function Tn(e,t){return(En(e,t)|e[t+3]<<24)>>>0}function In(t,n,i,a,o,r,c){var l=0,d=[0],g="VP8StatusCode",v=e(ui);if(t==m||i[0]=Bi&&!s(t,n[0],"RIFF",Li)){if(s(t,n[0]+8,"WEBP",Li)){g=ni;break e}var b=Tn(t,n[0]+Li);if(Li+Ri>b){g=ni;break e}l[0]=b,n[0]+=Bi,i[0]-=Bi}else l[0]=0;g=Qn}if(v.na=v.na[0],g!=Qn)return g;l=0=qi){g=ni;break e}b!=m&&(b[0]=k),a!=m&&(a[0]=w),o!=m&&(o[0]=$),n[0]+=g,i[0]-=g,d[0]=1}g=Qn}if(g!=Qn)return g;if(!l&&d[0])return ni;if(r!=m&&(r[0]=!!(b[0]&ji)),d&&c==m)return Qn;if(Li>i)return ri;if(l&&d[0]||!l&&!d[0]&&!s(t,n[0],"ALPH",Li)){v.$=[v.$],v.G=[v.G],v.pa=[v.pa];e:{var d=v.na,l=v.$,b=v.G,g=v.pa,w=f,$=0,k=y,S=Li+Ri+Fi;for(u(t!=m),u(i!=m),w=t,$=n[0],k=i[0],u(l!=m),u(g!=m),l[0]=m,b[0]=m,g[0]=0;;){var C=_,x=_;if(n[0]=$,i[0]=k,Ri>k){g=ri;break e}if(C=Tn(w,$+Li),x=Ri+C+1&-2,S+=x,d>0&&S>d){g=ni;break e}if(x>k){g=ri;break e}if(s(w,$,"ALPH",Li)){if(!s(w,$,"VP8 ",Li)||!s(w,"VP8L",Li)){g=Qn;break e}}else l[0]=w,b[0]=$+Ri,g[0]=C;$+=x,k-=x}g=p}if(v.$=v.$[0],v.G=v.G[0],v.pa=v.pa[0],g!=Qn)return g}v.ta=[v.ta],v.ia=[v.ia];e:if(d=v.na,l=v.ta,b=v.ia,$=!s(t,n[0],"VP8 ",Li),g=!s(t,n[0],"VP8L",Li),w=Li+Ri,u(t!=m),u(i!=m),u(l!=m),u(b!=m),i[0]=w&&$>d-w){g=ni;break e}l[0]=$,n[0]+=Ri,i[0]-=Ri,b[0]=g}else b[0]=i>=1&&t[n+0]==_i,l[0]=i[0];g=Qn}if(v.ta=v.ta[0],v.ia=v.ia[0],g!=Qn)return g;if(v.ta>Hi)return ni;if(v.ia){if(i[0]l?t=0:(g=[h],w=[h],$=[h],k=e(mi),M(k,t,d,l),qt(k,g,w,$)?(a!=m&&(a[0]=g[0]),o!=m&&(o[0]=w[0]),b!=m&&(b[0]=$[0]),t=1):t=0)}else{if(gi>i)return ri;d=n[0],l=i[0],a=a?a[0]:m,o=o?o[0]:m,!(t==m||gi>l)&&l-3>=3&&157==t[d+3+0]&&1==t[d+3+1]&&42==t[d+3+2]?(l=t[d+0]|t[d+1]<<8|t[d+2]<<16,b=16383&(t[d+7]<<8|t[d+6]),t=16383&(t[d+9]<<8|t[d+8]),!(!(1&l)+0)||(l>>1&7)>3||!(l>>4&1)||l>>5>=v.ta?t=0:(a&&(a[0]=b),o&&(o[0]=t),t=1)):t=0}return t?(r!=m&&(r[0]|=v.$!=m),c!=m&&(c[0]=v,c[0].offset=n[0]-c[0].b,u(n[0]-c[0].bt?c.c.RGBA.ma:c.c.Va.y):m}function Un(e,t,n,i){return i==m||e==m?ti:(u(i!=m),i.tc=0,i.width=[i.width],i.height=[i.height],i.$b=[i.$b],In(e,t,n,i.width,i.height,i.$b,m))}function On(e,t,n){var i=t.width,a=t.height,o=0,r=0,s=i,c=a;if(t.Ua=e!=m&&0n||(o&=-2,r&=-2),0>o||0>r||0>=s||0>=c||o+s>i||r+c>a))return 0;if(t.t=o,t.k=r,t.Ka=o+s,t.K=r+c,t.m=s,t.h=c,t.I=e!=m&&0=e.Ba||0>=e.Aa)return 0;t.Ba=e.Ba,t.Aa=e.Aa}return t.Za=e&&e.Za,t.Bb=e==m||!e.ed,t.I&&(t.Za=t.Ba<3*i/4&&t.Aa<3*a/4,t.Bb=0),1}var Ln=512,Rn=0,Bn=1,Fn=2,jn=3,qn=4,Hn=5,zn=6,Vn=7,Wn=8,Gn=9,Kn=10,Zn=11,Yn=12,Xn=13;this.WEBP_CSP_MODE=this.Cd={nd:0,od:1,kd:2,ld:3,jd:4,pd:5,qd:6,rd:7,sd:8,md:9};var Jn={J:"WEBP_CSP_MODE",width:h,height:h,Fc:h,c:{RGBA:{ma:f,Sa:0,f:h,size:y},Va:{y:f,c:f,S:f,p:f,D:f,B:f,C:f,q:f,F:h,nb:h,rb:h,Fa:h,Wc:y,Rc:y,Uc:y,Wb:y}},Ic:c(4,_),Jb:m,jc:f},Qn=0,ei=1,ti=2,ni=3,ii=4,ai=5,oi=6,ri=7;this.VP8StatusCode=this.td={xd:0,yd:1,vd:2,ud:3,Ad:4,zd:5,Bd:6,wd:7};var si={width:{value:h},height:{value:h},$b:{value:h},tc:h,Yd:h,rotate:h,be:h,Ic:c(3,_)};this.WebPGetFeatures=this.Md=function(e,t,n){var i="VP8StatusCode";return Ln>>>8!=Ln>>>8||n==m?e=ti:(t=[t],i=Un(e,[0],t,n),e=i==ri?ni:i),e};var ci={Za:h,ed:h,Ua:h,t:h,k:h,wc:h,vc:h,I:h,Ba:h,Aa:h,ae:h,Td:h,Xd:h,Ic:c(6,_)};this.WebPDecoderConfig=this.Kd={input:e(si),j:e(Jn),options:e(ci)},this.WebPInitDecoderConfig=this.Nd=function(e){return Ln>>>8!=Ln>>>8||e==m?e=0:(e=e.input,u(e!=m),e.tc=0,e=1),e};var li={width:h,height:h,w:h,m:h,h:h,y:f,c:f,S:f,D:0,B:0,C:0,F:h,Da:h,ka:0,put:0,Mb:0,Pb:0,Bb:h,e:y,data:f,b:0,Za:h,Ua:h,t:h,Ka:h,k:h,K:h,I:h,Ba:h,Aa:h,p:f,q:0},di={j:e(Jn),Sb:f,Qb:f,lc:f,Tb:0,Rb:0,mc:0,ec:h,Qa:e(ci),memory:0,$a:"(OutputFunc)",zb:"(OutputFunc)",ad:"(OutputRowFunc)"},ui={data:f,b:f,e:y,offset:y,$:m,G:f,pa:y,ta:y,na:y,ia:h},pi={qa:f,Ia:m,Pd:f,Ab:h,la:_,Z:_,gc:h},mi={T:v,qa:f,Ia:f,ya:y,Q:y,g:h,L:h,fa:h},hi=25,fi=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215],gi=10,_i=47,vi=14,yi=3,bi=5,wi=11,$i=5,ki=4278190080,Si=8,Ci=15,Mi=256,xi=24,Ai=4,Ei=0,Ti=1,Ii=2,Di=3,Pi=1,Ni=0,Ui=1,Oi=1,Li=4,Ri=8,Bi=12,Fi=10,ji=16,qi=1*Math.pow(2,32),Hi=-1-Ri-1>>>0,zi={kc:h,s:h},Vi={Y:"HuffmanTreeNode*",gb:h,Pa:h},Wi=-1,Gi={ea:_,bb:h},Ki=506832829,Zi=0,Yi=Zi,Xi=2,Ji=3,Qi=1,ea=4,ta=5,na=6,ia=3,aa=4,oa=4,ra=4,sa=4,ca=8,la=3,da=11,ua=32,pa=17*ua+9*ua,ma=1*ua+8,ha=ma+16*ua+ua,fa=ha+16,ga={fb:f,Jc:f,Nc:f,Ra:_},_a={l:0,v:0,gd:f,hd:f,uc:f,$c:f},va={pb:h,ob:h,tb:h,Kb:c(aa,0),Cb:c(aa,0)},ya={Ta:c(ia,f),z:d([sa,ca,la,da],f)},ba={Oc:h,Fb:h,kb:h,oc:h,Lc:c(oa,h),Gc:c(oa,h)},wa={zc:h,yc:h,ab:h},$a={X:h,ua:h,Nb:h},ka=c(2,h),Sa={sc:e(ka),sb:e(ka),qc:e(ka)},Ca={ha:h,d:h,W:h,M:wa,N:li},Ma={a:"VP8StatusCode",za:h,xc:0,o:e(pi),Ac:e(ga),P:e(_a),ga:e(ba),Ca:e(va),rc:"WebPWorker",qb:h,Ja:h,jb:h,oa:Ca,Ma:h,hb:h,lb:h,mb:h,wb:h,Ya:h,Hb:h,ic:l(8,pi),Zc:_,yb:l(aa,Sa),R:e(ya),pc:h,Pc:f,dc:f,cc:c(4,f),Xc:f,Sc:f,Vc:f,La:e($a),M:e(wa),Ea:f,z:0,ca:f,aa:f,ra:f,da:h,ba:h,sa:h,H:h,r:h,ib:0,Gb:y,i:h,d:h,wa:f,Eb:c(16,f),Vd:0,Tc:f,Lb:f,ja:_,Oa:_,A:h,W:h,Zb:c(aa,f),Ga:m,G:0,ub:y,Xb:f,Od:0,cd:h,dd:f,Wd:0,fc:y},xa=0,Aa=1,Ea=2,Ta={Qc:"VP8LImageTransformType",n:h,U:h,Vb:h,u:_,b:_},Ia={va:l($i,Vi)},Da={xb:h,Yb:e(Gi),Dc:h,eb:h,Ec:h,ac:_,bd:_,hc:h,Db:"HTreeGroup"},Pa={a:"VP8StatusCode",Wa:"VP8LDecodeState",Ob:"VP8LDecodeState",N:"VP8Io",Ib:"WebPDecBuffer",Hc:"WebPDecBuffer",V:_,Ha:_,Xa:_,vb:_,o:e(mi),l:h,v:h,O:h,xa:h,cb:e(Da),Na:h,nc:l(Ai,Ta),Ub:_,Mc:f,$d:f,Zd:"*WebPRescaler"},Na=4,Ua=[m,function(e,n,i,a,o,r,s,c){var l=h,d=c;for(u(e!=m),u(s!=m),u(i>0),u(a>0),u(o>0),u(r>=i*o),l=0;a>l;++l)0==l?t(s,c,e,n,o):U(e,n,s,d-r,s,c,o),U(e,n+o,s,d,s,c+o,o*(i-1)),d+=r,n+=r,c+=r},function(e,n,i,a,o,r,s,c){var l=h,d=c;for(u(e!=m),u(s!=m),u(i>0),u(a>0),u(o>0),u(r>=i*o),t(s,c,e,n,o),U(e,n+o,s,d,s,c+o,o*(i-1)),l=1;a>l;++l)n+=r,c+=r,U(e,n,s,d,s,c,o*i),d+=r},function(e,n,i,a,o,r,s,c){var l=c,d=h;for(u(e!=m),u(s!=m),u(i>0),u(a>0),u(o>0),u(r>=i*o),t(s,c,e,n,o),U(e,n+o,s,l,s,c+o,o*(i-1)),d=1;a>d;++d){var p=h,l=l+r;for(n+=r,c+=r,U(e,n,s,l-r,s,c,o),p=o;i*o>p;++p){var f=s[l+p-o]+s[l+p-r]-s[l+p-r-o];s[c+p]=e[n+p]+(0>f?0:f>255?255:f)&255}}}],Oa=[3,4,3,4,4,2,2,4,4,4,2,1,1];this.WebPFreeDecBuffer=this.Yc=function(e){e!=m&&(e.Fc||(e.Jb=""),e.jc=0,e.Jb=e.jc=m)};var La,Ra,Ba,Fa,ja,qa,Ha,za,Va,Wa,Ga,Ka,Za,Ya,Xa,Ja,Qa=c(511,f),eo=c(511,f),to=c(2041,0),no=c(225,0),io=c(766,f),ao=0,oo=85627,ro=35468,so=[function(e,t){var n,i=4;for(n=0;4>n;++n)i+=e[t+n-ua]+e[t-1+n*ua];for(i>>=3,n=0;4>n;++n)r(e,t+n*ua,i,4)},function(e,t){W(e,t,4)},function(e,n){var i=n-ua,a=[];for(a.push(K(e[i-1],e[i+0],e[i+1])),a.push(K(e[i+0],e[i+1],e[i+2])),a.push(K(e[i+1],e[i+2],e[i+3])),a.push(K(e[i+2],e[i+3],e[i+4])),i=0;4>i;++i)t(e,n+i*ua,a,0,4)},function(e,t){var n=e[t-1],i=e[t-1+ua],a=e[t-1+2*ua],o=e[t-1+3*ua];e[t+0+0*ua]=e[t+1+0*ua]=e[t+2+0*ua]=e[t+3+0*ua]=K(e[t-1-ua],n,i),e[t+0+1*ua]=e[t+1+1*ua]=e[t+2+1*ua]=e[t+3+1*ua]=K(n,i,a),e[t+0+2*ua]=e[t+1+2*ua]=e[t+2+2*ua]=e[t+3+2*ua]=K(i,a,o),e[t+0+3*ua]=e[t+1+3*ua]=e[t+2+3*ua]=e[t+3+3*ua]=K(a,o,o)},function(e,t){var n=e[t-1+0*ua],i=e[t-1+1*ua],a=e[t-1+2*ua],o=e[t-1-ua],r=e[t+0-ua],s=e[t+1-ua],c=e[t+2-ua],l=e[t+3-ua];e[t+0+3*ua]=K(i,a,e[t-1+3*ua]),e[t+0+2*ua]=e[t+1+3*ua]=K(n,i,a),e[t+0+1*ua]=e[t+1+2*ua]=e[t+2+3*ua]=K(o,n,i),e[t+0+0*ua]=e[t+1+1*ua]=e[t+2+2*ua]=e[t+3+3*ua]=K(r,o,n),e[t+1+0*ua]=e[t+2+1*ua]=e[t+3+2*ua]=K(s,r,o),e[t+2+0*ua]=e[t+3+1*ua]=K(c,s,r),e[t+3+0*ua]=K(l,c,s)},function(e,t){var n=e[t-1+0*ua],i=e[t-1+1*ua],a=e[t-1+2*ua],o=e[t-1-ua],r=e[t+0-ua],s=e[t+1-ua],c=e[t+2-ua],l=e[t+3-ua];e[t+0+0*ua]=e[t+1+2*ua]=o+r+1>>1,e[t+1+0*ua]=e[t+2+2*ua]=r+s+1>>1,e[t+2+0*ua]=e[t+3+2*ua]=s+c+1>>1,e[t+3+0*ua]=c+l+1>>1,e[t+0+3*ua]=K(a,i,n),e[t+0+2*ua]=K(i,n,o),e[t+0+1*ua]=e[t+1+3*ua]=K(n,o,r),e[t+1+1*ua]=e[t+2+3*ua]=K(o,r,s),e[t+2+1*ua]=e[t+3+3*ua]=K(r,s,c),e[t+3+1*ua]=K(s,c,l)},function(e,t){var n=e[t+1-ua],i=e[t+2-ua],a=e[t+3-ua],o=e[t+4-ua],r=e[t+5-ua],s=e[t+6-ua],c=e[t+7-ua];e[t+0+0*ua]=K(e[t+0-ua],n,i),e[t+1+0*ua]=e[t+0+1*ua]=K(n,i,a),e[t+2+0*ua]=e[t+1+1*ua]=e[t+0+2*ua]=K(i,a,o),e[t+3+0*ua]=e[t+2+1*ua]=e[t+1+2*ua]=e[t+0+3*ua]=K(a,o,r),e[t+3+1*ua]=e[t+2+2*ua]=e[t+1+3*ua]=K(o,r,s),e[t+3+2*ua]=e[t+2+3*ua]=K(r,s,c),e[t+3+3*ua]=K(s,c,c)},function(e,t){var n=e[t+0-ua],i=e[t+1-ua],a=e[t+2-ua],o=e[t+3-ua],r=e[t+4-ua],s=e[t+5-ua],c=e[t+6-ua],l=e[t+7-ua];e[t+0+0*ua]=n+i+1>>1,e[t+1+0*ua]=e[t+0+2*ua]=i+a+1>>1,e[t+2+0*ua]=e[t+1+2*ua]=a+o+1>>1,e[t+3+0*ua]=e[t+2+2*ua]=o+r+1>>1,e[t+0+1*ua]=K(n,i,a),e[t+1+1*ua]=e[t+0+3*ua]=K(i,a,o),e[t+2+1*ua]=e[t+1+3*ua]=K(a,o,r),e[t+3+1*ua]=e[t+2+3*ua]=K(o,r,s),e[t+3+2*ua]=K(r,s,c),e[t+3+3*ua]=K(s,c,l)},function(e,t){var n=e[t-1+0*ua],i=e[t-1+1*ua],a=e[t-1+2*ua],o=e[t-1+3*ua],r=e[t-1-ua],s=e[t+0-ua],c=e[t+1-ua],l=e[t+2-ua];e[t+0+0*ua]=e[t+2+1*ua]=n+r+1>>1,e[t+0+1*ua]=e[t+2+2*ua]=i+n+1>>1,e[t+0+2*ua]=e[t+2+3*ua]=a+i+1>>1,e[t+0+3*ua]=o+a+1>>1,e[t+3+0*ua]=K(s,c,l),e[t+2+0*ua]=K(r,s,c),e[t+1+0*ua]=e[t+3+1*ua]=K(n,r,s),e[t+1+1*ua]=e[t+3+2*ua]=K(i,n,r),e[t+1+2*ua]=e[t+3+3*ua]=K(a,i,n),e[t+1+3*ua]=K(o,a,i)},function(e,t){var n=e[t-1+0*ua],i=e[t-1+1*ua],a=e[t-1+2*ua],o=e[t-1+3*ua];e[t+0+0*ua]=n+i+1>>1,e[t+2+0*ua]=e[t+0+1*ua]=i+a+1>>1,e[t+2+1*ua]=e[t+0+2*ua]=a+o+1>>1,e[t+1+0*ua]=K(n,i,a),e[t+3+0*ua]=e[t+1+1*ua]=K(i,a,o),e[t+3+1*ua]=e[t+1+2*ua]=K(a,o,o),e[t+3+2*ua]=e[t+2+2*ua]=e[t+0+3*ua]=e[t+1+3*ua]=e[t+2+3*ua]=e[t+3+3*ua]=o}],co=[function(e,t){var n,i=16;for(n=0;16>n;++n)i+=e[t-1+n*ua]+e[t+n-ua];G(i>>5,e,t)},function(e,t){W(e,t,16)},function(e,n){var i;for(i=0;16>i;++i)t(e,n+i*ua,e,n-ua,16)},function(e,t){var n;for(n=16;n>0;--n)r(e,t+0,e[t-1],16),t+=ua},function(e,t){var n,i=8;for(n=0;16>n;++n)i+=e[t-1+n*ua];G(i>>4,e,t)},function(e,t){var n,i=8;for(n=0;16>n;++n)i+=e[t+n-ua];G(i>>4,e,t)},function(e,t){G(128,e,t)}],lo=[function(e,t){var n,i=8;for(n=0;8>n;++n)i+=e[t+n-ua]+e[t-1+n*ua];Z(1*(i>>4),e,t)},function(e,t){W(e,t,8)},function(e,n){var i;for(i=0;8>i;++i)t(e,n+i*ua,e,n-ua,8)},function(e,t){var n;for(n=0;8>n;++n)r(e,t+0,e[t-1],8),t+=ua},function(e,t){var n,i=4;for(n=0;8>n;++n)i+=e[t-1+n*ua];Z(1*(i>>3),e,t)},function(e,t){var n,i=4;for(n=0;8>n;++n)i+=e[t+n-ua];Z(1*(i>>3),e,t)},function(e,t){Z(128,e,t)}],uo=31,po=[0,2,8],mo=3,ho=1,fo=[0+0*ua,4+0*ua,8+0*ua,12+0*ua,0+4*ua,4+4*ua,8+4*ua,12+4*ua,0+8*ua,4+8*ua,8+8*ua,12+8*ua,0+12*ua,4+12*ua,8+12*ua,12+12*ua],go=[4,5,6,7,8,9,10,10,11,12,13,14,15,16,17,17,18,19,20,20,21,21,22,22,23,23,24,25,25,26,27,28,29,30,31,32,33,34,35,36,37,37,38,39,40,41,42,43,44,45,46,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,93,95,96,98,100,101,102,104,106,108,110,112,114,116,118,122,124,126,128,130,132,134,136,138,140,143,145,148,151,154,157],_o=[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,234,239,245,249,254,259,264,269,274,279,284],vo=[-Zi,1,-1,2,-2,3,4,6,-3,5,-4,-5,-6,7,-7,8,-8,-9],yo=[[[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]],[[253,136,254,255,228,219,128,128,128,128,128],[189,129,242,255,227,213,255,219,128,128,128],[106,126,227,252,214,209,255,255,128,128,128]],[[1,98,248,255,236,226,255,255,128,128,128],[181,133,238,254,221,234,255,154,128,128,128],[78,134,202,247,198,180,255,219,128,128,128]],[[1,185,249,255,243,255,128,128,128,128,128],[184,150,247,255,236,224,128,128,128,128,128],[77,110,216,255,236,230,128,128,128,128,128]],[[1,101,251,255,241,255,128,128,128,128,128],[170,139,241,252,236,209,255,255,128,128,128],[37,116,196,243,228,255,255,255,128,128,128]],[[1,204,254,255,245,255,128,128,128,128,128],[207,160,250,255,238,128,128,128,128,128,128],[102,103,231,255,211,171,128,128,128,128,128]],[[1,152,252,255,240,255,128,128,128,128,128],[177,135,243,255,234,225,128,128,128,128,128],[80,129,211,255,194,224,128,128,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[246,1,255,128,128,128,128,128,128,128,128],[255,128,128,128,128,128,128,128,128,128,128]]],[[[198,35,237,223,193,187,162,160,145,155,62],[131,45,198,221,172,176,220,157,252,221,1],[68,47,146,208,149,167,221,162,255,223,128]],[[1,149,241,255,221,224,255,255,128,128,128],[184,141,234,253,222,220,255,199,128,128,128],[81,99,181,242,176,190,249,202,255,255,128]],[[1,129,232,253,214,197,242,196,255,255,128],[99,121,210,250,201,198,255,202,128,128,128],[23,91,163,242,170,187,247,210,255,255,128]],[[1,200,246,255,234,255,128,128,128,128,128],[109,178,241,255,231,245,255,255,128,128,128],[44,130,201,253,205,192,255,255,128,128,128]],[[1,132,239,251,219,209,255,165,128,128,128],[94,136,225,251,218,190,255,255,128,128,128],[22,100,174,245,186,161,255,199,128,128,128]],[[1,182,249,255,232,235,128,128,128,128,128],[124,143,241,255,227,234,128,128,128,128,128],[35,77,181,251,193,211,255,205,128,128,128]],[[1,157,247,255,236,231,255,255,128,128,128],[121,141,235,255,225,227,255,255,128,128,128],[45,99,188,251,195,217,255,224,128,128,128]],[[1,1,251,255,213,255,128,128,128,128,128],[203,1,248,255,255,128,128,128,128,128,128],[137,1,177,255,224,255,128,128,128,128,128]]],[[[253,9,248,251,207,208,255,192,128,128,128],[175,13,224,243,193,185,249,198,255,255,128],[73,17,171,221,161,179,236,167,255,234,128]],[[1,95,247,253,212,183,255,255,128,128,128],[239,90,244,250,211,209,255,255,128,128,128],[155,77,195,248,188,195,255,255,128,128,128]],[[1,24,239,251,218,219,255,205,128,128,128],[201,51,219,255,196,186,128,128,128,128,128],[69,46,190,239,201,218,255,228,128,128,128]],[[1,191,251,255,255,128,128,128,128,128,128],[223,165,249,255,213,255,128,128,128,128,128],[141,124,248,255,255,128,128,128,128,128,128]],[[1,16,248,255,255,128,128,128,128,128,128],[190,36,230,255,236,255,128,128,128,128,128],[149,1,255,128,128,128,128,128,128,128,128]],[[1,226,255,128,128,128,128,128,128,128,128],[247,192,255,128,128,128,128,128,128,128,128],[240,128,255,128,128,128,128,128,128,128,128]],[[1,134,252,255,255,128,128,128,128,128,128],[213,62,250,255,255,128,128,128,128,128,128],[55,93,255,128,128,128,128,128,128,128,128]],[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]]],[[[202,24,213,235,186,191,220,160,240,175,255],[126,38,182,232,169,184,228,174,255,187,128],[61,46,138,219,151,178,240,170,255,216,128]],[[1,112,230,250,199,191,247,159,255,255,128],[166,109,228,252,211,215,255,174,128,128,128],[39,77,162,232,172,180,245,178,255,255,128]],[[1,52,220,246,198,199,249,220,255,255,128],[124,74,191,243,183,193,250,221,255,255,128],[24,71,130,219,154,170,243,182,255,255,128]],[[1,182,225,249,219,240,255,224,128,128,128],[149,150,226,252,216,205,255,171,128,128,128],[28,108,170,242,183,194,254,223,255,255,128]],[[1,81,230,252,204,203,255,192,128,128,128],[123,102,209,247,188,196,255,233,128,128,128],[20,95,153,243,164,173,255,203,128,128,128]],[[1,222,248,255,216,213,128,128,128,128,128],[168,175,246,252,235,205,255,255,128,128,128],[47,116,215,255,211,212,255,255,128,128,128]],[[1,121,236,253,212,214,255,255,128,128,128],[141,84,213,252,201,202,255,219,128,128,128],[42,80,160,240,162,185,255,205,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[244,1,255,128,128,128,128,128,128,128,128],[238,1,255,128,128,128,128,128,128,128,128]]]],bo=[[[231,120,48,89,115,113,120,152,112],[152,179,64,126,170,118,46,70,95],[175,69,143,80,85,82,72,155,103],[56,58,10,171,218,189,17,13,152],[114,26,17,163,44,195,21,10,173],[121,24,80,195,26,62,44,64,85],[144,71,10,38,171,213,144,34,26],[170,46,55,19,136,160,33,206,71],[63,20,8,114,114,208,12,9,226],[81,40,11,96,182,84,29,16,36]],[[134,183,89,137,98,101,106,165,148],[72,187,100,130,157,111,32,75,80],[66,102,167,99,74,62,40,234,128],[41,53,9,178,241,141,26,8,107],[74,43,26,146,73,166,49,23,157],[65,38,105,160,51,52,31,115,128],[104,79,12,27,217,255,87,17,7],[87,68,71,44,114,51,15,186,23],[47,41,14,110,182,183,21,17,194],[66,45,25,102,197,189,23,18,22]],[[88,88,147,150,42,46,45,196,205],[43,97,183,117,85,38,35,179,61],[39,53,200,87,26,21,43,232,171],[56,34,51,104,114,102,29,93,77],[39,28,85,171,58,165,90,98,64],[34,22,116,206,23,34,43,166,73],[107,54,32,26,51,1,81,43,31],[68,25,106,22,64,171,36,225,114],[34,19,21,102,132,188,16,76,124],[62,18,78,95,85,57,50,48,51]],[[193,101,35,159,215,111,89,46,111],[60,148,31,172,219,228,21,18,111],[112,113,77,85,179,255,38,120,114],[40,42,1,196,245,209,10,25,109],[88,43,29,140,166,213,37,43,154],[61,63,30,155,67,45,68,1,209],[100,80,8,43,154,1,51,26,71],[142,78,78,16,255,128,34,197,171],[41,40,5,102,211,183,4,1,221],[51,50,17,168,209,192,23,25,82]],[[138,31,36,171,27,166,38,44,229],[67,87,58,169,82,115,26,59,179],[63,59,90,180,59,166,93,73,154],[40,40,21,116,143,209,34,39,175],[47,15,16,183,34,223,49,45,183],[46,17,33,183,6,98,15,32,183],[57,46,22,24,128,1,54,17,37],[65,32,73,115,28,128,23,128,205],[40,3,9,115,51,192,18,6,223],[87,37,9,115,59,77,64,21,47]],[[104,55,44,218,9,54,53,130,226],[64,90,70,205,40,41,23,26,57],[54,57,112,184,5,41,38,166,213],[30,34,26,133,152,116,10,32,134],[39,19,53,221,26,114,32,73,255],[31,9,65,234,2,15,1,118,73],[75,32,12,51,192,255,160,43,51],[88,31,35,67,102,85,55,186,85],[56,21,23,111,59,205,45,37,192],[55,38,70,124,73,102,1,34,98]],[[125,98,42,88,104,85,117,175,82],[95,84,53,89,128,100,113,101,45],[75,79,123,47,51,128,81,171,1],[57,17,5,71,102,57,53,41,49],[38,33,13,121,57,73,26,1,85],[41,10,67,138,77,110,90,47,114],[115,21,2,10,102,255,166,23,6],[101,29,16,10,85,128,101,196,26],[57,18,10,102,102,213,34,20,43],[117,20,15,36,163,128,68,1,26]],[[102,61,71,37,34,53,31,243,192],[69,60,71,38,73,119,28,222,37],[68,45,128,34,1,47,11,245,171],[62,17,19,70,146,85,55,62,70],[37,43,37,154,100,163,85,160,1],[63,9,92,136,28,64,32,201,85],[75,15,9,9,64,255,184,119,16],[86,6,28,5,64,255,25,248,1],[56,8,17,132,137,255,55,116,128],[58,15,20,82,135,57,26,121,40]],[[164,50,31,137,154,133,25,35,218],[51,103,44,131,131,123,31,6,158],[86,40,64,135,148,224,45,183,128],[22,26,17,131,240,154,14,1,209],[45,16,21,91,64,222,7,1,197],[56,21,39,155,60,138,23,102,213],[83,12,13,54,192,255,68,47,28],[85,26,85,85,128,128,32,146,171],[18,11,7,63,144,171,4,4,246],[35,27,10,146,174,171,12,26,128]],[[190,80,35,99,180,80,126,54,45],[85,126,47,87,176,51,41,20,32],[101,75,128,139,118,146,116,128,85],[56,41,15,176,236,85,37,9,62],[71,30,17,119,118,255,17,18,138],[101,38,60,138,55,70,43,26,142],[146,36,19,30,171,255,97,27,20],[138,45,61,62,219,1,81,188,64],[32,41,20,117,151,142,20,21,163],[112,19,12,61,195,128,48,4,24]]],wo=[[[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[176,246,255,255,255,255,255,255,255,255,255],[223,241,252,255,255,255,255,255,255,255,255],[249,253,253,255,255,255,255,255,255,255,255]],[[255,244,252,255,255,255,255,255,255,255,255],[234,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255]],[[255,246,254,255,255,255,255,255,255,255,255],[239,253,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[251,255,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[251,254,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,254,253,255,254,255,255,255,255,255,255],[250,255,254,255,254,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[217,255,255,255,255,255,255,255,255,255,255],[225,252,241,253,255,255,254,255,255,255,255],[234,250,241,250,253,255,253,254,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[223,254,254,255,255,255,255,255,255,255,255],[238,253,254,254,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[249,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,255,255,255,255,255,255,255,255,255],[247,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[252,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[186,251,250,255,255,255,255,255,255,255,255],[234,251,244,254,255,255,255,255,255,255,255],[251,251,243,253,254,255,254,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[236,253,254,255,255,255,255,255,255,255,255],[251,253,253,254,254,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[254,254,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[254,254,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[248,255,255,255,255,255,255,255,255,255,255],[250,254,252,254,255,255,255,255,255,255,255],[248,254,249,253,255,255,255,255,255,255,255]],[[255,253,253,255,255,255,255,255,255,255,255],[246,253,253,255,255,255,255,255,255,255,255],[252,254,251,254,254,255,255,255,255,255,255]],[[255,254,252,255,255,255,255,255,255,255,255],[248,254,253,255,255,255,255,255,255,255,255],[253,255,254,254,255,255,255,255,255,255,255]],[[255,251,254,255,255,255,255,255,255,255,255],[245,251,254,255,255,255,255,255,255,255,255],[253,253,254,255,255,255,255,255,255,255,255]],[[255,251,253,255,255,255,255,255,255,255,255],[252,253,254,255,255,255,255,255,255,255,255],[255,254,255,255,255,255,255,255,255,255,255]],[[255,252,255,255,255,255,255,255,255,255,255],[249,255,254,255,255,255,255,255,255,255,255],[255,255,254,255,255,255,255,255,255,255,255]],[[255,255,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]]]; this.WebPGetDecoderVersion=this.Ld=function(){return 512};var $o=[0,1,2,3,6,4,5,6,6,6,6,6,6,6,6,7,0],ko=[[173,148,140,0],[176,155,140,135,0],[180,157,141,134,130,0],[254,254,243,230,196,177,153,140,133,130,129,0]],So=[0,1,4,8,5,2,3,6,9,12,13,10,7,11,14,15],Co=d([la,da],"");c(4,f);var Mo=[[0,0,0,0],[1,0,0,0],[0,1,0,0],[1,1,0,0],[0,0,1,0],[1,0,1,0],[0,1,1,0],[1,1,1,0],[0,0,0,1],[1,0,0,1],[0,1,0,1],[1,1,0,1],[0,0,1,1],[1,0,1,1],[0,1,1,1],[1,1,1,1]],xo=134480385,Ao=16,Eo=-227,To=482,Io=[Ot,function(e){return e},function(e,t,n){return t[n+0]},function(e,t,n){return t[n+1]},function(e,t,n){return t[n-1]},function(e,t,n){return Pt(Pt(e,t[n+1]),t[n+0])},function(e,t,n){return Pt(e,t[n-1])},function(e,t,n){return Pt(e,t[n+0])},function(e,t,n){return Pt(t[n-1],t[n+0])},function(e,t,n){return Pt(t[n+0],t[n+1])},function(e,t,n){return Pt(Pt(e,t[n-1]),Pt(t[n+0],t[n+1]))},function(e,t,n){return 0>=Math.abs((e>>24&255)-(t[n-1]>>24&255))-Math.abs((t[n+0]>>24&255)-(t[n-1]>>24&255))+(Math.abs((e>>16&255)-(t[n-1]>>16&255))-Math.abs((t[n+0]>>16&255)-(t[n-1]>>16&255)))+(Math.abs((e>>8&255)-(t[n-1]>>8&255))-Math.abs((t[n+0]>>8&255)-(t[n-1]>>8&255)))+(Math.abs((255&e)-(255&t[n-1]))-Math.abs((255&t[n+0])-(255&t[n-1])))?t[n+0]:e},function(e,t,n){return(Nt((e>>24&255)+(t[n+0]>>24&255)-(t[n-1]>>24&255))<<24|Nt((e>>16&255)+(t[n+0]>>16&255)-(t[n-1]>>16&255))<<16|Nt((e>>8&255)+(t[n+0]>>8&255)-(t[n-1]>>8&255))<<8|Nt((255&e)+(255&t[n+0])-(255&t[n-1])))>>>0},function(e,t,n){var i=t[n-1];return e=Pt(e,t[n+0]),(Ut(e>>24&255,i>>24&255)<<24|Ut(e>>16&255,i>>16&255)<<16|Ut(e>>8&255,i>>8&255)<<8|Ut(e>>0&255,i>>0&255))>>>0},Ot,Ot],Do={Cc:f,Bc:f,Kc:f},Po=16,No=16,Uo=16,Oo=[2,3,7],Lo=[3,3,11],Ro=0,Bo=1,Fo=2,jo=3,qo=4,Ho=[Mi+xi,Mi,Mi,Mi,40],zo=19,Vo=[17,18,0,1,2,3,4,5,16,6,7,8,9,10,11,12,13,14,15],Wo=120,Go=[24,7,23,25,40,6,39,41,22,26,38,42,56,5,55,57,21,27,54,58,37,43,72,4,71,73,20,28,53,59,70,74,36,44,88,69,75,52,60,3,87,89,19,29,86,90,35,45,68,76,85,91,51,61,104,2,103,105,18,30,102,106,34,46,84,92,67,77,101,107,50,62,120,1,119,121,83,93,17,31,100,108,66,78,118,122,33,47,117,123,49,63,99,109,82,94,0,116,124,65,79,16,32,98,110,48,115,125,81,95,64,114,126,97,111,80,113,127,96,112],Ko=1<=i;i++)n=t.substr(0,i),void 0===a[n]?a[n]=[e]:a[n].push(e)})}function a(e,t){var i=t.shortIndexes,a=t.fullTexts;e=n(e);var o,r,s,c,l,d=e.split(" "),u=!1;for(r=0;ro.length)&&(u=o)}for(o={},s=0;s,<\s]+/g,r=/^\s+|\s$/g;e.SearchIndexManager={createIndex:t,indexObject:i,cleanSearchText:n,search:a}}(window),function(e){function t(e){var t=(tsNow(),new WebPDecoder),n=t.WebPDecoderConfig,i=n.j,r=n.input;if(!t.WebPInitDecoderConfig(n))return console.error("[webpjs] Library version mismatch!"),!1;status=t.WebPGetFeatures(e,e.length,r),0!=status&&console.error("[webpjs] status error",status);t.WEBP_CSP_MODE;if(i.J=4,status=t.WebPDecode(e,e.length,n),ok=0==status,!ok)return console.error("[webpjs] decoding failed",status),!1;var s=i.c.RGBA.ma;if(!s)return!1;var c=i.height,l=i.width;a&&o?o.clearRect(0,0,a.width,a.height):(a=document.createElement("canvas"),o=a.getContext("2d")),a.height=c,a.width=l;for(var d=o.createImageData(a.width,a.height),u=d.data,p=0;c>p;p++)for(var m=0;l>m;m++)u[0+4*m+4*l*p]=s[1+4*m+4*l*p],u[1+4*m+4*l*p]=s[2+4*m+4*l*p],u[2+4*m+4*l*p]=s[3+4*m+4*l*p],u[3+4*m+4*l*p]=s[0+4*m+4*l*p];return o.putImageData(d,0,0),a.toDataURL("image/png")}var n=!1,i=new Image;i.onload=function(){n=2===this.width&&1===this.height},i.onerror=function(){n=!1},i.src="data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACyAgCdASoCAAEALmk0mk0iIiIiIgBoSygABc6zbAAA/v56QAAAAA==";var a,o;e.WebpManager={isWebpSupported:function(){return n},getPngUrlFromData:t}}(window),TLSerialization.prototype.createBuffer=function(){this.buffer=new ArrayBuffer(this.maxLength),this.intView=new Int32Array(this.buffer),this.byteView=new Uint8Array(this.buffer)},TLSerialization.prototype.getArray=function(){var e=new ArrayBuffer(this.offset),t=new Int32Array(e);return t.set(this.intView.subarray(0,this.offset/4)),t},TLSerialization.prototype.getBuffer=function(){return this.getArray().buffer},TLSerialization.prototype.getBytes=function(e){if(e){var t=new ArrayBuffer(this.offset),n=new Uint8Array(t);return n.set(this.byteView.subarray(0,this.offset)),n}for(var i=[],a=0;a>>",e.toString(16),e,t),this.checkLength(4),this.intView[this.offset/4]=e,this.offset+=4},TLSerialization.prototype.storeInt=function(e,t){this.writeInt(e,(t||"")+":int")},TLSerialization.prototype.storeBool=function(e,t){e?this.writeInt(2574415285,(t||"")+":bool"):this.writeInt(3162085175,(t||"")+":bool")},TLSerialization.prototype.storeLongP=function(e,t,n){this.writeInt(t,(n||"")+":long[low]"),this.writeInt(e,(n||"")+":long[high]")},TLSerialization.prototype.storeLong=function(e,t){if(angular.isArray(e))return 2==e.length?this.storeLongP(e[0],e[1],t):this.storeIntBytes(e,64,t);var n=bigStringInt(e).divideAndRemainder(bigint(4294967296));this.writeInt(intToUint(n[1].intValue()),(t||"")+":long[low]"),this.writeInt(intToUint(n[0].intValue()),(t||"")+":long[high]")},TLSerialization.prototype.storeDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);i[0]=e,this.writeInt(n[0],(field||"")+":double[low]"),this.writeInt(n[1],(field||"")+":double[high]")},TLSerialization.prototype.storeString=function(e,t){this.debug&&console.log(">>>",e,(t||"")+":string");var n=unescape(encodeURIComponent(e));this.checkLength(n.length+8);var i=n.length;253>=i?this.byteView[this.offset++]=i:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&i,this.byteView[this.offset++]=(65280&i)>>8,this.byteView[this.offset++]=(16711680&i)>>16);for(var a=0;i>a;a++)this.byteView[this.offset++]=n.charCodeAt(a);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){e instanceof ArrayBuffer&&(e=new Uint8Array(e)),this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes");var n=e.byteLength||e.length;for(this.checkLength(n+8),253>=n?this.byteView[this.offset++]=n:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&n,this.byteView[this.offset++]=(65280&n)>>8,this.byteView[this.offset++]=(16711680&n)>>16),this.byteView.set(e,this.offset),this.offset+=n;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var i=e.length;if(t%32||8*i!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(i),this.byteView.set(e,this.offset),this.offset+=i},TLSerialization.prototype.storeRawBytes=function(e,t){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n),this.byteView.set(e,this.offset),this.offset+=n},TLSerialization.prototype.storeMethod=function(e,t){var n,i=this.mtproto?Config.Schema.MTProto:Config.Schema.API,a=!1;for(n=0;n=4*this.intView.length)throw new Error("Nothing to fetch: "+e);var t=this.intView[this.offset/4];return this.debug&&console.log("<<<",t.toString(16),t,e),this.offset+=4,t},TLDeserialization.prototype.fetchInt=function(e){return this.readInt((e||"")+":int")},TLDeserialization.prototype.fetchDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),i[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),i=bigint(n).shiftLeft(32).add(bigint(t)).toString();return i},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");return 2574415285==t?!0:3162085175==t?!1:(this.offset-=4,this.fetchObject("Object",e))},TLDeserialization.prototype.fetchString=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;for(var n="",i=0;t>i;i++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var a=decodeURIComponent(escape(n))}catch(o){var a=n}return this.debug&&console.log("<<<",a,(e||"")+":string"),a},TLDeserialization.prototype.fetchBytes=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;var n=this.byteView.subarray(this.offset,this.offset+t);for(this.offset+=t;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t,n){if(e%32)throw new Error("Invalid bits: "+e);var i=e/8;if(t){var a=this.byteView.subarray(this.offset,this.offset+i);return this.offset+=i,a}for(var o=[],r=0;i>r;r++)o.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(o),(n||"")+":int"+e),o},TLDeserialization.prototype.fetchRawBytes=function(e,t,n){if(e===!1&&(e=this.readInt((n||"")+"_length")),t){var i=new Uint8Array(e);return i.set(this.byteView.subarray(this.offset,this.offset+e)),this.offset+=e,i}for(var i=[],a=0;e>a;a++)i.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(i),n||""),i},TLDeserialization.prototype.fetchObject=function(e,t){switch(e){case"#":case"int":return this.fetchInt(t);case"long":return this.fetchLong(t);case"int128":return this.fetchIntBytes(128,!1,t);case"int256":return this.fetchIntBytes(256,!1,t);case"int512":return this.fetchIntBytes(512,!1,t);case"string":return this.fetchString(t);case"bytes":return this.fetchBytes(t);case"double":return this.fetchDouble(t);case"Bool":return this.fetchBool(t)}if(t=t||e||"Object","Vector"==e.substr(0,6)||"vector"==e.substr(0,6)){if("V"==e.charAt(0)){var n=this.readInt(t+"[id]");if(481674261!=n)throw new Error("Invalid vector constructor "+n)}var i=this.readInt(t+"[count]"),a=[];if(i>0)for(var o=e.substr(7,e.length-8),r=0;i>r;r++)a.push(this.fetchObject(o,t+"["+r+"]"));return a}var s=this.mtproto?Config.Schema.MTProto:Config.Schema.API,c=!1,l=!1;if("%"==e.charAt(0)){var d=e.substr(1);for(r=0;r=97&&e.charAt(0)<=122){for(r=0;r=n?i.resolve(e):i.reject(new Error("FILE_NOT_FOUND"))},function(e){console.log(dT(),"error",e),i.reject(e)})},function(){i.reject(new Error("FILE_NOT_FOUND"))}),i.promise})}function r(e,t){return s(e).then(function(e){return n.write(e,t).then(function(){return e.finalize()})})}function s(t){return i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!0},function(e){n.getFileWriter(e).then(function(t){t.finalize=function(){return e},i.resolve(t)},function(e){l=!1,i.reject(e)})},function(e){l=!1,i.reject(e)}),i.promise})}t.requestFileSystem=t.requestFileSystem||t.webkitRequestFileSystem;var c,l=void 0!==t.requestFileSystem;return i(),{isAvailable:a,saveFile:r,getFile:o,getFileWriter:s}}]).service("MemoryFileStorage",["$q","FileManager",function(e,t){function n(){return!0}function i(t){return r[t]?e.when(r[t]):e.reject(new Error("FILE_NOT_FOUND"))}function a(t,n){return e.when(r[t]=n)}function o(n,i){var o=t.getFakeFileWriter(i,function(e){a(n,e)});return e.when(o)}var r={};return{isAvailable:n,saveFile:a,getFile:i,getFileWriter:o}}]).service("CryptoWorker",["$timeout","$q",function(e,t){function n(e,n,a){var s=t.defer();return r[o]=s,n.task=e,n.taskID=o,(a||i).postMessage(n),o++,s.promise}var i=!1,a=!1,o=0,r={},s=Config.Modes.webcrypto&&window.crypto&&(window.crypto.subtle||window.crypto.webkitSubtle),c=s&&void 0!==s.digest,l=function(e,t){var n=r[e];void 0!==n&&(n.resolve(t),delete r[e])};if(Config.Modes.nacl&&navigator.mimeTypes&&void 0!==navigator.mimeTypes["application/x-pnacl"]){var d=$('
').appendTo($("body"))[0];d.addEventListener("load",function(){a=d.firstChild,console.log(dT(),"NaCl ready")},!0),d.addEventListener("message",function(e){l(e.data.taskID,e.data.result)},!0),d.addEventListener("error",function(e){console.error("NaCl error",e)},!0)}if(window.Worker){var u=new Worker("js/lib/crypto_worker.js");u.onmessage=function(e){i?l(e.data.taskID,e.data.result):i=u},u.onerror=function(e){console.error("CW error",e,e.stack),i=!1}}return{sha1Hash:function(n){if(c){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return s.digest({name:"SHA-1"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),c=!1,i.resolve(sha1HashSync(n))}),i.promise}return e(function(){return sha1HashSync(n)})},aesEncrypt:function(t,i,o){return a?n("aes-encrypt",{bytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesEncryptSync(t,i,o))})},aesDecrypt:function(t,i,o){return a?n("aes-decrypt",{encryptedBytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesDecryptSync(t,i,o))})},factorize:function(t){return t=convertToByteArray(t),a&&t.length<=8?n("factorize",{bytes:t},a):i?n("factorize",{bytes:t}):e(function(){return pqPrimeFactorization(t)})},modPow:function(t,a,o){return i?n("mod-pow",{x:t,y:a,m:o}):e(function(){return bytesModPow(t,a,o)})}}}]).service("ExternalResourcesManager",["$q","$http",function(e,t){function n(e){return void 0!==i[e]?i[e]:i[e]=t.get(e,{responseType:"blob",transformRequest:null}).then(function(e){return window.URL=window.URL||window.webkitURL,window.URL.createObjectURL(e.data)})}var i={};return{downloadImage:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,n){function i(){r||(r=!0,$(t).on("blur focus keydown mousedown touchstart",a),setTimeout(function(){a({type:"blur"})},0))}function a(i){if("mousemove"==i.type){var i=i.originalEvent||i;if(i&&0===i.movementX&&0===i.movementY)return;$(t).off("mousemove",a)}var r="blur"==i.type||"timeout"==i.type?!0:!1;n.cancel(o),r||(o=n(function(){a({type:"timeout"})},3e4)),e.idle.isIDLE!=r&&(e.$apply(function(){e.idle.isIDLE=r}),r&&"timeout"==i.type&&$(t).on("mousemove",a))}e.idle={isIDLE:!1};var o,r=!1;return{start:i}}]).service("AppRuntimeManager",["$window",function(e){return{reload:function(){try{location.reload()}catch(t){}e.chrome&&chrome.runtime&&chrome.runtime.reload&&chrome.runtime.reload()},close:function(){try{e.close()}catch(t){}},focus:function(){window.navigator.mozApps&&document.hidden?window.navigator.mozApps.getSelf().onsuccess=function(){this.result.launch()}:(window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus())}}}]),angular.module("myApp.i18n",["izhukov.utils"]).factory("_",["$rootScope","$locale",function(e,t){function n(e,t){return e.replace(c,function(i,a,o){var r=t[a];return void 0===r?(console.warn("[i18n] missing param "+a+' for message "'+e+'"'),""):(void 0!==o&&(r=n(r,o.split("|"))),r.toString().trim())})}function i(e){return e=e.replace(/\*\*(.+?)\*\*/g,"$1").replace(/\n| /g,"
")}function a(e,t){var a=!1,c=e;if("_raw"===e.substr(-4)&&(a=!0,e=e.substr(0,e.length-4)),r.hasOwnProperty(e))c=r[e];else{if(!s.hasOwnProperty(e))return console.warn("[i18n] missing key "+e),e;c=s[e],console.warn("[i18n] missing locale key "+o+" / "+e)}return a||(c=encodeEntities(c)),"_md"==e.substr(-3)&&(c=i(c)),arguments.length>1&&("string"==typeof t?(Array.prototype.shift.apply(arguments),c=n(c,arguments)):c=n(c,t)),c}var o=Config.I18n.locale,r=Config.I18n.messages,s=Config.I18n.fallback_messages,c=/\{\s*([a-zA-Z\d\-_]+)(?:\s*:\s*(.*?))?\s*\}/g;return a.locale=function(){return o},a.pluralize=function(n){var i=e.$eval(a(n+"_raw"));return function(e){return(i[t.pluralCat(e)]||"").replace("{}",e)}},a}]).filter("i18n",["_",function(e){return function(t,n){return e(t+"_raw",n)}}]).directive("ngPluralize",["_",function(e){return{restrict:"EA",priority:1,compile:function(t){var n=t.attr("when"),i=e(n+"_raw");t.attr("when",i)}}}]).directive("myI18n",["_",function(e){return{restrict:"EA",compile:function(t){var n=t.children('my-i18n-param:not([name]), [my-i18n-param=""]:not([name])').map(function(e,t){return t.outerHTML}).toArray();t.children('my-i18n-param[name], [my-i18n-param]:not([my-i18n-param=""]), [my-i18n-param][name]').each(function(e,t){n[angular.element(t).attr("my-i18n-param")||angular.element(t).attr("name")]=t.outerHTML}),t.children("my-i18n-param").remove();var i=t.attr("my-i18n")||t.attr("msgid")?t:t.children("my-i18n-format, [my-i18n-format]");i.each(function(t,i){var a=angular.element(i),o=a.attr("my-i18n")||a.attr("msgid")||a.attr("my-i18n-format")||a.html().replace(/\s+/g," ").trim(),r=e(o,n);a.html(r)})}}}]),angular.module("izhukov.mtproto",["izhukov.utils"]).factory("MtpDcConfigurator",function(){function e(e,a){if(void 0===i[e]){var o,r,s=!1;if(Config.Modes.ssl){var c=t[e-1]+(a?"-1":""),l=Config.Modes.test?"apiw_test1":"apiw1";return s="https://"+c+".web.telegram.org/"+l}for(o=0;or[0]||i[0]==r[0]&&i[1]>=r[1])&&(r=[i[0],i[1]+4]),i=r,longFromInts(r[0],r[1])}function n(t,n){var o=t-Math.floor((n||tsNow())/1e3),r=Math.abs(a-o)>10;return e.set({server_time_offset:o}),i=[0,0],a=o,console.log(dT(),"Apply server time",t,n,o,r),r}var i=[0,0],a=0;return e.get("server_time_offset").then(function(e){e&&(a=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpTimeManager","CryptoWorker","$http","$q","$timeout",function(e,t,n,i,a,o,r,s){function c(t,n){var a=n.byteLength,s=new Int32Array(n),c=new TLSerialization;c.storeLongP(0,0,"auth_key_id"),c.storeLong(i.generateID(),"msg_id"),c.storeInt(a,"request_length");var l=c.getBuffer(),d=new Int32Array(l),u=l.byteLength,p=new ArrayBuffer(u+a),m=new Int32Array(p);m.set(d),m.set(s,d.length);var h,f=g?p:m;try{h=o.post(e.chooseServer(t),f,{responseType:"arraybuffer",transformRequest:null})}catch(_){h=r.reject({code:406,type:"NETWORK_BAD_RESPONSE",originalError:_})}return h.then(function(e){if(!e.data||!e.data.byteLength)return r.reject({code:406,type:"NETWORK_BAD_RESPONSE"});try{{var t=new TLDeserialization(e.data,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}}catch(n){return r.reject({code:406,type:"NETWORK_BAD_RESPONSE",originalError:n})}return t},function(e){return e.message||e.type||(e={code:406,type:"NETWORK_BAD_REQUEST",originalError:e}),r.reject(e)})}function l(e){var n=e.deferred,i=new TLSerialization({mtproto:!0}); i.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),c(e.dcID,i.getBuffer()).then(function(i){var o=i.fetchObject("ResPQ");if("resPQ"!=o._)throw new Error("resPQ response invalid: "+o._);if(!bytesCmp(e.nonce,o.nonce))throw new Error("resPQ nonce mismatch");if(e.serverNonce=o.server_nonce,e.pq=o.pq,e.fingerprints=o.server_public_key_fingerprints,console.log(dT(),"Got ResPQ",bytesToHex(e.serverNonce),bytesToHex(e.pq),e.fingerprints),e.publicKey=t.select(e.fingerprints),!e.publicKey)throw new Error("No public key found");console.log(dT(),"PQ factorization start",e.pq),a.factorize(e.pq).then(function(t){e.p=t[0],e.q=t[1],console.log(dT(),"PQ factorization done",t[2]),d(e)},function(e){console.log("Worker error",e,e.stack),n.reject(e)})},function(e){console.log(dT(),"req_pq error",e.message),n.reject(e)}),s(function(){t.prepare()})}function d(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var i=new TLSerialization({mtproto:!0});i.storeObject({_:"p_q_inner_data",pq:e.pq,p:e.p,q:e.q,nonce:e.nonce,server_nonce:e.serverNonce,new_nonce:e.newNonce},"P_Q_inner_data","DECRYPTED_DATA");var a=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),o=new TLSerialization({mtproto:!0});o.storeMethod("req_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,p:e.p,q:e.q,public_key_fingerprint:e.publicKey.fingerprint,encrypted_data:rsaEncrypt(e.publicKey,a)}),console.log(dT(),"Send req_DH_params"),c(e.dcID,o.getBuffer()).then(function(n){var i=n.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=i._&&"server_DH_params_ok"!=i._)return t.reject(new Error("Server_DH_Params response invalid: "+i._)),!1;if(!bytesCmp(e.nonce,i.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,i.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==i._){var a=sha1BytesSync(e.newNonce).slice(-16);return bytesCmp(a,i.new_nonce_hash)?(t.reject(new Error("server_DH_params_fail")),!1):(t.reject(new Error("server_DH_params_fail new_nonce_hash mismatch")),!1)}try{u(e,i.encrypted_answer)}catch(o){return t.reject(o),!1}p(e)},function(e){t.reject(e)})}function u(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1BytesSync(e.newNonce.concat(e.serverNonce)).concat(sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1BytesSync([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecryptSync(t,e.tmpAesKey,e.tmpAesIv),a=n.slice(0,20),o=n.slice(20),r=bytesToArrayBuffer(o),s=new TLDeserialization(r,{mtproto:!0}),c=s.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=c._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,c.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,c.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=c.g,e.dhPrime=c.dh_prime,e.gA=c.g_a,e.serverTime=c.server_time,e.retry=0;var l=s.getOffset();if(!bytesCmp(a,sha1BytesSync(o.slice(0,l))))throw new Error("server_DH_inner_data SHA1-hash mismatch");i.applyServerTime(e.serverTime,e.localTime)}function p(e){var t=e.deferred,i=bytesFromHex(e.g.toString(16));e.b=new Array(256),n.nextBytes(e.b),a.modPow(i,e.b,e.dhPrime).then(function(n){var i=new TLSerialization({mtproto:!0});i.storeObject({_:"client_DH_inner_data",nonce:e.nonce,server_nonce:e.serverNonce,retry_id:[0,e.retry++],g_b:n},"Client_DH_Inner_Data");var o=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),r=aesEncryptSync(o,e.tmpAesKey,e.tmpAesIv),s=new TLSerialization({mtproto:!0});s.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:r}),console.log(dT(),"Send set_client_DH_params"),c(e.dcID,s.getBuffer()).then(function(n){var i=n.fetchObject("Set_client_DH_params_answer");return"dh_gen_ok"!=i._&&"dh_gen_retry"!=i._&&"dh_gen_fail"!=i._?(t.reject(new Error("Set_client_DH_params_answer response invalid: "+i._)),!1):bytesCmp(e.nonce,i.nonce)?bytesCmp(e.serverNonce,i.server_nonce)?void a.modPow(e.gA,e.b,e.dhPrime).then(function(n){var a=sha1BytesSync(n),o=a.slice(0,8),r=a.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",i._),i._){case"dh_gen_ok":var s=sha1BytesSync(e.newNonce.concat([1],o)).slice(-16);if(!bytesCmp(s,i.new_nonce_hash1))return t.reject(new Error("Set_client_DH_params_answer new_nonce_hash1 mismatch")),!1;var c=bytesXor(e.newNonce.slice(0,8),e.serverNonce.slice(0,8));e.authKeyID=r,e.authKey=n,e.serverSalt=c,t.resolve(e);break;case"dh_gen_retry":var l=sha1BytesSync(e.newNonce.concat([2],o)).slice(-16);return bytesCmp(l,i.new_nonce_hash2)?p(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var d=sha1BytesSync(e.newNonce.concat([3],o)).slice(-16);return bytesCmp(d,i.new_nonce_hash3)?(t.reject(new Error("Set_client_DH_params_answer fail")),!1):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash3 mismatch")),!1)}},function(e){t.reject(e)}):(t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1):(t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1)},function(e){t.reject(e)})},function(e){t.reject(e)})}function m(t){if(void 0!==_[t])return _[t];for(var n=[],i=0;16>i;i++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return r.reject(new Error("No server found for dc "+t));var a={dcID:t,nonce:n,deferred:r.defer()};return s(function(){l(a)}),_[t]=a.deferred.promise,_[t]["catch"](function(){delete _[t]}),_[t]}var h=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),f=h&&parseFloat(h[1])||!1,g=!("ArrayBufferView"in window)&&(!f||30>f);delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept;var _={};return{auth:m}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpTimeManager","MtpSecureRandom","Storage","CryptoWorker","AppRuntimeManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,i,a,o,r,s,c,l,d){function u(e,t,n,i){i=i||{},this.dcID=e,this.iii=f++,this.authKey=t,this.authKeyUint8=convertToUint8Array(t),this.authKeyBuffer=convertToArrayBuffer(t),this.authKeyID=sha1BytesSync(t).slice(-8),this.serverSalt=n,this.upload=i.fileUpload||i.fileDownload||!1,this.updateSession(),this.currentRequests=0,this.checkConnectionPeriod=0,this.sentMessages={},this.serverMessages=[],this.clientMessages=[],this.pendingMessages={},this.pendingAcks=[],this.pendingResends=[],this.connectionInited=!1,this.pendingTimeouts=[],this.longPollInt=l(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),g||(g=!0,d.offline=!0,d.offlineConnecting=!0),Config.Navigator.mobile&&this.setupMobileSleep()}function p(){_&&(_=!1,h({_:"new_session_created"}))}function m(){_=!0}var h,f=0,g=!1,_=!1,v=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),y=v&&parseFloat(v[1])||!1,b=!("ArrayBufferView"in window)&&(!y||30>y);return delete r.defaults.headers.post["Content-Type"],delete r.defaults.headers.common.Accept,d.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){this.seqNo=0,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.setupMobileSleep=function(){var e=this;d.$watch("idle.isIDLE",function(t){t?e.sleepAfter=tsNow()+3e4:(delete e.sleepAfter,e.checkLongPoll())}),d.$on("push_received",function(){e.sleepAfter&&(e.sleepAfter=tsNow()+3e4,e.checkLongPoll())})},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var i=this;if(n.container){var a=[];angular.forEach(n.inner,function(e){var t=i.updateSentMessage(e);t&&a.push(t.msg_id)}),n.inner=a}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete i.sentMessages[e],n},u.prototype.generateSeqNo=function(e){var t=2*this.seqNo;return e||(t++,this.seqNo++),t},u.prototype.wrapMtpCall=function(e,n,i){var a=new TLSerialization({mtproto:!0});a.storeMethod(e,n);var o=t.generateID(),r=this.generateSeqNo(),s={msg_id:o,seq_no:r,body:a.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT call",e,n,o,r),this.pushMessage(s,i)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var i=new TLSerialization({mtproto:!0});i.storeObject(e,"Object");var a=t.generateID(),o=this.generateSeqNo(n.notContentRelated),r={msg_id:a,seq_no:o,body:i.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT message",e,a,o),this.pushMessage(r,n)},u.prototype.wrapApiCall=function(e,n,i){var a=new TLSerialization(i);this.connectionInited||(a.storeInt(3667594509,"invokeWithLayer"),a.storeInt(Config.Schema.API.layer,"layer"),a.storeInt(1769565673,"initConnection"),a.storeInt(Config.App.id,"api_id"),a.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),a.storeString(navigator.platform||"Unknown Platform","system_version"),a.storeString(Config.App.version,"app_version"),a.storeString(navigator.language||"en","lang_code")),i.afterMessageID&&(a.storeInt(3416209197,"invokeAfterMsg"),a.storeLong(i.afterMessageID,"msg_id")),i.resultType=a.storeMethod(e,n);var o=t.generateID(),r=this.generateSeqNo(),s={msg_id:o,seq_no:r,body:a.getBytes(!0),isAPI:!0};return Config.Modes.debug?console.log(dT(),"Api call",e,n,o,r,i):console.log(dT(),"Api call",e),this.pushMessage(s,i)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()t.sleepAfter)||t.sendLongPoll()})},u.prototype.sendLongPoll=function(){var e=25e3,t=this;this.longPollPending=tsNow()+e,this.wrapMtpCall("http_wait",{max_delay:0,wait_after:0,max_wait:e},{noResponse:!0,longPoll:!0}).then(function(){delete t.longPollPending,setZeroTimeout(t.checkLongPoll.bind(t))},function(){console.log("Long-poll failed")})},u.prototype.pushMessage=function(e,t){var n=s.defer();return this.sentMessages[e.msg_id]=angular.extend(e,t||{},{deferred:n}),this.pendingMessages[e.msg_id]=0,t&&t.noShedule||this.sheduleRequest(),angular.isObject(t)&&(t.messageID=e.msg_id),n.promise},u.prototype.pushResend=function(e,t){var n=t?tsNow()+t:0,i=this.sentMessages[e];if(i.container)for(var a=0;a=c){if(o=m.sentMessages[t]){var n=(o.body.byteLength||o.body.length)+32;if(!o.notContentRelated&&u)return;if(!o.notContentRelated&&s&&s+n>655360)return void(u=!0);if(o.singleInRequest&&(p++,p>1))return;r.push(o),s+=n,o.isAPI?l=!0:o.longPoll&&(d=!0)}delete m.pendingMessages[t]}}),l&&!d){var h=new TLSerialization({mtproto:!0});h.storeMethod("http_wait",{max_delay:0,wait_after:0,max_wait:1e3}),r.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:h.getBytes()})}if(r.length){var f=[];if(r.length>1){var g=new TLSerialization({mtproto:!0,startMaxLength:s+64});g.storeInt(1945237724,"CONTAINER[id]"),g.storeInt(r.length,"CONTAINER[count]");for(var v=[],n=0;n1)&&this.sheduleRequest()}},u.prototype.getEncryptedMessage=function(e){var t=this;return a.sha1Hash(e).then(function(n){var i=new Uint8Array(n).subarray(4,20);return t.getMsgKeyIv(i,!0).then(function(t){return a.aesEncrypt(e,t[0],t[1]).then(function(e){return{bytes:e,msgKey:i}})})})},u.prototype.getDecryptedMessage=function(e,t){return this.getMsgKeyIv(e,!1).then(function(e){return a.aesDecrypt(t,e[0],e[1])})},u.prototype.sendEncryptedRequest=function(t,n){var a=this;n=n||{};var c=new TLSerialization({startMaxLength:t.body.length+64});return c.storeIntBytes(this.serverSalt,64,"salt"),c.storeIntBytes(this.sessionID,64,"session_id"),c.storeLong(t.msg_id,"message_id"),c.storeInt(t.seq_no,"seq_no"),c.storeInt(t.body.length,"message_data_length"),c.storeRawBytes(t.body,"message_data"),this.getEncryptedMessage(c.getBuffer()).then(function(t){var c=new TLSerialization({startMaxLength:t.bytes.byteLength+256});c.storeIntBytes(a.authKeyID,64,"auth_key_id"),c.storeIntBytes(t.msgKey,128,"msg_key"),c.storeRawBytes(t.bytes,"encrypted_data");var l,d=b?c.getBuffer():c.getArray();try{n=angular.extend(n||{},{responseType:"arraybuffer",transformRequest:null}),l=r.post(e.chooseServer(a.dcID,a.upload),d,n)}catch(u){l=s.reject(u)}return l.then(function(e){return e.data&&e.data.byteLength?e:s.reject({code:406,type:"NETWORK_BAD_RESPONSE"})},function(e){return 404==e.status&&-1!=(e.data||"").indexOf("nginx/0.3.33")&&i.remove("dc"+a.dcID+"_server_salt","dc"+a.dcID+"_auth_key").then(function(){o.reload()}),e.message||e.type||(e={code:406,type:"NETWORK_BAD_REQUEST"}),s.reject(e)})})},u.prototype.parseResponse=function(e){var t=this,n=new TLDeserialization(e),i=n.fetchIntBytes(64,!1,"auth_key_id");if(!bytesCmp(i,this.authKeyID))throw new Error("Invalid server auth_key_id: "+bytesToHex(i));var o=n.fetchIntBytes(128,!0,"msg_key"),r=n.fetchRawBytes(e.byteLength-n.getOffset(),!0,"encrypted_data");return this.getDecryptedMessage(o,r).then(function(e){var n=new TLDeserialization(e,{mtproto:!0}),i=(n.fetchIntBytes(64,!1,"salt"),n.fetchIntBytes(64,!1,"session_id")),r=n.fetchLong("message_id"),s=n.fetchInt("seq_no"),c=n.fetchRawBytes(!1,!0,"message_data"),l=convertToUint8Array(e).subarray(0,n.getOffset());return a.sha1Hash(l).then(function(e){if(!bytesCmp(o,bytesFromArrayBuffer(e).slice(-16)))throw console.warn(o,bytesFromArrayBuffer(e)),new Error("server msgKey mismatch");var n=bytesToArrayBuffer(c),a={mtproto:!0,override:{mt_message:function(e,t){e.msg_id=this.fetchLong(t+"[msg_id]"),e.seqno=this.fetchInt(t+"[seqno]"),e.bytes=this.fetchInt(t+"[bytes]");var n=this.getOffset();try{e.body=this.fetchObject("Object",t+"[body]")}catch(i){console.error(dT(),"parse error",i.message,i.stack),e.body={_:"parse_error",error:i}}this.offset!=n+e.bytes&&(console.warn(dT(),"set offset",this.offset,n,e.bytes),this.offset=n+e.bytes)},mt_rpc_result:function(e,n){e.req_msg_id=this.fetchLong(n+"[req_msg_id]");var i=t.sentMessages[e.req_msg_id],a=i&&i.resultType||"Object";e.result=this.fetchObject(a,n+"[result]")}}},l=new TLDeserialization(n,a),d=l.fetchObject("","INPUT");return{response:d,messageID:r,sessionID:i,seqNo:s}})})},u.prototype.applyServerSalt=function(e){var t=longToBytes(e),n={};return n["dc"+this.dcID+"_server_salt"]=bytesToHex(t),i.set(n),this.serverSalt=t,!0},u.prototype.sheduleRequest=function(e){this.offline&&this.checkConnection("forced shedule");var t=tsNow()+e;return e&&this.nextReq&&this.nextReq<=t?!1:(c.cancel(this.nextReqPromise),e>0?this.nextReqPromise=c(this.performSheduledRequest.bind(this),e||0):setZeroTimeout(this.performSheduledRequest.bind(this)),void(this.nextReq=t))},u.prototype.ackMessage=function(e){this.pendingAcks.push(e),this.sheduleRequest(3e4)},u.prototype.reqResendMessage=function(e){console.log(dT(),"Req resend",e),this.pendingResends.push(e),this.sheduleRequest(100)},u.prototype.cleanupSent=function(){var e=this,t=!1;return angular.forEach(this.sentMessages,function(n,i){if(n.notContentRelated&&void 0===e.pendingMessages[i])delete e.sentMessages[i];else if(n.container){for(var a=0;ar;r++)this.processMessage(e.messages[r],n,a);break;case"bad_server_salt":console.log(dT(),"Bad server salt",e);var s=this.sentMessages[e.bad_msg_id];if(!s||s.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad server salt for invalid message");this.applyServerSalt(e.new_server_salt),this.pushResend(e.bad_msg_id),this.ackMessage(n);break;case"bad_msg_notification":console.log(dT(),"Bad msg notification",e);var s=this.sentMessages[e.bad_msg_id];if(!s||s.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad msg notification for invalid message");if(16==e.error_code||17==e.error_code){t.applyServerTime(bigStringInt(n).shiftRight(32).toString(10))&&(console.log(dT(),"Update session"),this.updateSession());var c=this.updateSentMessage(e.bad_msg_id);this.pushResend(c.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,a);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt);var l=this;i.get("dc").then(function(t){t==l.dcID&&!l.upload&&h&&h(e)});break;case"msgs_ack":for(var r=0;r5?"[.."+e.result.length+"..]":e.result),console.log(dT(),"Rpc response",g)}s.deferred.resolve(e.result)}s.isAPI&&(this.connectionInited=!0)}delete this.sentMessages[p]}break;default:this.ackMessage(n),h&&h(e)}},{getNetworker:function(e,t,n,i){return new u(e,t,n,i)},setUpdatesProcessor:function(e){h=e},stopAll:m,startAll:p}}]),angular.module("izhukov.mtproto.wrapper",["izhukov.utils","izhukov.mtproto"]).factory("MtpApiManager",["Storage","MtpAuthorizer","MtpNetworkerFactory","MtpSingleInstanceService","ErrorService","qSync","$q","TelegramMeWebService",function(e,t,n,i,a,o,r,s){function c(e){f!==e&&(f=e,s.setAuthorized(f))}function l(t,n){e.set({dc:t,user_auth:angular.extend({dcID:t},n)}),c(!0),y=t}function d(){for(var t=[],n=1;5>=n;n++)t.push("dc"+n+"_auth_key");return e.get.apply(e,t).then(function(n){for(var i=[],a=0;a0||!1),e.id||0})}function h(){return y||!1}var f,g={},_={},v={},y=!1;return i.start(),e.get("dc").then(function(e){e&&(y=e)}),{getBaseDcID:h,getUserID:m,invokeApi:p,getNetworker:u,setUserAuth:l,logOut:d}}]).factory("MtpApiFileManager",["MtpApiManager","$q","FileManager","IdbFileStorage","TmpfsFileStorage","MemoryFileStorage",function(e,t,n,i,a,o){function r(e,n,i){void 0===y[e]&&(y[e]=[],b[e]=0);var a=y[e],o=t.defer();return a.push({cb:n,deferred:o,activeDelta:i}),setZeroTimeout(function(){s(e)}),o.promise}function s(e){var t=y[e],n="upload"==e?11:5;if(b[e]>=n||!t||!t.length)return!1;var i=t.shift(),a=i.activeDelta||1;b[e]+=a;w++;i.cb().then(function(t){b[e]-=a,s(e),i.deferred.resolve(t)},function(t){b[e]-=a,s(e),i.deferred.reject(t)})}function c(e){switch(e._){case"inputVideoFileLocation":return"video"+e.id+".mp4";case"inputDocumentFileLocation":return"doc"+e.id;case"inputAudioFileLocation":return"audio"+e.id}return e.volume_id||console.trace("Empty location",e),e.volume_id+"_"+e.local_id+"_"+e.secret+".jpg"}function l(e){if(!e)return!1;var t=c(e);return v[t]||!1}function d(){return a.isAvailable()?a:i.isAvailable()?i:o}function u(e,t){var n=c(e);return g[n]||(g[n]=d().saveFile(n,t).then(function(e){return v[n]=e})),g[n]}function p(i){if(!n.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});var a=c(i),o="image/jpeg",s=g[a]||_[a];if(s)return s;var l=d();return _[a]=l.getFile(a).then(function(e){return v[a]=e},function(){var t=r(i.dc_id,function(){var t=i;return t._&&"fileLocation"!=t._||(t=angular.extend({},i,{_:"inputFileLocation"})),e.invokeApi("upload.getFile",{location:t,offset:0,limit:1048576},{dcID:i.dc_id,fileDownload:!0,createNetworker:!0})});return l.getFileWriter(a,o).then(function(e){return t.then(function(t){return n.write(e,t.bytes).then(function(){return v[a]=e.finalize()})})})})}function m(e,t){var n=d(),i=c(e);return n.getFile(i,t)}function h(i,a,o,s){if(!n.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});s=s||{};var l=c(a),u=s.toFileEntry||null,p=g[l]||_[l],m=d();if(p)return u?p.then(function(e){return n.copy(e,u)}):p;var h,f=t.defer(),y=!1,b=!1,w=s.mime||"image/jpeg",$=function(e){f.reject(e),$=angular.noop,!h||e&&"DOWNLOAD_CANCELED"==e.type||h.truncate(0)};return m.getFile(l,o).then(function(e){u?n.copy(e,u).then(function(){f.resolve()},$):f.resolve(v[l]=e)},function(){var s=u?n.getFileWriter(u):m.getFileWriter(l,w);s.then(function(s){h=s;var c,d,p=524288,m=0,g=t.when();if(s.length){if(m=s.length,m>=o)return void f.resolve(u?s.finalize():v[l]=s.finalize());s.seek(m),f.notify({done:m,total:o})}for(c=m;o>c;c+=p)d=t.defer(),function(c,d,m,h){return r(i,function(){return y?t.when():e.invokeApi("upload.getFile",{location:a,offset:d,limit:p},{dcID:i,fileDownload:!0,singleInRequest:void 0!==window.safari,createNetworker:!0})},2).then(function(e){h.then(function(){return y?t.when():n.write(s,e.bytes).then(function(){m.resolve()},$).then(function(){c?(b=!0,u?f.resolve():f.resolve(v[l]=s.finalize())):f.notify({done:d+p,total:o})})})})}(c+p>=o,c,d,g),g=d.promise})}),f.promise.cancel=function(){y||b||(y=!0,delete _[l],$({type:"DOWNLOAD_CANCELED"}))},u||(_[l]=f.promise),f.promise}function f(n){var i=n.size,a=i>=10485760,o=!1,s=!1,c=0,l=262144,d=2;i>67108864?(l=524288,d=4):102400>i&&(l=32768,d=1);var u=Math.ceil(i/l);if(u>1500)return t.reject({type:"FILE_TOO_BIG"});var p,m=[nextRandomInt(4294967295),nextRandomInt(4294967295)],h=t.defer(),f=function(e){h.reject(e),o=!0,f=angular.noop},g=0,_={_:a?"inputFileBig":"inputFile",id:m,parts:u,name:n.name,md5_checksum:""};for(p=0;i>p;p+=l)!function(p,g){r("upload",function(){var r=t.defer(),d=new FileReader,v=n.slice(p,p+l);return d.onloadend=function(t){return o?void r.reject():void(t.target.readyState==FileReader.DONE&&e.invokeApi(a?"upload.saveBigFilePart":"upload.saveFilePart",{file_id:m,file_part:g,file_total_parts:u,bytes:t.target.result},{startMaxLength:l+256,fileUpload:!0,singleInRequest:!0}).then(function(){c++,r.resolve(),c>=u?(h.resolve(_),s=!0):(console.log(dT(),"Progress",c*l/i),h.notify({done:c*l,total:i}))},f))},d.readAsArrayBuffer(v),r.promise},d)}(p,g++);return h.promise.cancel=function(){console.log("cancel upload",o,s),o||s||(o=!0,f({type:"UPLOAD_CANCELED"}))},h.promise}var g={},_={},v={},y={},b={},w=0;return{getCachedFile:l,getDownloadedFile:m,downloadFile:h,downloadSmallFile:p,saveSmallFile:u,uploadFile:f}}]).service("MtpSingleInstanceService",["_","$rootScope","$interval","Storage","AppRuntimeManager","IdleManager","ErrorService","MtpNetworkerFactory",function(e,t,n,i,a,o,r,s){function c(){if(!p&&!Config.Navigator.mobile&&!Config.Modes.packed){p=!0,o.start(),h=tsNow(),t.$watch("idle.isIDLE",d),n(d,5e3),d();try{$($window).on("beforeunload",l)}catch(e){}}}function l(){i.remove(m?"xt_instance":"xt_idle_instance")}function d(){var n=tsNow(),a=t.idle&&t.idle.isIDLE,o={id:u,idle:a,time:n};i.get("xt_instance","xt_idle_instance").then(function(t){var c=t[0],l=t[1];!c||c.timen-1e4&&n>f&&(r.alert(e("error_modal_warning_title_raw"),e("error_modal_multiple_open_tabs_raw")),f+=tsNow()+6e4)),i.set({xt_instance:o}),m||s.startAll(),m=!0):(i.set({xt_idle_instance:o}),m&&s.stopAll(),m=!1)})}var u=nextRandomInt(4294967295),p=!1,m=!1,h=tsNow(),f=0;return{start:c}}]),angular.module("myApp",["ngRoute","ngSanitize","ngTouch","ui.bootstrap","mediaPlayer","izhukov.utils","izhukov.mtproto","izhukov.mtproto.wrapper","myApp.filters","myApp.services","myApp.templates","myApp.directives","myApp.controllers"]).config(["$locationProvider","$routeProvider","$compileProvider","StorageProvider",function(e,t,n,i){n.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|blob|filesystem|chrome-extension|app):|data:image\//),n.aHrefSanitizationWhitelist(/^\s*(https?|ftp|file|mailto|blob|filesystem|chrome-extension|app):|data:/),Config.Modes.test&&i.setPrefix("t_"),t.when("/",{templateUrl:templateUrl("welcome"),controller:"AppWelcomeController"}),t.when("/login",{templateUrl:templateUrl("login"),controller:"AppLoginController"}),t.when("/im",{templateUrl:templateUrl("im"),controller:"AppIMController",reloadOnSearch:!1}),t.otherwise({redirectTo:"/"})}]),angular.module("myApp.services",["myApp.i18n","izhukov.utils"]).service("AppUsersManager",["$rootScope","$modal","$modalStack","$filter","$q","qSync","MtpApiFileManager","MtpApiManager","RichTextProcessor","ErrorService","Storage","_",function(e,t,n,i,a,o,r,s,c,l,d,u){function p(){return O?O:O=s.invokeApi("contacts.getContacts",{hash:""}).then(function(e){var t,n; -L=[],_(e.users);for(var n=0;n=1e3?void o.resolve(r):void this["continue"]()},t.onerror=function(e){console.log("phonebook error",e,e.type,e.message),o.reject(e)},o.promise}return{isAvailable:a,openPhonebookImport:o,getPhonebookContacts:r}}]).service("AppChatsManager",["$q","$rootScope","$modal","_","MtpApiFileManager","MtpApiManager","AppUsersManager","AppPhotosManager","RichTextProcessor",function(e,t,n,i,a,o,r,s,c){function l(e){angular.forEach(e,d)}function d(e){if(angular.isObject(e)){e.rTitle=c.wrapRichText(e.title,{noLinks:!0,noLinebreaks:!0})||i("chat_title_deleted");var n=SearchIndexManager.cleanSearchText(e.title||"").split(" "),a=n.shift(),o=n.pop();e.initials=a.charAt(0)+(o?o.charAt(0):a.charAt(1)),e.num=Math.abs(e.id>>1)%(Config.Mobile?4:8)+1,void 0===v[e.id]?v[e.id]=e:(safeReplaceObject(v[e.id],e),t.$broadcast("chat_update",e.id)),void 0!==w[e.id]&&safeReplaceObject(w[e.id],e&&e.photo&&e.photo.photo_small||{empty:!0})}}function u(e){return v[e]||{id:e,deleted:!0}}function p(n){return void 0!==y[n]&&v[n].version==y[n].participants.version?e.when(y[n]):void 0!==b[n]?b[n]:b[n]=o.invokeApi("messages.getFullChat",{chat_id:n}).then(function(e){return l(e.chats),r.saveApiUsers(e.users),e.full_chat&&e.full_chat.chat_photo.id&&s.savePhoto(e.full_chat.chat_photo),delete b[n],t.$broadcast("chat_full_update",n),y[n]=e.full_chat})}function m(e){return angular.isObject(v[e])}function h(e,t){var n=u(e);return void 0===w[e]&&(w[e]=n&&n.photo&&n.photo.photo_small||{empty:!0}),{placeholder:"img/placeholders/"+t+"Avatar"+(Config.Mobile?n.num:Math.ceil(n.num/2))+"@2x.png",location:w[e]}}function f(e){u(e);return"g"+e}function g(e,t){var n=angular.copy(t),i=u(e);return n.participants&&"chatParticipants"==n.participants._&&o.getUserID().then(function(e){angular.forEach(n.participants.participants,function(t){t.user=r.getUser(t.user_id),t.canLeave=e==t.user_id,t.canKick=!t.canLeave&&(e==n.participants.admin_id||e==t.inviter_id)})}),n.thumb={placeholder:"img/placeholders/GroupAvatar"+(Math.abs(e)%4+1)+"@2x.png",location:i&&i.photo&&i.photo.photo_small,width:72,height:72,size:0},n.peerString=f(e),n.chat=i,n}function _(e){var i=t.$new();i.chatID=e;n.open({templateUrl:templateUrl("chat_modal"),controller:"ChatModalController",scope:i,windowClass:"chat_modal_window mobile_modal"})}var v={},y={},b={},w={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChatParticipants":var i=n.participants,a=y[i.id];void 0!==a&&(a.participants=n.participants,t.$broadcast("chat_full_update",chatID));break;case"updateChatParticipantAdd":var a=y[n.chat_id];if(void 0!==a){for(var i=a.participants.participants||[],o=0,r=i.length;r>o;o++)if(i[o].user_id==n.user_id)return;i.push({_:"chatParticipant",user_id:n.user_id,inviter_id:n.inviter_id,date:tsNow(!0)}),a.participants.version=n.version,t.$broadcast("chat_full_update",n.chat_id)}break;case"updateChatParticipantDelete":var a=y[n.chat_id];if(void 0!==a)for(var i=a.participants.participants||[],o=0,r=i.length;r>o;o++)if(i[o].user_id==n.user_id)return i.splice(o,1),a.participants.version=n.version,void t.$broadcast("chat_full_update",n.chat_id)}}),{saveApiChats:l,saveApiChat:d,getChat:u,getChatFull:p,getChatPhoto:h,getChatString:f,hasChat:m,wrapForFull:g,openChat:_}}]).service("AppPeersManager",["AppUsersManager","AppChatsManager","MtpApiManager",function(e,t){return{getInputPeer:function(e){var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?{_:"inputPeerForeign",user_id:n[0],access_hash:n[1]}:{_:"inputPeerChat",chat_id:n[0]}},getInputPeerByID:function(t){return t>0?{_:"inputPeerForeign",user_id:t,access_hash:e.getUser(t).access_hash||0}:0>t?{_:"inputPeerChat",chat_id:-t}:void 0},getPeerSearchText:function(n){var i;if(n>0)i=e.getUserSearchText(n);else if(0>n){var a=t.getChat(-n);i=a.title||""}return i},getPeerString:function(n){return n>0?e.getUserString(n):t.getChatString(-n)},getOutputPeer:function(e){return e>0?{_:"peerUser",user_id:e}:{_:"peerChat",chat_id:-e}},getPeerID:function(e){if(angular.isObject(e))return e.user_id?e.user_id:-e.chat_id;var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?n[0]:-n[0]||0},getPeer:function(n){return n>0?e.getUser(n):t.getChat(-n)},getPeerPhoto:function(n,i,a){return n>0?e.getUserPhoto(n,i):t.getChatPhoto(-n,a)}}}]).service("AppMessagesManager",["$q","$rootScope","$location","$filter","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppVideoManager","AppDocsManager","AppAudioManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","PeersSelectService","Storage","FileManager","TelegramMeWebService","StatusManager","_",function(e,t,n,i,a,o,r,s,c,l,d,u,p,m,h,f,g,_,v,y,b,w){function $(t,n,i){var a=Q;if(angular.isString(t)&&t.length){if(!i||rt.query!==t){rt.query=t;var c=SearchIndexManager.search(t,ot);rt.dialogs=[],angular.forEach(Q.dialogs,function(e){c[e.peerID]&&rt.dialogs.push(e)}),rt.count=rt.dialogs.length}a=rt}else rt.query=!1;var l=0;if(n>0)for(l=0;la.dialogs[l].top_message);l++);return null!==a.count&&a.dialogs.length==a.count||a.dialogs.length>=l+(i||1)?e.when({count:a.count,dialogs:a.dialogs.slice(l,l+(i||20))}):(i=i||20,p.invokeApi("messages.getDialogs",{offset:l,limit:i,max_id:n||0}).then(function(e){if(y.setAuthorized(!0),o.saveApiUsers(e.users),r.saveApiChats(e.chats),D(e.messages),n>0)for(l=0;la.dialogs[l].top_message);l++);return a.count=e.count||e.dialogs.length,!n&&a.dialogs.length&&W(a.dialogs[0].top_message),a.dialogs.splice(l,a.dialogs.length-l),angular.forEach(e.dialogs,function(e){var t=s.getPeerID(e.peer),n=s.getPeerSearchText(t);if(SearchIndexManager.indexObject(t,n,ot),a.dialogs.push({peerID:t,top_message:e.top_message,unread_count:e.unread_count}),void 0===J[t]&&(J[t]={count:null,history:[e.top_message],pending:[]}),f.savePeerSettings(t,e.notify_settings),e.unread_count>0&&ft&&e.top_message>ft){var i=x(e.top_message),o=16&i.flags?i.from_id:t;i.unread&&!i.out&&f.getPeerMuted(o).then(function(e){e||_.get("notify_nopreview").then(function(e){G(i,e)})})}}),{count:a.count,dialogs:a.dialogs.slice(l,l+i)}}))}function k(e,t,n,i){return p.invokeApi("messages.getHistory",{peer:e,offset:i||0,limit:n||0,max_id:t||0},{noErrorBox:!0}).then(function(e){return o.saveApiUsers(e.users),r.saveApiChats(e.chats),D(e.messages),e})}function S(e,t,n,i){return k(e,t,n).then(function(a){i.count=a.count||a.messages.length;var o=0;if(t>0)for(o=0;oi.history[o]);o++);return i.history.splice(o,i.history.length-o),angular.forEach(a.messages,function(e){i.history.push(e.id)}),n-=a.messages.length,n>0&&i.history.length0)for(d=!0,l=0;lc.history[l]){d=!1;break}}else{var h=V(r);if(h&&h[0]&&h[0].unread_count>1){var f=h[0].unread_count;(p=f>50)?(i=20,u=16,l=f-u):(i=Math.max(10,o,f+2),u=f)}else Config.Mobile&&(i=20)}return!d&&(null!==c.count&&c.history.length==c.count||c.history.length>=l+(i||1))?(a?(a=Math.min(l,a),l=Math.max(0,l-a),i+=a):i=i||(l?20:o||5),e.when({count:c.count,history:m.concat(c.history.slice(l,l+i)),unreadOffset:u,unreadSkip:p})):(a||i||(i=o||20),d&&(l=0),a||p||n&&-1==c.history.indexOf(n)?(a&&(l=-a,i+=a),k(t,n,i,l).then(function(e){c.count=e.count||e.messages.length;var t=[];return angular.forEach(e.messages,function(e){t.push(e.id)}),{count:c.count,history:m.concat(t),unreadOffset:u,unreadSkip:p}})):S(t,n,i,c).then(function(){if(l=0,n>0)for(l=0;lc.history[l]);l++);return{count:c.count,history:m.concat(c.history.slice(l,l+i)),unreadOffset:u,unreadSkip:p}}))}function M(t,n,i,a,c){var l=[],d=!n,u=s.getPeerID(t),m={peer:u,filter:i},h=d&&angular.equals(st,m);if(d&&!h&&(st=m,ct=[]),!a&&!n){var f=J[u];if(void 0!==f&&f.history.length){var g,_,v={},y=c||20;switch(i._){case"inputMessagesFilterPhotos":v.messageMediaPhoto=!0;break;case"inputMessagesFilterVideo":v.messageMediaVideo=!0;break;case"inputMessagesFilterPhotoVideo":v.messageMediaPhoto=!0,v.messageMediaVideo=!0;break;case"inputMessagesFilterDocument":v.messageMediaDocument=!0;break;case"inputMessagesFilterAudio":v.messageMediaAudio=!0}for(g=0;g=y)));g++);}if(l.length=y));g++);}return l.length||1e3==c?(d&&(ct=listMergeSorted(ct,l)),e.when({count:null,history:l})):p.invokeApi("messages.search",{peer:t,q:n||"",filter:i||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:c||20,max_id:a||0}).then(function(e){o.saveApiUsers(e.users),r.saveApiChats(e.chats),D(e.messages);var t=e.count||e.messages.length;return l=[],angular.forEach(e.messages,function(e){l.push(e.id)}),d&&(ct=listMergeSorted(ct,l)),{count:t,history:l}},function(t){return 400==t.code&&(t.handled=!0),e.reject(t)})}function x(e){return Z[e]||{deleted:!0}}function A(e){return p.invokeApi("messages.deleteMessages",{id:e}).then(function(t){return a.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:e,pts:t.pts,pts_count:t.pts_count}}),e})}function E(t,n,i){return a.processUpdateMessage({_:"updateShort",update:{_:"updatePts",pts:n.pts,pts_count:n.pts_count}}),n.offset?p.invokeApi(i,{peer:t,offset:n.offset,max_id:0}).then(function(e){return E(t,e,i)}):e.when()}function T(e){var n=s.getPeerID(e),i=J[n],a=V(n);if(!a[0]||!a[0].unread_count){if(!i||!i.history.length)return!1;var o,r,c=!1;for(l=i.history.length;l>=0;l--)if(o=i.history[l],r=Z[o],r&&!r.out&&r.unread){c=!0;break}if(!c)return!1}if(i.readPromise)return i.readPromise;if(i.readPromise=p.invokeApi("messages.readHistory",{peer:e,offset:0,max_id:0}).then(function(t){return E(e,t,"messages.readHistory")}).then(function(){a[0]&&(a[0].unread_count=0,t.$broadcast("dialog_unread",{peerID:n,count:0}),t.$broadcast("messages_read"))})["finally"](function(){delete i.readPromise}),i&&i.history.length){var o,r,l,n,a;for(l=0;l=0?(r="photo",c="photo."+i.type.split("/")[1]):"video/"==i.type.substr(0,6)?(r="video",c="video.mp4"):"audio/"==i.type.substr(0,6)?(r="audio",c="audio."+("ogg"==i.type.split("/")[1]?"ogg":"mp3")):(r="document",c="document."+i.type.split("/")[1]):(r="document",c="document."+i.type.split("/")[1]),void 0===h&&(h=J[n]={count:null,history:[],pending:[]}),p.getUserID().then(function(o){n!=o&&(g|=3),_&&(g|=8);var v,y={_:"messageMediaPending",type:r,file_name:i.name||c,size:i.size,progress:{percent:1,total:i.size}},b={_:"message",id:l,from_id:o,to_id:s.getOutputPeer(n),flags:g,date:tsNow(!0)+ut,message:"",media:y,random_id:u,reply_to_msg_id:_,pending:!0},w=function(e){var n=Y[l];e?(b.error=!0,n&&(n.error=!0)):(delete b.error,n&&delete n.error),t.$broadcast("messages_pending")},$=!1;b.send=function(){var o=e.defer();it.then(function(){(!$||b.error)&&($=!1,v=m.uploadFile(i)),v.then(function(e){e.name=c,$=!0;var t;switch(r){case"photo":t={_:"inputMediaUploadedPhoto",file:e};break;case"video":t={_:"inputMediaUploadedVideo",file:e,duration:0,w:0,h:0,mime_type:i.type};break;case"audio":t={_:"inputMediaUploadedAudio",file:e,duration:0,mime_type:i.type};break;case"document":default:t={_:"inputMediaUploadedDocument",file:e,mime_type:i.type,attributes:[{_:"documentAttributeFilename",file_name:i.name}]}}p.invokeApi("messages.sendMedia",{peer:f,media:t,random_id:d,reply_to_msg_id:_}).then(function(e){b.date=e.message.date,b.id=e.message.id,b.media=e.message.media,a.processUpdateMessage({_:"updates",users:e.users,chats:e.chats,seq:0,updates:[{_:"updateMessageID",random_id:u,id:e.message.id},{_:"updateNewMessage",message:b,pts:e.pts,pts_count:e.pts_count}]})},function(e){return"photo"==r&&400==e.code&&"PHOTO_INVALID_DIMENSIONS"==e.type?(e.handled=!0,r="document",void b.send()):void w(!0)})},function(){w(!0)},function(e){y.progress.done=e.done,y.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update",{peerID:n})}),y.progress.cancel=function(){$||(o.resolve(),v.cancel(),L(u))},v["finally"](function(){o.resolve()})}),it=o.promise},D([b]),h.pending.unshift(l),t.$broadcast("history_append",{peerID:n,messageID:l,my:!0}),b.send()}),et[u]=[n,l]}function U(e,n){var i=at--,o=[nextRandomInt(4294967295),nextRandomInt(4294967295)],r=bigint(o[0]).shiftLeft(32).add(bigint(o[1])).toString(),l=J[e],u=s.getInputPeerByID(e);void 0===l&&(l=J[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(m){var h;switch(n._){case"inputMediaContact":h=angular.extend({},n,{_:"messageMediaContact"});break;case"inputMediaPhoto":h={_:"messageMediaPhoto",photo:c.getPhoto(n.id.id)};break;case"inputMediaDocument":h={_:"messageMediaDocument",document:d.getDoc(n.id.id)}}var f={_:"message",id:i,from_id:m,to_id:s.getOutputPeer(e),flags:e==m?0:3,date:tsNow(!0)+ut,message:"",media:h,random_id:r,pending:!0},g=function(e){var n=Y[i];e?(f.error=!0,n&&(n.error=!0)):(delete f.error,n&&delete n.error),t.$broadcast("messages_pending")};f.send=function(){p.invokeApi("messages.sendMedia",{peer:u,media:n,random_id:o,reply_to_msg_id:0}).then(function(e){f.date=e.message.date,f.id=e.message.id,f.media=e.message.media,a.processUpdateMessage({_:"updates",users:e.users,chats:e.chats,seq:0,updates:[{_:"updateMessageID",random_id:r,id:e.message.id},{_:"updateNewMessage",message:f,pts:e.pts,pts_count:e.pts_count}]})},function(){g(!0)})},D([f]),l.pending.unshift(i),t.$broadcast("history_append",{peerID:e,messageID:i,my:!0}),f.send()}),et[r]=[e,i]}function O(e,t){t=t.sort();for(var n,i=[],n=(t.length,0);nt?t:e.out||2&e.flags?t:e.from_id}function j(e,t){var n=-1!=t;if(n&&void 0!==X[e])return X[e];var i=angular.copy(Z[e])||{id:e};return(i.chatID=i.to_id.chat_id)?(i.peerID=-i.chatID,i.peerData=r.getChat(i.chatID)):(i.peerID=i.out?i.to_id.user_id:i.from_id,i.peerData=o.getUser(i.peerID)),i.peerString=s.getPeerString(i.peerID),i.peerPhoto=s.getPeerPhoto(i.peerID,"User","Group"),i.unreadCount=t,"messageService"==i._&&i.action.user_id&&(i.action.user=o.getUser(i.action.user_id)),i.message&&i.message.length&&(i.richMessage=h.wrapRichText(i.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),i.dateText=gt(i.date),n&&(X[e]=i),i}function q(e){if(void 0!==Y[e])return Y[e];var t=angular.copy(Z[e])||{id:e};if(t.media&&void 0!==t.media.progress&&(t.media.progress=Z[e].media.progress),t.media)switch(t.media._){case"messageMediaPhoto":t.media.photo=c.wrapForHistory(t.media.photo.id);break;case"messageMediaVideo":t.media.video=l.wrapForHistory(t.media.video.id);break;case"messageMediaDocument":t.media.document=d.wrapForHistory(t.media.document.id);break;case"messageMediaAudio":t.media.audio=u.wrapForHistory(t.media.audio.id);break;case"messageMediaContact":t.media.rFullName=h.wrapRichText(t.media.first_name+" "+(t.media.last_name||""),{noLinks:!0,noLinebreaks:!0})}else if(t.action)switch(t.action._){case"messageActionChatEditPhoto":t.action.photo=c.wrapForHistory(t.action.photo.id);break;case"messageActionChatCreate":case"messageActionChatEditTitle":t.action.rTitle=h.wrapRichText(t.action.title,{noLinks:!0,noLinebreaks:!0})||w("chat_title_deleted")}var n=t.reply_to_msg_id;if(n&&(Z[n]?t.reply_to_msg=j(n):(t.reply_to_msg={id:n,loading:!0},-1==lt.indexOf(n)&&(lt.push(n),dt===!1&&(dt=setTimeout(H,100))))),t.message&&t.message.length){var i={};if(Config.Navigator.mobile||(i.extractUrlEmbed=!0),16&t.flags){var a=o.getSelf();a&&(i.highlightUsername=a.username)}t.richMessage=h.wrapRichText(t.message,i),i.extractedUrlEmbed&&(t.richUrlEmbed=i.extractedUrlEmbed)}return Y[e]=t}function H(){if(dt!==!1&&(clearTimeout(dt),dt=!1),lt.length){var e=lt.slice();lt=[],p.invokeApi("messages.getMessages",{id:e}).then(function(n){o.saveApiUsers(n.users),r.saveApiChats(n.chats),D(n.messages),t.$broadcast("messages_downloaded",e)})}}function z(e,t){if(!e||!e.length)return!1;var n,i,a,o,r,s,c,l=0,d=e.length,u=d,p=!1,m=!Config.Mobile;for(t>0?u=Math.min(t,d):0>t&&(l=Math.max(0,u+t)),n=l;u>n;n++){if(o=e[n],i=Math.floor((o.date+K)/86400),c=r&&r.grouped,s=o.grouped,i===a?o.needDate&&(delete o.needDate,p=!0):(!n||r)&&(o.needDate||(o.needDate=!0,p=!0)),o.fwd_from_id&&o.media&&o.media.document&&o.media.document.sticker&&(o.from_id!=(r||{}).from_id||!(r||{}).fwd_from_id)&&(delete o.fwd_from_id,o._="message"),r&&o.from_id==r.from_id&&!r.fwd_from_id==!o.fwd_from_id&&!r.action&&!o.action&&o.dateft&&_.set({max_seen_msg:e})}function G(e,n){var i,a,s=F(e),c=o.getUser(e.from_id),l=o.getUserPhoto(e.from_id,"User"),d={},u=!1;if(e.message)u=n?w("conversation_message_sent"):h.wrapPlainText(e.message);else if(e.media)switch(e.media._){case"messageMediaPhoto":u=w("conversation_media_photo_raw");break;case"messageMediaVideo":u=w("conversation_media_video_raw");break;case"messageMediaDocument":if(e.media.document.sticker){u=w("conversation_media_sticker");var p=EmojiHelper.stickers[e.media.document.id];void 0!==p&&(u=h.wrapPlainText(p)+" ("+u+")")}else u=e.media.document.file_name||w("conversation_media_document_raw");break;case"messageMediaAudio":u=w("conversation_media_audio_raw");break;case"messageMediaGeo":u=w("conversation_media_location_raw");break;case"messageMediaContact":u=w("conversation_media_contact_raw");break;default:u=w("conversation_media_attachment_raw")}else if("messageService"==e._)switch(e.action._){case"messageActionChatCreate":u=w("conversation_group_created_raw");break;case"messageActionChatEditTitle":u=w("conversation_group_renamed_raw");break;case"messageActionChatEditPhoto":u=w("conversation_group_photo_updated_raw");break;case"messageActionChatDeletePhoto":u=w("conversation_group_photo_removed_raw");break;case"messageActionChatAddUser":u=w(e.action.user_id==e.from_id?"conversation_returned_to_group":"conversation_invited_user_message_raw");break;case"messageActionChatDeleteUser":u=w(e.action.user_id==e.from_id?"conversation_left_group":"conversation_kicked_user_message_raw")}s>0?(d.title=(c.first_name||"")+(c.first_name&&c.last_name?" ":"")+(c.last_name||""),d.title||(d.title=c.phone||w("conversation_unknown_user_raw")),a=l,i=o.getUserString(s)):(d.title=(c.first_name||c.last_name||w("conversation_unknown_user_raw"))+" @ "+(r.getChat(-s).title||w("conversation_unknown_chat_raw")),a=r.getChatPhoto(-s,"Group"),i=r.getChatString(-s)),d.title=h.wrapPlainText(d.title),d.onclick=function(){t.$broadcast("history_focus",{peerString:i,messageID:16&e.flags?e.id:0})},d.message=u,d.image=a.placeholder,d.key="msg"+e.id,d.tag=i,a.location&&!a.location.empty?m.downloadSmallFile(a.location,a.size).then(function(t){d.image=v.getUrl(t,"image/jpeg"),e.unread&&f.notify(d)}):f.notify(d)}var K,Z={},Y={},X={},J={},Q={count:null,dialogs:[]},et={},tt={},nt={},it=e.when(),at=-1,ot=SearchIndexManager.createIndex(),rt={query:!1},st={},ct=[],lt=[],dt=!1,ut=0,pt=tsNow(!0),mt=pt-pt%86400,ht=new Date,ft=!1;Config.Modes.packed&&_.get("max_seen_msg").then(function(e){ft=e||0}),_.get("server_time_offset").then(function(e){e&&(ut=e)});var gt=i("dateOrTime");return ht.setHours(0),ht.setMinutes(0),ht.setSeconds(0),K=mt-Math.floor(+ht/1e3),f.start(),window.navigator.mozSetMessageHandler&&window.navigator.mozSetMessageHandler("activity",function(e){var n=e.source;console.log(dT(),"Received activity",n.name,n.data),"share"===n.name&&n.data.blobs.length>0&&g.selectPeers({confirm_type:"EXT_SHARE_PEER"}).then(function(e){angular.forEach(e,function(e){var t=s.getPeerID(e);angular.forEach(n.data.blobs,function(e){N(t,e,{isMedia:!0})})}),1==e.length&&t.$broadcast("history_focus",{peerString:e[0]})})}),t.$on("apiUpdate",function(e,n){switch(n._){case"updateMessageID":tt[n.id]=n.random_id;break;case"updateNewMessage":var i=n.message,a=F(i),r=J[a];if(void 0!==r){{J[a].history[0]}if(-1!=J[a].history.indexOf(i.id))return!1;r.history.unshift(i.id),r.history.sort(function(e,t){return t-e})}else r=J[a]={count:null,history:[i.id],pending:[]};D([i]),i.out||o.forceUserOnline(i.from_id),null!==r.count&&r.count++;var c,l=tt[i.id];l&&((c=R(l,i))&&t.$broadcast("history_update",{peerID:a}),delete tt[i.id]),c||t.$broadcast("history_append",{peerID:a,messageID:i.id});var d,u=V(a);if(u.length?(d=u[0],Q.dialogs.splice(u[1],1)):d={peerID:a,unread_count:0,top_message:!1},!i.out&&i.unread&&d.unread_count++,d.top_message=i.id,SearchIndexManager.indexObject(a,s.getPeerSearchText(a),ot),Q.dialogs.unshift(d),t.$broadcast("dialogs_update",d),(t.selectedPeerID!=a||t.idle.isIDLE)&&!i.out&&i.unread){var p=16&i.flags?i.from_id:a,m=f.getPeerMuted(p),h=t.idle.isIDLE&&b.isOtherDeviceActive()?3e4:1e3;setTimeout(function(){m.then(function(e){i.unread&&!e&&_.get("notify_nopreview").then(function(e){G(i,e)})})},h)}W(i.id);break; -case"updateReadHistoryInbox":case"updateReadHistoryOutbox":var g,i,v,y=n.max_id,w="updateReadHistoryOutbox"==n._,a=s.getPeerID(n.peer),u=V(a),$=(J[a]||{}).history||[],k=!1,S=$.length,C=!1;for(a>0&&w&&o.forceUserOnline(a),v=0;S>v;v++)if(g=$[v],!(g>y)&&(i=Z[g],i.out==w)){if(!i.unread)break;i&&i.unread&&(i.unread=!1,Y[g]&&(Y[g].unread=!1,C||(C=!0)),X[g]&&(X[g].unread=!1),i.out||(u&&(k=--u[0].unread_count),f.cancel("msg"+g)))}k!==!1&&t.$broadcast("dialog_unread",{peerID:a,count:k}),C&&t.$broadcast("messages_read");break;case"updateDeleteMessages":var g,i,v,a,u,$,M={};for(v=0;vo&&(i=e,a=o)}),i}function l(e,t,n){return i.invokeApi("photos.getUserPhotos",{user_id:e,offset:0,limit:n||20,max_id:t||0}).then(function(e){o.saveApiUsers(e.users);for(var t=[],n=0;n800&&(i-=208);var r=c(n,i,o);r&&!r.preloaded&&(r.preloaded=!0,r.size?a.downloadFile(r.location.dc_id,{_:"inputFileLocation",volume_id:r.location.volume_id,local_id:r.location.local_id,secret:r.location.secret},r.size):a.downloadSmallFile(r.location))}}function u(e){return g[e]||{_:"photoEmpty"}}function p(e){var t=angular.copy(g[e])||{_:"photoEmpty"},n=Math.min(_-80,Config.Mobile?210:260),i=Math.min(v-100,Config.Mobile?210:260),a=c(t,n,i),o={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:n,height:i};if(a&&"photoSizeEmpty"!=a._){var r=calcImageInBox(a.w,a.h,n,i);o.width=r.w,o.height=r.h,o.location=a.location,o.size=a.size}else o.width=100,o.height=100;return t.thumb=o,t}function m(e){var n=p(e),i=$(window).width()-(Config.Mobile?0:32),a=$(t).height()-(Config.Mobile?0:116);!Config.Mobile&&i>800&&(i-=208);var o=c(n,i,a),r={placeholder:"img/placeholders/PhotoThumbModal.gif"};if(r.width=i,r.height=a,o&&"photoSizeEmpty"!=o._){var s=calcImageInBox(o.w,o.h,i,a,!0);r.width=s.w,r.height=s.h,r.modalWidth=Math.max(r.width,Math.min(400,i)),r.location=o.location,r.size=o.size}return n.full=r,n}function h(t,i){if(!t||"0"===t)return!1;var a=n.$new(!0);a.photoID=t;var o="PhotoModalController";i&&i.p>0?(o="UserpicModalController",a.userID=i.p):i&&i.p<0?(o="ChatpicModalController",a.chatID=-i.p):i&&i.m>0&&(a.messageID=i.m);e.open({templateUrl:templateUrl("photo_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:o,scope:a,windowClass:"photo_modal_window"})}function f(e){var n=g[e],i="jpg",o="image/jpeg",s="photo"+e+"."+i,l=Math.max(screen.width||0,$(window).width()-36,800),d=Math.max(screen.height||0,$(t).height()-150,800),u=c(n,l,d),p={_:"inputFileLocation",volume_id:u.location.volume_id,local_id:u.location.local_id,secret:u.location.secret};r.chooseSave(s,i,o).then(function(e){e&&a.downloadFile(u.location.dc_id,p,u.size,{mime:o,toFileEntry:e}).then(function(){},function(e){console.log("photo download failed",e)})},function(){var e=a.getCachedFile(p);return e?r.download(e,o,s):void a.downloadFile(u.location.dc_id,p,u.size,{mime:o}).then(function(e){r.download(e,o,s)},function(e){console.log("photo download failed",e)})})}var g={},_=$(window).width(),v=$(window).height();return n.preloadPhoto=d,n.openPhoto=h,{savePhoto:s,preloadPhoto:d,getUserPhotos:l,getPhoto:u,choosePhotoSize:c,wrapForHistory:p,wrapForFull:m,openPhoto:h,downloadPhoto:f}}]).service("AppVideoManager",["$sce","$rootScope","$modal","$window","MtpApiFileManager","AppUsersManager","FileManager","qSync",function(e,t,n,i,a,o,r,s){function c(e){f[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(a.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function l(e){if(void 0!==g[e])return g[e];var t=angular.copy(f[e]),n=Math.min(_-80,Config.Mobile?210:150),i=Math.min(v-100,Config.Mobile?210:150),a=t.thumb,o={placeholder:"img/placeholders/VideoThumbConversation.gif",width:n,height:i};return a&&"photoSizeEmpty"!=a._&&(a.w/a.h>n/i?o.height=parseInt(a.h*n/a.w):(o.width=parseInt(a.w*i/a.h),o.width>n&&(o.height=parseInt(o.height*n/o.width),o.width=n)),o.location=a.location,o.size=a.size),t.thumb=o,g[e]=t}function d(e){var t=l(e),n=Math.min($(window).width()-(Config.Mobile?0:60),542),a=$(i).height()-(Config.Mobile?92:150),o={placeholder:"img/placeholders/VideoThumbModal.gif",width:n,height:a};if(t.w&&t.h){var r=calcImageInBox(t.w,t.h,n,a);o.width=r.w,o.height=r.h}else o.height=o.width=Math.min(n,a);return t.full=o,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=o.width,t.fullThumb.height=o.height,t}function u(e,i){var a=t.$new(!0);return a.videoID=e,a.messageID=i,n.open({templateUrl:templateUrl("video_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"VideoModalController",scope:a,windowClass:"video_modal_window"})}function p(e){var t=f[e],n=g[e]||t||{},i={_:"inputVideoFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&a.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function m(n,i){var o=f[n],c=g[n]||o||{},l=o.mime_type||"video/ogg",d={_:"inputVideoFileLocation",id:n,access_hash:o.access_hash};if(c.downloaded&&!i){var u=a.getCachedFile(d);if(u)return s.when(u)}c.progress={enabled:!c.downloaded,percent:1,total:o.size};var p=a.downloadFile(o.dc_id,d,o.size,{mime:l,toFileEntry:i});return p.then(function(t){r.getFileCorrectUrl(t,l).then(function(t){c.url=e.trustAsResourceUrl(t)}),delete c.progress,c.downloaded=!0,console.log("video save done")},function(e){console.log("video download failed",e),c.progress.enabled=!1},function(e){console.log("dl progress",e),c.progress.enabled=!0,c.progress.done=e.done,c.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),c.progress.cancel=p.cancel,p}function h(e){{var t=f[e],n=t.mime_type||"video/mp4",i=n.split(".")[1]||"mp4",a="t_video"+e+"."+i;g[e]||t||{}}r.chooseSave(a,i,n).then(function(t){t&&m(e,t)},function(){m(e).then(function(e){r.download(e,n,a)})})}var f={},g={},_=$(window).width(),v=$(window).height();return{saveVideo:c,wrapForHistory:l,wrapForFull:d,openVideo:u,updateVideoDownloaded:p,downloadVideo:m,saveVideoFile:h}}]).service("AppDocsManager",["$sce","$rootScope","$modal","$window","$q","RichTextProcessor","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,o,r,s,c){function l(e){g[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(r.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize"),angular.forEach(e.attributes,function(t){switch(t._){case"documentAttributeFilename":e.file_name=t.file_name;break;case"documentAttributeVideo":case"documentAttributeAudio":e.duration=t.duration;break;case"documentAttributeSticker":e.sticker=1;var n=t.alt||EmojiHelper.stickers[e.id];void 0!==n&&(e.sticker=2,e.stickerEmoji=o.wrapRichText(n,{noLinks:!0,noLinebreaks:!0}));break;case"documentAttributeImageSize":e.w=t.w,e.h=t.h}}),e.file_name=e.file_name||""}function d(e){return g[e]||{_:"documentEmpty"}}function u(e){if(void 0!==_[e])return _[e];var t,n,i=angular.copy(g[e]),a="image/gif"==i.mime_type,o="image/"==i.mime_type.substr(0,6)&&i.sticker,r=i.thumb;a?(t=Math.min(v-80,260),n=Math.min(y-100,260)):o?(t=Math.min(v-80,Config.Mobile?210:260),n=Math.min(y-100,Config.Mobile?210:260)):t=n=100;var s={width:t,height:n};if(r&&"photoSizeEmpty"!=r._){var c=calcImageInBox(r.w,r.h,t,n);s.width=c.w,s.height=c.h,s.location=r.location,s.size=r.size}else if(o){var c=calcImageInBox(i.w,i.h,t,n);s.width=c.w,s.height=c.h}else s=!1;return i.thumb=s,i.withPreview=!Config.Mobile&&i.mime_type.match(/^(image\/)/)?1:0,a&&i.thumb?i.isSpecial="gif":o?i.isSpecial="sticker":"audio/"==i.mime_type.substr(0,6)&&(i.isSpecial="audio"),_[e]=i}function p(e){var t=g[e],n=_[e]||t||{},i={_:"inputDocumentFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&r.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function m(n,i){var a=g[n],o=_[n]||a||{},l={_:"inputDocumentFileLocation",id:n,access_hash:a.access_hash};if(o.downloaded&&!i){var d=r.getCachedFile(l);if(d)return c.when(d)}o.progress={enabled:!o.downloaded,percent:1,total:a.size};var u=r.downloadFile(a.dc_id,l,a.size,{mime:a.mime_type||"application/octet-stream",toFileEntry:i});return u.then(function(t){delete o.progress,t&&(s.getFileCorrectUrl(t,a.mime_type).then(function(t){o.url=e.trustAsResourceUrl(t)}),o.downloaded=!0),console.log("file save done")},function(e){console.log("document download failed",e),o.progress.enabled=!1},function(e){console.log("dl progress",e),o.progress.enabled=!0,o.progress.done=e.done,o.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),o.progress.cancel=u.cancel,u}function h(e,i){var a=t.$new(!0);a.docID=e,a.messageID=i;n.open({templateUrl:templateUrl("document_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"DocumentModalController",scope:a,windowClass:"document_modal_window"})}function f(e){var t=g[e],n=(_[e]||t||{},(t.file_name.split(".",2)||[])[1]||"");s.chooseSave(t.file_name,n,t.mime_type).then(function(t){t&&m(e,t)},function(){m(e).then(function(e){s.download(e,t.mime_type,t.file_name)})})}var g={},_={},v=$(window).width(),y=$(window).height();return{saveDoc:l,getDoc:d,wrapForHistory:u,updateDocDownloaded:p,downloadDoc:m,openDoc:h,saveDocFile:f}}]).service("AppAudioManager",["$sce","$rootScope","$modal","$window","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,o,r){function s(e){p[e.id]=e}function c(e){if(void 0!==m[e])return m[e];var t=angular.copy(p[e]);return m[e]=t}function l(e){var t=p[e],n=m[e]||t||{},i={_:"inputAudioFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&a.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function d(n,i){var s=p[n],c=m[n]||s||{},l=s.mime_type||"audio/ogg",d={_:"inputAudioFileLocation",id:n,access_hash:s.access_hash};if(c.downloaded&&!i){var u=a.getCachedFile(d);if(u)return r.when(u)}c.progress={enabled:!c.downloaded,percent:1,total:s.size};var h=a.downloadFile(s.dc_id,d,s.size,{mime:l,toFileEntry:i});return h.then(function(t){o.getFileCorrectUrl(t,l).then(function(t){c.url=e.trustAsResourceUrl(t)}),delete c.progress,c.downloaded=!0,console.log("audio save done")},function(e){console.log("audio download failed",e),c.progress.enabled=!1},function(e){console.log("dl progress",e),c.progress.enabled=!0,c.progress.done=e.done,c.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),c.progress.cancel=h.cancel,h}function u(e){{var t=p[e],n=t.mime_type||"audio/ogg",i=n.split(".")[1]||"ogg",a="t_audio"+e+"."+i;m[e]||t||{}}o.chooseSave(a,i,n).then(function(t){t&&d(e,t)},function(){d(e).then(function(e){o.download(e,n,a)})})}var p={},m={};return{saveAudio:s,wrapForHistory:c,updateAudioDownloaded:l,downloadAudio:d,saveAudioFile:u}}]).service("AppStickersManager",["$q","FileManager","MtpApiManager","MtpApiFileManager","AppDocsManager","Storage",function(e,t,n,i,a,o){function r(){h||(h=!0,setTimeout(d,1e3),setInterval(s,9e5))}function s(){d().then(u)}function c(e){return EmojiHelper.stickers[e]||!1}function l(e){if(m!==e.hash){m=e.hash;var t,n,i,o;for(i=e.documents.length,t=0;i>t;t++)a.saveDoc(e.documents[t]);var r,s,c,l={};for(p=[],i=e.packs.length,t=0;i>t;t++)for(r=e.packs[t],s=r.emoticon,o=r.documents.length,n=0;o>n;n++)c=r.documents[n],void 0===EmojiHelper.stickers[c]&&(EmojiHelper.stickers[c]=s),void 0===l[c]&&(l[c]=!0,p.push(c))}return p}function d(){return o.get("all_stickers").then(function(e){var t=Config.Schema.API.layer;return e.layer!=t&&(e=!1),e&&e.date>tsNow(!0)?l(e):n.invokeApi("messages.getAllStickers",{hash:e&&e.hash||""}).then(function(n){return"messages.allStickersNotModified"==n._&&(n=e),n.date=tsNow(!0)+3600,n.layer=t,delete n._,o.set({all_stickers:n}),l(n)})})}function u(){var n=[];return angular.forEach(p,function(e){var o=a.getDoc(e),r=i.downloadSmallFile(o.thumb.location).then(function(n){return WebpManager.isWebpSupported()?{id:e,src:t.getUrl(n,"image/webp")}:t.getByteArray(n).then(function(t){return{id:e,src:WebpManager.getPngUrlFromData(t)}})});n.push(r)}),e.all(n)}var p=[],m=!1,h=!1;return{start:r,getStickerEmoji:c,getStickers:d,getStickersImages:u}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,n,i,a,o){function r(){var e=h.seq+1,t=v[e];if(!t)return!1;for(var n,i,a=t.updates,n=0,i=a.length;i>n;n++)p(a[n]);return h.seq=t.seq,t.date&&h.date=g.seqAwaiting&&(g.ptsAwaiting?delete g.seqAwaiting:(clearTimeout(g.timeout),g=!1)),!0}function s(){if(!y.length)return!1;y.sort(function(e,t){return e.pts-t.pts});for(var e,t=h.pts,n=!1,i=!1,a=0,o=y.length;o>a;a++)e=y[a],t+=e.pts_count,t>=e.pts&&(n=e.pts,i=a);if(!n)return!1;for(h.pts=n,a=0;i>=a;a++)e=y[a],p(e);return y.splice(i,o-i),!y.length&&g&&(g.seqAwaiting?delete g.ptsAwaiting:(clearTimeout(g.timeout),g=!1)),!0}function c(){_||d()}function l(e){var t={date:e.date,seq:e.seq,seqStart:e.seq_start};switch(e._){case"updatesTooLong":case"new_session_created":c();break;case"updateShort":u(e.update,t);break;case"updateShortMessage":case"updateShortChatMessage":var o=2&e.flags,r=e.from_id||(o?f:e.user_id),s=e.chat_id?-e.chat_id:o?e.user_id:f;u({_:"updateNewMessage",message:{_:"message",flags:e.flags,id:e.id,from_id:r,to_id:a.getOutputPeer(s),date:e.date,message:e.message,fwd_from_id:e.fwd_from_id,fwd_date:e.fwd_date,reply_to_msg_id:e.reply_to_msg_id},pts:e.pts,pts_count:e.pts_count},t);break;case"updatesCombined":case"updates":n.saveApiUsers(e.users),i.saveApiChats(e.chats),angular.forEach(e.updates,function(e){u(e,t)});break;default:console.warn(dT(),"Unknown update message",e)}}function d(){_||(_=!0,v={},y=[]),g&&(clearTimeout(g.timeout),g=!1),o.invokeApi("updates.getDifference",{pts:h.pts,date:h.date,qts:0}).then(function(e){if("updates.differenceEmpty"==e._)return console.log(dT(),"apply empty diff",e.seq),h.date=e.date,h.seq=e.seq,_=!1,!1;n.saveApiUsers(e.users),i.saveApiChats(e.chats),angular.forEach(e.other_updates,function(e){p(e)}),angular.forEach(e.new_messages,function(e){p({_:"updateNewMessage",message:e,pts:h.pts,pts_count:0})});var t=e.intermediate_state||e.state;h.seq=t.seq,h.pts=t.pts,h.date=t.date,console.log(dT(),"apply diff",h.seq,h.pts),"updates.differenceSlice"==e._?d():_=!1})}function u(e,t){if(_)return!1;if("updateNewMessage"==e._){var a=e.message;if(a.from_id&&!n.hasUser(a.from_id)||a.fwd_from_id&&!n.hasUser(a.fwd_from_id)||a.to_id.user_id&&!n.hasUser(a.to_id.user_id)||a.to_id.chat_id&&!i.hasChat(a.to_id.chat_id))return console.warn(dT(),"Short update not enough data",a),c(),!1}var o,l;if(e.pts){var u=h.pts+(e.pts_count||0);if(u0){var m=t.seq,f=t.seqStart||m;if(f!=h.seq+1&&f>h.seq)return console.warn(dT(),"Seq hole",h,g&&g.seqAwaiting),void 0===v[f]&&(v[f]={seq:m,date:t.date,updates:[]}),v[f].updates.push(e),g||(g={timeout:setTimeout(function(){d()},5e3)}),(!g.seqAwaiting||g.seqAwaiting-1)return n=Math.floor(t/a),i=t%a,{category:o,row:n,column:i};return console.error("emoji not found in spritesheet",e),null}function i(i,r){if(!i||!i.length)return"";r=r||{};for(var u,p,m,h,f=i,v=[],y=!1;u=f.match(g);){if(v.push(encodeEntities(f.substr(0,u.index))),u[3])if(r.noLinks)v.push(u[1],encodeEntities(u[2]+u[3]));else{var b="";r.highlightUsername&&r.highlightUsername.toLowerCase()==u[3].toLowerCase()&&"@"==u[2]&&(b='class="im_message_mymention"'),v.push(u[1],"',encodeEntities(u[2]+u[3]),"")}else if(u[4])if(r.noLinks)v.push(encodeEntities(u[0]));else if(_.test(u[4]))v.push('',encodeEntities(u[4]),"");else{var p=!1,w=u[5],$=u[6],k="";if($){if(w||"xn--"!==$.substr(0,4)&&-1===Config.TLD.indexOf($.toLowerCase())||(w="http://"),w){var S=a(u[4]);S.length!==u[4].length&&(k=u[4].substring(S.length),u[4]=S),p=(u[5]?"":w)+u[4]}}else p=(u[5]?"":"http://")+u[4];p?(v.push('',encodeEntities(u[4]),"",k),r.extractUrlEmbed&&!r.extractedUrlEmbed&&(r.extractedUrlEmbed=o(p))):v.push(encodeEntities(u[0]))}else u[7]?v.push(r.noLinebreaks?" ":"
"):u[8]?(s=c[u[8]])&&(h=n(s))?(m=encodeEntities(l[s][1][0]),y=!0,v.push('',":",m,":")):v.push(encodeEntities(u[8])):u[10]&&(r.noLinks?v.push(encodeEntities(u[9]),encodeEntities(u[10])):v.push(encodeEntities(u[9]),'',encodeEntities(u[10]),""));f=f.substr(u.index+u[0].length)}return v.push(encodeEntities(f)),i=t(v.join("")),y&&(i=i.replace(/\ufe0f|️/g,"",i),i=i.replace(//g,'')),e.trustAs("html",i)}function a(e){for(var t=e.length,n=e.split("(").length-1,i=e.split(")").length-1;i>n&&")"===e.charAt(t-1);)e=e.substr(0,t-1),i--,t--;return n>i&&(e=e.replace(/\)+$/,"")),e}function o(e){var t;if(t=e.match(v))return["youtube",t[1]];if(t=e.match(y))return["vimeo",t[1]];if(t=e.match(b))return["instagram",t[1]];if(t=e.match(w))return["vine",t[1]];if(t=e.match(S)){var n="explore,upload,pages,terms-of-use,mobile,jobs,imprint".split(","),i="sets".split(",");if(-1==n.indexOf(t[1])&&-1==i.indexOf(t[2]))return["soundcloud",t[0]]}else if(t=e.match(C))return["spotify",t[3].replace("/",":")];if(!Config.Modes.chrome_packed){if(t=e.match($))return["twitter",t[0]];if(t=e.match(k))return["facebook",t[0]]}return!1}function r(e,t){if(u)return e;if(!e||!e.length)return"";t=t||{},e=e.replace(/\ufe0f/g,"",e);for(var n,i,a=e,e=[];n=a.match(g);)e.push(a.substr(0,n.index)),e.push(n[8]?(s=c[n[8]])&&(i=l[s][1][0])?":"+i+":":n[0]:n[0]),a=a.substr(n.index+n[0].length);return e.push(a),e.join("")}var s,c={},l=Config.Emoji,d=18,u=-1!=navigator.userAgent.search(/OS X|iPhone|iPad|iOS|Android/i),p="\\u0023\\u20E3|\\u00a9|\\u00ae|\\u203c|\\u2049|\\u2139|[\\u2194-\\u2199]|\\u21a9|\\u21aa|\\u231a|\\u231b|\\u23e9|[\\u23ea-\\u23ec]|\\u23f0|\\u24c2|\\u25aa|\\u25ab|\\u25b6|\\u2611|\\u2614|\\u26fd|\\u2705|\\u2709|[\\u2795-\\u2797]|\\u27a1|\\u27b0|\\u27bf|\\u2934|\\u2935|[\\u2b05-\\u2b07]|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u3030|\\u303d|\\u3297|\\u3299|[\\uE000-\\uF8FF\\u270A-\\u2764\\u2122\\u25C0\\u25FB-\\u25FE\\u2615\\u263a\\u2648-\\u2653\\u2660-\\u2668\\u267B\\u267F\\u2693\\u261d\\u26A0-\\u26FA\\u2708\\u2702\\u2601\\u260E]|[\\u2600\\u26C4\\u26BE\\u23F3\\u2764]|\\uD83D[\\uDC00-\\uDFFF]|\\uD83C[\\uDDE8-\\uDDFA�]\\uD83C[\\uDDEA-\\uDDFA�]|[0-9]\\u20e3|\\uD83C[\\uDC00-\\uDFFF]";for(s in l)c[l[s][0]]=s;var m="a-z\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0100-\\u024f\\u0253\\u0254\\u0256\\u0257\\u0259\\u025b\\u0263\\u0268\\u026f\\u0272\\u0289\\u028b\\u02bb\\u0300-\\u036f\\u1e00-\\u1eff\\u0400-\\u04ff\\u0500-\\u0527\\u2de0-\\u2dff\\ua640-\\ua69f\\u0591-\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u05d0-\\u05ea\\u05f0-\\u05f4\\ufb1d-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufb4f\\u0610-\\u061a\\u0620-\\u065f\\u066e-\\u06d3\\u06d5-\\u06dc\\u06de-\\u06e8\\u06ea-\\u06ef\\u06fa-\\u06fc\\u06ff\\u0750-\\u077f\\u08a0\\u08a2-\\u08ac\\u08e4-\\u08fe\\ufb50-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\u200c\\u0e01-\\u0e3a\\u0e40-\\u0e4e\\u1100-\\u11ff\\u3130-\\u3185\\uA960-\\uA97F\\uAC00-\\uD7AF\\uD7B0-\\uD7FF\\u3003\\u3005\\u303b\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uff9f\\uffa1-\\uffdc",h="0-9._"+m,f="((?:https?|ftp)://|mailto:)?(?:\\S+(?::\\S*)?@)?(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])){3}|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*["+m+"0-9]+)(?:\\.(?:["+m+"]-*)*["+m+"0-9]+)*(?:\\.(xn--[0-9a-z]{2,16}|["+m+"]{2,24})))(?::\\d{2,5})?(?:/(?:\\S*[^\\s.;,(\\[\\]{}<>\"'])?)?",g=new RegExp("(^|\\s)((?:https?://)?telegram\\.me/|@)([a-zA-Z\\d_]{5,32})|("+f+")|(\\n)|("+p+")|(^|\\s)(#["+h+"]{2,20})","i"),_=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,v=/^(?:https?:\/\/)?(?:www\.)?youtu(?:|\.be|be\.com|\.b)(?:\/v\/|\/watch\\?v=|e\/|(?:\/\??#)?\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/,y=/^(?:https?:\/\/)?(?:www\.)?vimeo\.com\/(\d+)/,b=/^https?:\/\/(?:instagr\.am\/p\/|instagram\.com\/p\/)([a-zA-Z0-9\-\_]+)/i,w=/^https?:\/\/vine\.co\/v\/([a-zA-Z0-9\-\_]+)/i,$=/^https?:\/\/twitter\.com\/.+?\/status\/\d+/i,k=/^https?:\/\/(?:www\.)?facebook\.com\/.+?\/posts\/\d+/i,S=/^https?:\/\/(?:soundcloud\.com|snd\.sc)\/([a-zA-Z0-9%\-\_]+)\/([a-zA-Z0-9%\-\_]+)/i,C=/(https?:\/\/(open\.spotify\.com|play\.spotify\.com|spoti\.fi)\/(.+)|spotify:(.+))/i;return{wrapRichText:i,wrapPlainText:r}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","AppUsersManager","IdleManager",function(e,t,n,i){function a(){d||(d=!0,t.$watch("idle.isIDLE",r),t.$watch("offline",r))}function o(e){var a=tsNow();if(!(e&&!l||!e&&5e4>a-l||t.offline))return l=e?0:a,i.setUserStatus(u,e),n.invokeApi("account.updateStatus",{offline:e},{noErrorBox:!0})}function r(){c&&e.cancel(c),t.idle.isIDLE?c=e(function(){o(!0)},5e3):(o(!1),c=e(r,6e4))}function s(){return p?tsNow()>p?(p=!1,!1):!0:!1}var c,l=0,d=!1,u=0,p=!1;return n.getUserID().then(function(e){u=e}),t.$on("apiUpdate",function(e,t){"updateUserStatus"==t._&&t.user_id==u&&(p=tsNow()+("userStatusOnline"==t.status._?3e5:0))}),{start:a,isOtherDeviceActive:s}}]).service("NotificationsManager",["$rootScope","$window","$interval","$q","_","MtpApiManager","AppPeersManager","IdleManager","Storage","AppRuntimeManager",function(e,t,n,i,a,o,r,s,c,l){function d(e){return void 0!==U[e]?U[e]:U[e]=o.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:r.getInputPeerByID(e)}})}function u(e){if(e=e||"favicon.ico",x!==e){var t=document.createElement("link");t.rel="shortcut icon",t.type="image/x-icon",t.href=e,O.parentNode.replaceChild(t,O),O=t,x=e}}function p(e,t){U[e]=i.when(t)}function m(e,t){p(e,t);var n=angular.copy(t);return n._="inputPeerNotifySettings",o.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:r.getInputPeerByID(e)},settings:n})}function h(e){return d(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function f(){if(w(),!A)return!1;"Notification"in window&&"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",g);try{"onbeforeunload"in window&&$(t).on("beforeunload",b)}catch(e){}}function g(){Notification.requestPermission(),$(t).off("click",g)}function _(e){return Config.Navigator.ffos?e.image="https://raw.githubusercontent.com/zhukov/webogram/master/app/img/icons/icon60.png":e.image||(e.image="img/icons/icon60.png"),I++,c.get("notify_nosound","notify_volume").then(function(e){(!e[0]&&e[1]===!1||e[1]>0)&&v(e[1]||.5)}),!A||"Notification"in window&&"granted"!==Notification.permission?!1:void c.get("notify_nodesktop","notify_novibrate").then(function(t){if(t[0]){if(D&&!t[1])return void navigator.vibrate([200,100,200])}else{var n,i=++T,a=e.key||"k"+i;if("Notification"in window)n=new Notification(e.title,{icon:e.image||"",body:e.message||"",tag:e.tag||""});else if("mozNotification"in navigator)n=navigator.mozNotification.createNotification(e.title,e.message||"",e.image||"");else{if(!S)return;window.external.msSiteModeClearIconOverlay(),window.external.msSiteModeSetIconOverlay("img/icons/icon16.png",e.title),window.external.msSiteModeActivate(),n={index:i}}n.onclick=function(){n.close(),l.focus(),b(),e.onclick&&e.onclick()},n.onclose=function(){delete E[a],b()},n.show&&n.show(),E[a]=n}})}function v(e){var t=tsNow();if(!(P&&P>t&&N==e)){P=t+1e3,N=e;var n="img/sound_a.mp3",i=$("#notify_sound").html('');i.find("audio")[0].volume=e}}function y(e){var t=E[e];if(t){I>0&&I--;try{t.close?t.close():S&&t.index==T&&window.external.msSiteModeClearIconOverlay()}catch(n){}delete I[e]}}function b(){S?window.external.msSiteModeClearIconOverlay():angular.forEach(E,function(e){try{e.close&&e.close()}catch(t){}}),E={},I=0}function w(){if(F)return!1;if(navigator.push&&Config.Navigator.ffos&&Config.Modes.packed){var e=navigator.push.register();e.onsuccess=function(){clearTimeout(q),console.log(dT(),"Push registered",e.result),F=e.result,o.invokeApi("account.registerDevice",{token_type:4,token:F,device_model:navigator.userAgent||"Unknown UserAgent",system_version:navigator.platform||"Unknown Platform",app_version:Config.App.version,app_sandbox:!1,lang_code:navigator.language||"en"})},e.onerror=function(e){console.error("Push register error",e,e.toString()),q=setTimeout(w,j),j=Math.min(3e4,1.5*j)}}}function k(){return D}navigator.vibrate=navigator.vibrate||navigator.mozVibrate||navigator.webkitVibrate;var S=!1;try{window.external&&window.external.msIsSiteMode()&&(S=!0)}catch(C){}var M,x,A=S||"Notification"in window||"mozNotification"in navigator,E={},T=0,I=0,D=!!navigator.vibrate,P=!1,N=!1,U={},O=$('link[rel="icon"]:first')[0],L=a.pluralize("page_title_pluralize_notifications"),R=document.title,B=!1;e.$watch("idle.isIDLE",function(e){e||b(),Config.Navigator.mobile||(n.cancel(M),e?(R=document.title,M=n(function(){var e=tsNow();!I||e%2e3>1e3?B&&(B=!1,document.title=R,u()):(B=!0,document.title=L(I),u("favicon_unread.ico"))},1e3)):(B=!1,document.title=R,u()))}),e.$on("apiUpdate",function(e,t){switch(t._){case"updateNotifySettings":if("notifyPeer"==t.peer._){var n=r.getPeerID(t.peer.peer);p(n,t.notify_settings)}}});var F=!1;return window.navigator.mozSetMessageHandler&&(window.navigator.mozSetMessageHandler("push",function(t){console.log(dT(),"received push",t),e.$broadcast("push_received")}),window.navigator.mozSetMessageHandler("push-register",function(e){console.log(dT(),"received push",e),F=!1,w()})),{start:f,notify:_,cancel:y,clear:b,getPeerSettings:d,getPeerMuted:h,savePeerSettings:p,updatePeerSettings:m,getVibrateSupport:k,testSound:v};var j,q}]).service("ErrorService",["$rootScope","$modal","$window",function(e,t,n){function i(n,i){if(r>=1)return console.log("Skip error box, too many open",r,n,i),!1;i=i||{};var a=e.$new();angular.extend(a,n),r++;var o=t.open({templateUrl:templateUrl("error_modal"),scope:a,windowClass:i.windowClass||"error_modal_window"});return o.result["finally"](function(){r--}),o}function a(e,t){return i({title:e,description:t})}function o(n,i){i=i||{};var a=e.$new();angular.extend(a,n);var o=t.open({templateUrl:templateUrl("confirm_modal"),scope:a,windowClass:i.windowClass||"confirm_modal_window"});return o.result}var r=0;return n.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e}),o(e).then(function(e){t(e||!0)},function(){t(!1)})},{show:i,alert:a,confirm:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function n(n){var i=e.$new();return i.multiSelect=!1,n&&angular.extend(i,n),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:i,windowClass:"peer_select_window mobile_modal"}).result}function i(i){if(Config.Mobile)return n(i).then(function(e){return[e]});var a=e.$new();return a.multiSelect=!0,i&&angular.extend(a,i),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:a,windowClass:"peer_select_window mobile_modal"}).result}return{selectPeer:n,selectPeers:i}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function n(n,i){i=i||{};var a=e.$new();return a.multiSelect=n,angular.extend(a,i),!a.action&&n&&(a.action="select"),t.open({templateUrl:templateUrl("contacts_modal"),controller:"ContactsModalController",scope:a,windowClass:"contacts_modal_window mobile_modal"}).result}return{selectContacts:function(e){return n(!0,e)},selectContact:function(e){return n(!1,e)}}}]).service("ChangelogNotifyService",["Storage","$rootScope","$modal",function(e,t,n){function i(){e.get("last_version").then(function(t){t!=Config.App.version&&(t&&a(t),e.set({last_version:Config.App.version}))})}function a(e){var i=t.$new();i.lastVersion=e,n.open({controller:"ChangelogModalController",templateUrl:templateUrl("changelog_modal"),scope:i,windowClass:"changelog_modal_window mobile_modal"})}return{checkUpdate:i,showChangelog:a}}]).service("HttpsMigrateService",["ErrorService","Storage",function(e,t){function n(){t.get("https_dismiss").then(function(n){(!n||tsNow()>n+432e5)&&e.confirm({type:"MIGRATE_TO_HTTPS"}).then(function(){var e;try{e=window.open("https://web.telegram.org","_blank")}catch(t){}e||(location="https://web.telegram.org")},function(){t.set({https_dismiss:tsNow()})})})}function i(){a||"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)||(a=!0,setTimeout(n,12e4))}var a=!1;return{start:i,check:n}}]).service("LayoutSwitchService",["ErrorService","Storage","AppRuntimeManager","$window",function(e,t,n,i){function a(e){ConfigStorage.noPrefix(),t.set({layout_selected:e?"mobile":"desktop",layout_width:$(window).width()}).then(function(){n.reload()})}function o(n){if(!c){var i=$(window).width(),o=600>i;!i||!n&&(Config.Navigator.mobile?800>=i:o)||o!=Config.Mobile&&(ConfigStorage.noPrefix(),t.get("layout_width").then(function(n){return i==n?!1:(c=!0,void e.confirm({type:o?"SWITCH_MOBILE_VERSION":"SWITCH_DESKTOP_VERSION"}).then(function(){a(o) -},function(){ConfigStorage.noPrefix(),t.set({layout_width:i}),c=!1}))}))}}function r(){s||Config.Navigator.mobile||(s=!0,o(),$(i).on("resize",o))}var s=!1,c=!1;return{start:r,switchLayout:a}}]).service("TelegramMeWebService",["Storage",function(e){function t(t){return n?!1:void e.get("tgme_sync").then(function(n){var i=tsNow(!0);if(t&&n&&n.canRedirect==t&&n.ts+86400>i)return!1;e.set({tgme_sync:{canRedirect:t,ts:i}});var a=$("