async function decryptAESGCM(encB64, ivB64, tagB64, token){
const enc=Uint8Array.from(atob(encB64), c=> c.charCodeAt(0));
const iv=Uint8Array.from(atob(ivB64),  c=> c.charCodeAt(0));
const tag=Uint8Array.from(atob(tagB64), c=> c.charCodeAt(0));
const combined=new Uint8Array(enc.length + tag.length);
combined.set(enc);
combined.set(tag, enc.length);
const keyMaterial=await crypto.subtle.importKey("raw",
new TextEncoder().encode(token),
"PBKDF2",
false,
["deriveKey"]
);
const aesKey=await crypto.subtle.deriveKey({
name: "PBKDF2",
salt: new TextEncoder().encode("novel-protect"),
iterations: 50000,
hash: "SHA-256"
},
keyMaterial,
{ name: "AES-GCM", length: 256 },
false,
["decrypt"]
);
const decrypted=await crypto.subtle.decrypt({ name: "AES-GCM", iv: iv },
aesKey,
combined
);
return new TextDecoder().decode(decrypted);
}
document.addEventListener("DOMContentLoaded", async function (){
const container=document.querySelector(".chapter-content-protected");
if(!container) return;
const decrypted=await decryptAESGCM(
container.dataset.enc,
container.dataset.iv,
container.dataset.tag,
container.dataset.token
);
const shadowRoot=container.attachShadow({ mode: "closed" });
const wrapper=document.createElement("div");
wrapper.innerHTML=decrypted;
shadowRoot.appendChild(wrapper);
container.removeAttribute("data-enc");
container.removeAttribute("data-iv");
container.removeAttribute("data-tag");
container.removeAttribute("data-token");
});
(function ($){
"use strict";
jQuery(window).on('load', function (e){
jQuery("#pageloader").fadeOut(500);
if(jQuery('body').hasClass('adult-content')){
var cookie_adult=window.wpmanga.getCookie('wpmanga-adault');
if(cookie_adult!=1){
jQuery('#adult_modal').modal({ backdrop: 'static', keyboard: false });
}else{
jQuery('body').removeClass('censored');
}}
if(typeof lightbox!=='undefined'){
lightbox.option({
'resizeDuration': 200,
'fitImagesInViewport': true
})
}
if(!$('body').hasClass('reading-manga')){
var $schema_cookie=window.wpmanga.getCookie('wpmanga-body-contrast');
if($schema_cookie!=''){
if($schema_cookie=='light'){
$('body').addClass('text-ui-light');
$('body').removeClass('text-ui-dark');
}else{
$('body').removeClass('text-ui-light');
$('body').addClass('text-ui-dark');
}}
}else{
var firstImage=$('.lazyload-ordered').first();
if(firstImage){
firstImage.prop('src', firstImage.attr('data-src'));
firstImage.removeAttr('data-src');
firstImage.removeClass('lazyload-ordered').addClass('lazyloaded');
var loadNextChapterImage=function (){
var next_guy=$('.reading-content .lazyload-ordered').first();
next_guy.prop('src', next_guy.attr('data-src'));
next_guy.removeAttr('data-src');
next_guy.removeClass('lazyload-ordered').addClass('lazyloaded');
};
$('.reading-content .wp-manga-chapter-img').on('load', loadNextChapterImage);
}}
});
jQuery("body").removeClass("preload");
jQuery(document).on('manga-after-get-user-section', function (e, data){
jQuery('ul.c-user_menu > li').each(function (i, e){
jQuery(this).clone().appendTo('.mobile-menu ul.navbar-nav');
});
});
jQuery(document).ready(function (){
jQuery('ul.c-user_menu > li').each(function (i, e){
jQuery(this).clone().appendTo('.mobile-menu ul.navbar-nav');
});
$('#darklight_toggle input').on('change', function (){
$('body').toggleClass('text-ui-dark').toggleClass('text-ui-light');
window.wpmanga.setCookie('wpmanga-body-contrast', $('body').hasClass('text-ui-light') ? 'light':'dark', 30);
});
if(jQuery('body').hasClass('manga-reading-paged-style')){
$(document).on("click", ".page-prev-link", function (){
if(jQuery('body').hasClass('rtl')){
var prev_page_button=$('.main-col-inner .c-blog-post .wp-manga-nav .nav-links a.next_page');
}else{
var prev_page_button=$('.main-col-inner .c-blog-post .wp-manga-nav .nav-links a.prev_page');
}
if(typeof prev_page_button!=='undefined'&&prev_page_button.length > 0&&prev_page_button.is(":visible")){
$(prev_page_button[0]).trigger('click');
}});
$(document).on("click", ".page-next-link", function (){
if(jQuery('body').hasClass('rtl')){
var next_page_button=$('.main-col-inner .c-blog-post .wp-manga-nav .nav-links a.prev_page');
}else{
var next_page_button=$('.main-col-inner .c-blog-post .wp-manga-nav .nav-links a.next_page');
}
if(typeof next_page_button!=='undefined'&&next_page_button.length > 0&&next_page_button.is(":visible")){
$(next_page_button[0]).trigger('click');
}});
jQuery(window).on('mousemove', function (e){
var prev_page_button=$('.main-col-inner .c-blog-post .wp-manga-nav .nav-links a.prev_page');
var next_page_button=$('.main-col-inner .c-blog-post .wp-manga-nav .nav-links a.next_page');
var halfScreen=$(this).width() / 2;
var originURL=jQuery('.reading-content-wrap').attr('data-site-url');
var cursorImage=e.pageX < halfScreen ? madara.cursorPrev:madara.cursorNext;
if(e.pageX < halfScreen){
if(typeof prev_page_button!=='undefined'&&prev_page_button.length > 0&&prev_page_button.is(":visible")){
$('body.reading-manga .reading-content .page-prev-link').css({ "cursor": "url(" + cursorImage + "), auto" });
}else{
$('body.reading-manga .reading-content .page-prev-link').css({ "cursor": "initial !important;" });
}}else{
if(typeof next_page_button!=='undefined'&&next_page_button.length > 0&&next_page_button.is(":visible")){
$('body.reading-manga .reading-content .page-next-link').css({ "cursor": "url(" + cursorImage + "), auto" });
}else{
$('body.reading-manga .reading-content .page-next-link').css({ "cursor": "initial" });
}}
});
}
$('.section_adult a').on('click', function (e){
e.preventDefault();
if(!$(this).hasClass('refreshing')){
$(this).addClass('refreshing');
if($('.section_adult').hasClass('on')){
$('.section_adult').removeClass('on').addClass('off');
window.wpmanga.removeCookie('wpmanga-adult');
}else{
$('.section_adult').removeClass('off').addClass('on');
window.wpmanga.setCookie('wpmanga-adult', 1, 7);
}
location.reload();
$(this).removeClass('refreshing');
}
return false;
});
var siteUrl=jQuery('#adult_modal').attr('data-site-url');
$('.btn-not-adult').on('click', function (e){
if(siteUrl!==''){
window.location=siteUrl;
}});
if(jQuery('body').hasClass('censored')){
jQuery('.btn-adult-confirm').on('click', function (e){
window.wpmanga.setCookie('wpmanga-adault', 1, 7);
jQuery('body').removeClass('censored');
});
}
$('li.menu-item-has-children a[href^="#"]').on('touchend click', function (e){
var $this=$(this);
if($this.parents('.c-sub-header-nav').length){
e.preventDefault();
$this.parent().toggleClass('active');
}else{
e.preventDefault();
}});
jQuery(".off-canvas ul > li.menu-item-has-children").addClass("hiden-sub-canvas");
jQuery(".off-canvas ul >li.menu-item-has-children").append('<i class="fa fa-caret-right" aria-hidden="true"></i>');
var menu_open=$('.menu_icon__open');
var menu_close=$('.menu_icon__close');
var menu_slide=$('.off-canvas');
var menu_sign_in=$('.mobile-menu .btn-active-modal');
menu_open.on('click', function (){
menu_open.addClass('active');
menu_slide.addClass('active');
$('body').addClass('open_canvas');
});
menu_close.on('click', function (e){
e.preventDefault();
menu_open.removeClass('active');
menu_slide.removeClass('active');
$('body').removeClass('open_canvas');
});
menu_sign_in.on('click', function (e){
e.preventDefault();
menu_open.removeClass('active');
menu_slide.removeClass('active');
$('body').removeClass('open_canvas');
});
$(".off-canvas ul >li.menu-item-has-children > i").on('click', function (){
var $this=$(this).parent("li");
$this.toggleClass("active").children("ul").slideToggle();
return false;
});
$(document).on(" touchend click", function (e){
if(!$(e.target).hasClass('menu_icon__open')&&!$(e.target).closest('.off-canvas').hasClass('active')){
menu_slide.removeClass('active');
menu_open.removeClass("active");
$('body').removeClass('open_canvas');
}});
var stickyNavigation=$('.c-sub-header-nav').length > 0 ? $('.c-sub-header-nav').offset().top:0;
var cloneHeader=$("<div>", {
class: "clone-header"
})
$(cloneHeader).insertBefore(".c-sub-header-nav");
var navigationHeight=$('.c-sub-header-nav').outerHeight(true);
var madara_need_add_sticky=function (){
var scrollTop=$(window).scrollTop();
if(scrollTop - stickyNavigation > 750&&$("body").hasClass("sticky-enabled")){
$(cloneHeader).css('height', navigationHeight);
$('.c-sub-header-nav').addClass('sticky');
$('body').addClass('sticky__active');
$('.c-sub-header-nav').fadeIn(300, 'linear');
}
else if(scrollTop - stickyNavigation <=200&&$("body").hasClass("sticky-enabled")){
$(cloneHeader).css('height', 0);
$('.c-sub-header-nav').removeClass('sticky');
$('body').removeClass('sticky__active');
}}
var stickyNav=function (){
if(typeof stickyNav.x=='undefined'){
stickyNav.x=window.pageXOffset;
stickyNav.y=window.pageYOffset;
}
var diffX=stickyNav.x - window.pageXOffset;
var diffY=stickyNav.y - window.pageYOffset;
if(diffX < 0){
}else if(diffX > 0){
}else if(diffY < 0){
if($('body').hasClass('sticky-style-2')){
$('.c-sub-header-nav').removeClass('sticky');
$('body').removeClass('sticky__active');
$('.clone-header').css('height', 0);
}else{
madara_need_add_sticky();
}}else if(diffY > 0){
madara_need_add_sticky();
}else{
}
stickyNav.x=window.pageXOffset;
stickyNav.y=window.pageYOffset;
};
var stickyReadingTools=function(){
if(typeof stickyReadingTools.x=='undefined'){
stickyReadingTools.x=window.pageXOffset;
stickyReadingTools.y=window.pageYOffset;
}
var diffY=stickyReadingTools.y - window.pageYOffset;
if(diffY < 0){
$('#manga-reading-nav-head').removeClass('show');
}else if(diffY > 0){
$('#manga-reading-nav-head').addClass('show');
}
stickyReadingTools.x=window.pageXOffset;
stickyReadingTools.y=window.pageYOffset;
}
$(window).on('scroll', function (){
if($('body').hasClass('sticky-enabled')){
if($(window).width() >=768||$('body').hasClass('sticky-for-mobile')){
stickyNav();
}}
if($('body').hasClass('floating-reading-tools')){
if($(window).width() <=768){
stickyReadingTools();
}}
});
if($(window).width() >=768){
$('body').delegate('.page-item-detail .item-thumb.hover-details', 'mousemove', (function (e){
var check_bar=$('body').hasClass('admin-bar');
var relativeXPosition=(e.pageX);
var relativeYPosition=(e.pageY);
var _width_infor=$("#hover-infor").width();
var infor_left=(relativeXPosition - 15) - _width_infor;
var infor_right=relativeXPosition + 15;
var infor_top=check_bar ? (relativeYPosition - 32):(relativeYPosition);
var body_outerW=($(window).outerWidth() / 2);
$("#hover-infor").addClass('active');
$("#hover-infor").show();
$(".icon-load-info").css({
"position": "absolute",
"top": infor_top - 20,
"left": relativeXPosition - 20,
"display": "inline-block",
"z-index": "99999",
"width": "40px",
"height": "40px",
});
$("#hover-infor").css({
"position": "absolute",
"top": infor_top,
"display": "inline-block",
"z-index": "99999",
});
if(relativeXPosition >=body_outerW){
$("#hover-infor").css({
"left": infor_left,
});
}else{
$("#hover-infor").css({
"left": infor_right,
});
}})).mouseout(function (){
$("#hover-infor").removeClass('active');
$("#hover-infor").hide();
});
}else{
$('.off-menu ul.navbar-nav > .dropdown > a[href]').click(function (){
var dropdown=$(this).next('.dropdown-menu');
if(this.href&&this.href!='#'&&this.href!='javascript:void(0)'){
location.href=this.href;
}});
}
jQuery('.go-to-top').on('click', function (){
jQuery('html, body').animate({ scrollTop: 0 }, 500);
});
jQuery(window).on('scroll', function (){
if(jQuery(window).scrollTop() >=(window.innerHeight * 0.5)){
if(!jQuery('.go-to-top').hasClass('active')){
jQuery('.go-to-top').addClass('active');
}
;
}else{
jQuery('.go-to-top').removeClass('active');
}
if(jQuery('.wall-ads-control').length){
if(window.wallAdsScrollTimeout){
clearTimeout(window.wallAdsScrollTimeout);
}
window.wallAdsScrollTimeout=setTimeout(function (){
var normal_top=jQuery('.wall-ads-control').data('scrolltop') ? jQuery('.wall-ads-control').data('scrolltop'):210;
var ignore_top=jQuery('.wall-ads-control').data('maxtop') ? jQuery('.wall-ads-control').data('maxtop'):510;
if(jQuery(window).scrollTop() < normal_top){
jQuery('.wall-ads-control').animate({ top: ignore_top + 'px' });
}else{
jQuery('.wall-ads-control').animate({ top: normal_top + 'px' });
}}, 100);
}});
$('.main-menu-search .open-search-main-menu').on('click', function (){
var $this=$(this);
if($this.hasClass('search-open')){
$this.parents('.c-header__top').find('.search-main-menu').removeClass('active');
setTimeout(function (){
$this.parents('.c-header__top').find('.search-main-menu').find('input[type="text"]').blur();
}, 200);
$this.removeClass('search-open');
if($('body').hasClass('mobile')){
var $adv_search_link=$('.link-adv-search', $('#blog-post-search'));
if($adv_search_link.length > 0){
$adv_search_link.remove();
}}
}else{
$this.parents('.c-header__top').find('.search-main-menu').addClass('active');
setTimeout(function (){
$this.parents('.c-header__top').find('.search-main-menu').find('input[type="text"]').focus();
}, 200);
$this.addClass('search-open');
if($('body').hasClass('mobile')){
var $adv_search_link=$('.link-adv-search', $this.closest('.widget-manga-search'));
if($adv_search_link.length > 0){
$('#blog-post-search').append($adv_search_link.clone());
}}
}
;
});
$(".genres_wrap .btn-genres").click(function (){
var $this=$(this);
var $this_parent;
$this.toggleClass("active");
$this_parent=$this.parents(".genres_wrap");
$this_parent.find(".genres__collapse").slideToggle(300);
$this_parent.find(".c-blog__heading.style-3").toggleClass("active");
});
$(".listing-chapters_wrap ul.main > li.has-child").on('click', function (e){
var $this=$(this);
$(e.target).toggleClass("active").children("ul").slideToggle(300);
});
$(".listing-chapters_wrap ul.main > li a.has-child").on('click', function (e){
var $this=$(this);
$(e.target).next("ul").slideToggle(300);
$(e.target).parent().toggleClass("active");
});
$("#checkall").click(function (){
$('table.list-bookmark input:checkbox').not(this).prop('checked', this.checked);
});
if($('body').has('.summary__content.show-more').length){
var text=$('.summary__content.show-more'),
btn=$('.content-readmore'),
h=text[0].scrollHeight;
if(h > 120){
btn.addClass('less');
btn.css('display', 'inline-block');
}else{
btn.css('display', 'none');
$('.description-summary').addClass('hide_show-more');
}
btn.click(function (e){
e.stopPropagation();
if(btn.hasClass('less')){
btn.removeClass('less');
btn.addClass('more');
if(typeof single_manga_show_more!=='undefined'){
btn.text(single_manga_show_more.show_less);
}else{
btn.text('Show less  ');
}
text.addClass('active');
text.animate({ 'height': h });
}else{
btn.addClass('less');
btn.removeClass('more');
text.removeClass('active');
if(typeof single_manga_show_more!=='undefined'){
btn.text(single_manga_show_more.show_more);
}else{
btn.text('Show more  ');
}
text.animate({ 'height': '120px' });
}});
}
$(document).on('wp_manga_after_load_chapters_list', function (){
if($('body').has('.listing-chapters_wrap.show-more .version-chap').length){
var text_chap=$('.listing-chapters_wrap.show-more .version-chap');
var btn_chap=$('.listing-chapters_wrap.show-more .chapter-readmore');
var height_parent=text_chap.height();
var check_show_btn=function (){
if(height_parent >=550){
btn_chap.addClass('less-chap');
btn_chap.fadeIn(300);
$('.listing-chapters_wrap.show-more').addClass('show');
text_chap.addClass('active');
}else{
btn_chap.fadeOut(300);
$('.listing-chapters_wrap.show-more').removeClass('show');
text_chap.removeClass('active')
}}
$(".listing-chapters_wrap.show-more ul.main > li.has-child").on('click', function (e){
var $this=$(this);
setTimeout(function (){
height_parent=$this.parents('.version-chap').height();
check_show_btn();
}, 300);
});
check_show_btn();
btn_chap.click(function (e){
e.stopPropagation();
if(btn_chap.hasClass('less-chap')){
btn_chap.removeClass('less-chap');
btn_chap.fadeOut(300);
text_chap.addClass('loading');
$('.listing-chapters_wrap.show-more').removeClass('show');
setTimeout(function (){
btn_chap.remove();
text_chap.animate({ 'max-height': '100%' });
text_chap.removeClass('loading');
text_chap.addClass('loaded');
}, 1000);
}});
}
$('.btn-reverse-order').on('click', function (e){
var main_lists=$('.main.version-chap');
main_lists.each(function (idx){
var listItems=$(this).children('li');
$(this).append(listItems.get().reverse());
});
var sub_lists=$('.sub-chap.list-chap .sub-chap-list');
sub_lists.each(function (idx){
var listItems=$(this).children('li');
$(this).append(listItems.get().reverse());
});
return false;
});
$('.reward_ads').unbind('click');
$('.reward_ads').on('click', function(e){
reward_ads_click(this);
});
});
$(document).on('madara_load_more_completed', function(e){
$('.reward_ads').unbind('click');
$('.reward_ads').on('click', function(e){
reward_ads_click(this);
});
})
$(document).on('click', '.c-sub-header-nav .mobile-icon', function (e){
var $this=$(this);
if($this.parent().hasClass('active')){
$this.parent().removeClass('active');
}else{
$this.parent().addClass('active');
}});
var mobile_pagination_btn_attach_click=function (){
var pagination_btn=$(".mobile-nav-btn");
var select_pagination=$(".select-pagination");
pagination_btn.unbind('click');
pagination_btn.on('click', function (e){
e.preventDefault();
if(select_pagination.parent().hasClass('active')){
select_pagination.parent().removeClass('active');
}else{
select_pagination.parent().addClass('active');
}});
};
mobile_pagination_btn_attach_click();
$(document).on('wp_manga_on_chapter_navlinks_click', function (){
mobile_pagination_btn_attach_click();
});
$('#btn_view_full_image').on('click', function (e){
$('.container').css({ 'width': 'auto', 'max-width': 'initial' });
$(this).hide();
e.preventDefault();
e.stopPropagation();
});
var reward_ads_click=function(obj){
$(window).trigger('rewards_ads_click', $(obj).data('manga'), $(obj).data('chapter'));
var d=new Date();
d.setTime(d.getTime() + (parseInt($(obj).data('expired')) * 60 * 1000));
var expires="expires=" + d.toUTCString();
document.cookie=$(obj).data('manga') + "-" + $(obj).data('chapter') + "-ads-clicked=1;" + expires + ";path=/";
var source_url=$(obj).data('url');
openInNewTab(source_url);
}
$('.reward_ads').on('click', function(e){
reward_ads_click(this);
});
});
function shortString(){
var shorts=document.querySelectorAll('.short');
if(shorts){
Array.prototype.forEach.call(shorts, function (ele){
var str=ele.innerText,
indt='...';
if(ele.hasAttribute('data-limit')){
if(str.length > ele.dataset.limit){
var result=str.substring(0, ele.dataset.limit - indt.length).trim() + indt;
ele.innerText=result;
str=null;
result=null;
}}else{
throw Error('Cannot find attribute \'data-limit\'');
}});
}}
})(jQuery);