ReYGGTools

Ajout d'améliorations pour le site YGG (reprise de YGGTools by FERVEX)

  1. // ==UserScript==
  2. // @name ReYGGTools
  3. // @namespace ReYGGTools
  4. // @version 1.0.190
  5. // @description Ajout d'améliorations pour le site YGG (reprise de YGGTools by FERVEX)
  6. // @author Invincible812, Fervex, Esperlu&te
  7. // @supportURL https://www.ygg.re/profile/9385666-invincible813
  8. // @compatible firefox Violentmonkey
  9. // @compatible chrome Violentmonkey
  10. // @compatible brave Violentmonkey
  11. // @compatible opera Violentmonkey
  12. // @icon https://i.ibb.co/dJ0kSQq/Re-YGGTools.png
  13. // @grant GM_getValue
  14. // @grant GM_setValue
  15. // @grant GM.xmlHttpRequest
  16. // @include https://*.ygg.*
  17. // @include https://*.yggtorrent.*
  18. // @include https://ygg.*
  19. // @include https://yggtorrent.*
  20. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js
  21. // @ressource https://cdn.datatables.net/v/bs4/dt-2.0.7/cr-2.0.2/r-3.0.2/rr-1.5.0/datatables.min.css
  22. // ==/UserScript==
  23.  
  24. /*
  25. * This combined file was created by the DataTables downloader builder:
  26. * https://datatables.net/download
  27. *
  28. * To rebuild or modify this file with the latest versions of the included
  29. * software please visit:
  30. * https://datatables.net/download/#bs4/dt-2.0.7/cr-2.0.2/r-3.0.2/rr-1.5.0
  31. *
  32. * Included libraries:
  33. * DataTables 2.0.7, ColReorder 2.0.2, Responsive 3.0.2, RowReorder 1.5.0
  34. */
  35.  
  36. /*! DataTables 2.0.7
  37. * © SpryMedia Ltd - datatables.net/license
  38. */
  39. !function(n){"use strict";var a;"function"==typeof define&&define.amd?define(["jquery"],function(t){return n(t,window,document)}):"object"==typeof exports?(a=require("jquery"),"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||a(t),n(e,t,t.document)}:module.exports=n(a,window,window.document)):window.DataTable=n(jQuery,window,document)}(function(V,q,_){"use strict";function g(t){var e=parseInt(t,10);return!isNaN(e)&&isFinite(t)?e:null}function o(t,e,n){var a=typeof t,r="string"==a;return"number"==a||"bigint"==a||!!y(t)||(e&&r&&(t=R(t,e)),n&&r&&(t=t.replace(P,"")),!isNaN(parseFloat(t))&&isFinite(t))}function l(t,e,n){var a;return!!y(t)||("string"!=typeof t||!t.match(/<(input|select)/i))&&(y(a=t)||"string"==typeof a)&&!!o(I(t),e,n)||null}function m(t,e,n,a){var r=[],o=0,i=e.length;if(void 0!==a)for(;o<i;o++)t[e[o]][n]&&r.push(t[e[o]][n][a]);else for(;o<i;o++)t[e[o]]&&r.push(t[e[o]][n]);return r}function h(t,e){var n,a=[];void 0===e?(e=0,n=t):(n=e,e=t);for(var r=e;r<n;r++)a.push(r);return a}function b(t){for(var e=[],n=0,a=t.length;n<a;n++)t[n]&&e.push(t[n]);return e}var C,U,e,t,$=function(t,H){var W,X,B;return $.factory(t,H)?$:this instanceof $?V(t).DataTable(H):(X=void 0===(H=t),B=(W=this).length,X&&(H={}),this.api=function(){return new U(this)},this.each(function(){var n=1<B?Zt({},H,!0):H,a=0,t=this.getAttribute("id"),r=!1,e=$.defaults,o=V(this);if("table"!=this.nodeName.toLowerCase())Z(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{V(this).trigger("options.dt",n),nt(e),at(e.column),z(e,e,!0),z(e.column,e.column,!0),z(e,V.extend(n,o.data()),!0);for(var i=$.settings,a=0,l=i.length;a<l;a++){var s=i[a];if(s.nTable==this||s.nTHead&&s.nTHead.parentNode==this||s.nTFoot&&s.nTFoot.parentNode==this){var E=(void 0!==n.bRetrieve?n:e).bRetrieve,k=(void 0!==n.bDestroy?n:e).bDestroy;if(X||E)return s.oInstance;if(k){new $.Api(s).destroy();break}return void Z(s,0,"Cannot reinitialise DataTable",3)}if(s.sTableId==this.id){i.splice(a,1);break}}null!==t&&""!==t||(t="DataTables_Table_"+$.ext._unique++,this.id=t);var u=V.extend(!0,{},$.models.oSettings,{sDestroyWidth:o[0].style.width,sInstance:t,sTableId:t,colgroup:V("<colgroup>").prependTo(this),fastData:function(t,e,n){return G(u,t,e,n)}}),t=(u.nTable=this,u.oInit=n,i.push(u),u.api=new U(u),u.oInstance=1===W.length?W:o.dataTable(),nt(n),n.aLengthMenu&&!n.iDisplayLength&&(n.iDisplayLength=Array.isArray(n.aLengthMenu[0])?n.aLengthMenu[0][0]:V.isPlainObject(n.aLengthMenu[0])?n.aLengthMenu[0].value:n.aLengthMenu[0]),n=Zt(V.extend(!0,{},e),n),Q(u.oFeatures,n,["bPaginate","bLengthChange","bFilter","bSort","bSortMulti","bInfo","bProcessing","bAutoWidth","bSortClasses","bServerSide","bDeferRender"]),Q(u,n,["ajax","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","iStateDuration","bSortCellsTop","iTabIndex","sDom","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId","caption","layout",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]),Q(u.oScroll,n,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]),Q(u.oLanguage,n,"fnInfoCallback"),K(u,"aoDrawCallback",n.fnDrawCallback),K(u,"aoStateSaveParams",n.fnStateSaveParams),K(u,"aoStateLoadParams",n.fnStateLoadParams),K(u,"aoStateLoaded",n.fnStateLoaded),K(u,"aoRowCallback",n.fnRowCallback),K(u,"aoRowCreatedCallback",n.fnCreatedRow),K(u,"aoHeaderCallback",n.fnHeaderCallback),K(u,"aoFooterCallback",n.fnFooterCallback),K(u,"aoInitComplete",n.fnInitComplete),K(u,"aoPreDrawCallback",n.fnPreDrawCallback),u.rowIdFn=J(n.rowId),u),c=($.__browser||(P={},$.__browser=P,j=V("<div/>").css({position:"fixed",top:0,left:-1*q.pageXOffset,height:1,width:1,overflow:"hidden"}).append(V("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(V("<div/>").css({width:"100%",height:10}))).appendTo("body"),p=j.children(),O=p.children(),P.barWidth=p[0].offsetWidth-p[0].clientWidth,P.bScrollbarLeft=1!==Math.round(O.offset().left),j.remove()),V.extend(t.oBrowser,$.__browser),t.oScroll.iBarWidth=$.__browser.barWidth,u.oClasses),d=(V.extend(c,$.ext.classes,n.oClasses),o.addClass(c.table),u.oFeatures.bPaginate||(n.iDisplayStart=0),void 0===u.iInitDisplayStart&&(u.iInitDisplayStart=n.iDisplayStart,u._iDisplayStart=n.iDisplayStart),u.oLanguage),f=(V.extend(!0,d,n.oLanguage),d.sUrl?(V.ajax({dataType:"json",url:d.sUrl,success:function(t){z(e.oLanguage,t),V.extend(!0,d,t,u.oInit.oLanguage),tt(u,null,"i18n",[u],!0),Et(u)},error:function(){Z(u,0,"i18n file loading error",21),Et(u)}}),r=!0):tt(u,null,"i18n",[u]),[]),h=this.getElementsByTagName("thead"),p=It(u,h[0]);if(n.aoColumns)f=n.aoColumns;else if(p.length)for(l=p[a=0].length;a<l;a++)f.push(null);for(a=0,l=f.length;a<l;a++)rt(u);var g,v,m,b,y,D,x,S=u,T=n.aoColumnDefs,w=f,M=p,_=function(t,e){ot(u,t,e)},C=S.aoColumns;if(w)for(g=0,v=w.length;g<v;g++)w[g]&&w[g].name&&(C[g].sName=w[g].name);if(T)for(g=T.length-1;0<=g;g--){var I=void 0!==(x=T[g]).target?x.target:void 0!==x.targets?x.targets:x.aTargets;for(Array.isArray(I)||(I=[I]),m=0,b=I.length;m<b;m++){var A=I[m];if("number"==typeof A&&0<=A){for(;C.length<=A;)rt(S);_(A,x)}else if("number"==typeof A&&A<0)_(C.length+A,x);else if("string"==typeof A)for(y=0,D=C.length;y<D;y++)"_all"===A?_(y,x):-1!==A.indexOf(":name")?C[y].sName===A.replace(":name","")&&_(y,x):M.forEach(function(t){t[y]&&(t=V(t[y].cell),A.match(/^[a-z][\w-]*$/i)&&(A="."+A),t.is(A))&&_(y,x)})}}if(w)for(g=0,v=w.length;g<v;g++)_(g,w[g]);var L,F,N,j,P=o.children("tbody").find("tr").eq(0),R=(P.length&&(L=function(t,e){return null!==t.getAttribute("data-"+e)?e:null},V(P[0]).children("th, td").each(function(t,e){var n,a=u.aoColumns[t];a||Z(u,0,"Incorrect column count",18),a.mData===t&&(n=L(e,"sort")||L(e,"order"),e=L(e,"filter")||L(e,"search"),null===n&&null===e||(a.mData={_:t+".display",sort:null!==n?t+".@data-"+n:void 0,type:null!==n?t+".@data-"+n:void 0,filter:null!==e?t+".@data-"+e:void 0},a._isArrayHost=!0,ot(u,t)))})),u.oFeatures),O=function(){if(void 0===n.aaSorting){var t=u.aaSorting;for(a=0,l=t.length;a<l;a++)t[a][1]=u.aoColumns[a].asSorting[0]}Yt(u),K(u,"aoDrawCallback",function(){(u.bSorted||"ssp"===et(u)||R.bDeferRender)&&Yt(u)});var e=o.children("caption"),e=(u.caption&&(e=0===e.length?V("<caption/>").appendTo(o):e).html(u.caption),e.length&&(e[0]._captionSide=e.css("caption-side"),u.captionNode=e[0]),0===h.length&&(h=V("<thead/>").appendTo(o)),u.nTHead=h[0],V("tr",h).addClass(c.thead.row),o.children("tbody")),e=(0===e.length&&(e=V("<tbody/>").insertAfter(h)),u.nTBody=e[0],o.children("tfoot"));if(0===e.length&&(e=V("<tfoot/>").appendTo(o)),u.nTFoot=e[0],V("tr",e).addClass(c.tfoot.row),n.aaData)for(a=0;a<n.aaData.length;a++)Y(u,n.aaData[a]);else"dom"==et(u)&&ut(u,V(u.nTBody).children("tr"));u.aiDisplay=u.aiDisplayMaster.slice(),!(u.bInitialised=!0)===r&&Et(u)};K(u,"aoDrawCallback",Gt),n.bStateSave?(R.bStateSave=!0,N=O,(F=u).oFeatures.bStateSave?void 0!==(j=F.fnStateLoadCallback.call(F.oInstance,F,function(t){Jt(F,t,N)}))&&Jt(F,j,N):N()):O()}}),W=null,this)},c=($.ext=C={buttons:{},classes:{},builder:"bs4/dt-2.0.7/cr-2.0.2/r-3.0.2/rr-1.5.0",errMode:"alert",feature:[],features:{},search:[],selector:{cell:[],column:[],row:[]},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{className:{},detect:[],render:{},search:{},order:{}},_unique:0,fnVersionCheck:$.fnVersionCheck,iApiIndex:0,sVersion:$.version},V.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oStdClasses:C.classes,oPagination:C.pager}),V.extend($.ext.classes,{container:"dt-container",empty:{row:"dt-empty"},info:{container:"dt-info"},length:{container:"dt-length",select:"dt-input"},order:{canAsc:"dt-orderable-asc",canDesc:"dt-orderable-desc",isAsc:"dt-ordering-asc",isDesc:"dt-ordering-desc",none:"dt-orderable-none",position:"sorting_"},processing:{container:"dt-processing"},scrolling:{body:"dt-scroll-body",container:"dt-scroll",footer:{self:"dt-scroll-foot",inner:"dt-scroll-footInner"},header:{self:"dt-scroll-head",inner:"dt-scroll-headInner"}},search:{container:"dt-search",input:"dt-input"},table:"dataTable",tbody:{cell:"",row:""},thead:{cell:"",row:""},tfoot:{cell:"",row:""},paging:{active:"current",button:"dt-paging-button",container:"dt-paging",disabled:"disabled"}}),{}),d=/[\r\n\u2028]/g,L=/<([^>]*>)/g,F=Math.pow(2,28),N=/^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/,j=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^","-"].join("|\\")+")","g"),P=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,y=function(t){return!t||!0===t||"-"===t},R=function(t,e){return c[e]||(c[e]=new RegExp(Pt(e),"g")),"string"==typeof t&&"."!==e?t.replace(/\./g,"").replace(c[e],"."):t},f=function(t,e,n){var a=[],r=0,o=t.length;if(void 0!==n)for(;r<o;r++)t[r]&&t[r][e]&&a.push(t[r][e][n]);else for(;r<o;r++)t[r]&&a.push(t[r][e]);return a},I=function(t){if(t.length>F)throw new Error("Exceeded max str len");var e;for(t=t.replace(L,"");(t=(e=t).replace(/<script/i,""))!==e;);return e},u=function(t){return"string"==typeof(t=Array.isArray(t)?t.join(","):t)?t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):t},O=function(t,e){var n;return"string"!=typeof t?t:(n=t.normalize("NFD")).length!==t.length?(!0===e?t+" ":"")+n.replace(/[\u0300-\u036f]/g,""):n},x=function(t){if(Array.from&&Set)return Array.from(new Set(t));if(function(t){if(!(t.length<2))for(var e=t.slice().sort(),n=e[0],a=1,r=e.length;a<r;a++){if(e[a]===n)return!1;n=e[a]}return!0}(t))return t.slice();var e,n,a,r=[],o=t.length,i=0;t:for(n=0;n<o;n++){for(e=t[n],a=0;a<i;a++)if(r[a]===e)continue t;r.push(e),i++}return r},E=function(t,e){if(Array.isArray(e))for(var n=0;n<e.length;n++)E(t,e[n]);else t.push(e);return t};function D(e,t){t&&t.split(" ").forEach(function(t){t&&e.classList.add(t)})}function k(e){var n,a,r={};V.each(e,function(t){(n=t.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(n[1]+" ")&&(a=t.replace(n[0],n[2].toLowerCase()),r[a]=t,"o"===n[1])&&k(e[t])}),e._hungarianMap=r}function z(e,n,a){var r;e._hungarianMap||k(e),V.each(n,function(t){void 0===(r=e._hungarianMap[t])||!a&&void 0!==n[r]||("o"===r.charAt(0)?(n[r]||(n[r]={}),V.extend(!0,n[r],n[t]),z(e[r],n[r],a)):n[r]=n[t])})}$.util={diacritics:function(t,e){if("function"!=typeof t)return O(t,e);O=t},debounce:function(n,a){var r;return function(){var t=this,e=arguments;clearTimeout(r),r=setTimeout(function(){n.apply(t,e)},a||250)}},throttle:function(a,t){var r,o,i=void 0!==t?t:200;return function(){var t=this,e=+new Date,n=arguments;r&&e<r+i?(clearTimeout(o),o=setTimeout(function(){r=void 0,a.apply(t,n)},i)):(r=e,a.apply(t,n))}},escapeRegex:function(t){return t.replace(j,"\\$1")},set:function(a){var f;return V.isPlainObject(a)?$.util.set(a._):null===a?function(){}:"function"==typeof a?function(t,e,n){a(t,"set",e,n)}:"string"!=typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("(")?function(t,e){t[a]=e}:(f=function(t,e,n){for(var a,r,o,i,l=ft(n),n=l[l.length-1],s=0,u=l.length-1;s<u;s++){if("__proto__"===l[s]||"constructor"===l[s])throw new Error("Cannot set prototype values");if(a=l[s].match(dt),r=l[s].match(p),a){if(l[s]=l[s].replace(dt,""),t[l[s]]=[],(a=l.slice()).splice(0,s+1),i=a.join("."),Array.isArray(e))for(var c=0,d=e.length;c<d;c++)f(o={},e[c],i),t[l[s]].push(o);else t[l[s]]=e;return}r&&(l[s]=l[s].replace(p,""),t=t[l[s]](e)),null!==t[l[s]]&&void 0!==t[l[s]]||(t[l[s]]={}),t=t[l[s]]}n.match(p)?t[n.replace(p,"")](e):t[n.replace(dt,"")]=e},function(t,e){return f(t,e,a)})},get:function(r){var o,f;return V.isPlainObject(r)?(o={},V.each(r,function(t,e){e&&(o[t]=$.util.get(e))}),function(t,e,n,a){var r=o[e]||o._;return void 0!==r?r(t,e,n,a):t}):null===r?function(t){return t}:"function"==typeof r?function(t,e,n,a){return r(t,e,n,a)}:"string"!=typeof r||-1===r.indexOf(".")&&-1===r.indexOf("[")&&-1===r.indexOf("(")?function(t){return t[r]}:(f=function(t,e,n){var a,r,o;if(""!==n)for(var i=ft(n),l=0,s=i.length;l<s;l++){if(d=i[l].match(dt),a=i[l].match(p),d){if(i[l]=i[l].replace(dt,""),""!==i[l]&&(t=t[i[l]]),r=[],i.splice(0,l+1),o=i.join("."),Array.isArray(t))for(var u=0,c=t.length;u<c;u++)r.push(f(t[u],e,o));var d=d[0].substring(1,d[0].length-1);t=""===d?r:r.join(d);break}if(a)i[l]=i[l].replace(p,""),t=t[i[l]]();else{if(null===t||null===t[i[l]])return null;if(void 0===t||void 0===t[i[l]])return;t=t[i[l]]}}return t},function(t,e){return f(t,e,r)})},stripHtml:function(t){var e=typeof t;if("function"!=e)return"string"==e?I(t):t;I=t},escapeHtml:function(t){var e=typeof t;if("function"!=e)return"string"==e||Array.isArray(t)?u(t):t;u=t},unique:x};var r=function(t,e,n){void 0!==t[e]&&(t[n]=t[e])};function nt(t){r(t,"ordering","bSort"),r(t,"orderMulti","bSortMulti"),r(t,"orderClasses","bSortClasses"),r(t,"orderCellsTop","bSortCellsTop"),r(t,"order","aaSorting"),r(t,"orderFixed","aaSortingFixed"),r(t,"paging","bPaginate"),r(t,"pagingType","sPaginationType"),r(t,"pageLength","iDisplayLength"),r(t,"searching","bFilter"),"boolean"==typeof t.sScrollX&&(t.sScrollX=t.sScrollX?"100%":""),"boolean"==typeof t.scrollX&&(t.scrollX=t.scrollX?"100%":"");var e=t.aoSearchCols;if(e)for(var n=0,a=e.length;n<a;n++)e[n]&&z($.models.oSearch,e[n]);t.serverSide&&!t.searchDelay&&(t.searchDelay=400)}function at(t){r(t,"orderable","bSortable"),r(t,"orderData","aDataSort"),r(t,"orderSequence","asSorting"),r(t,"orderDataType","sortDataType");var e=t.aDataSort;"number"!=typeof e||Array.isArray(e)||(t.aDataSort=[e])}function rt(t){var e=$.defaults.column,n=t.aoColumns.length,e=V.extend({},$.models.oColumn,e,{aDataSort:e.aDataSort||[n],mData:e.mData||n,idx:n,searchFixed:{},colEl:V("<col>").attr("data-dt-column",n)}),e=(t.aoColumns.push(e),t.aoPreSearchCols);e[n]=V.extend({},$.models.oSearch,e[n])}function ot(t,e,n){function a(t){return"string"==typeof t&&-1!==t.indexOf("@")}var r=t.aoColumns[e],o=(null!=n&&(at(n),z($.defaults.column,n,!0),void 0===n.mDataProp||n.mData||(n.mData=n.mDataProp),n.sType&&(r._sManualType=n.sType),n.className&&!n.sClass&&(n.sClass=n.className),e=r.sClass,V.extend(r,n),Q(r,n,"sWidth","sWidthOrig"),e!==r.sClass&&(r.sClass=e+" "+r.sClass),void 0!==n.iDataSort&&(r.aDataSort=[n.iDataSort]),Q(r,n,"aDataSort")),r.mData),i=J(o);r.mRender&&Array.isArray(r.mRender)&&(n=(e=r.mRender.slice()).shift(),r.mRender=$.render[n].apply(q,e)),r._render=r.mRender?J(r.mRender):null;r._bAttrSrc=V.isPlainObject(o)&&(a(o.sort)||a(o.type)||a(o.filter)),r._setter=null,r.fnGetData=function(t,e,n){var a=i(t,e,void 0,n);return r._render&&e?r._render(a,e,t,n):a},r.fnSetData=function(t,e,n){return v(o)(t,e,n)},"number"==typeof o||r._isArrayHost||(t._rowReadObject=!0),t.oFeatures.bSort||(r.bSortable=!1)}function M(t){var e=t;if(e.oFeatures.bAutoWidth){var n,a,r=e.nTable,o=e.aoColumns,i=e.oScroll,l=i.sY,s=i.sX,i=i.sXInner,u=X(e,"bVisible"),c=r.getAttribute("width"),d=r.parentNode,f=r.style.width,f=(f&&-1!==f.indexOf("%")&&(c=f),tt(e,null,"column-calc",{visible:u},!1),V(r.cloneNode()).css("visibility","hidden").removeAttr("id")),h=(f.append("<tbody>"),V("<tr/>").appendTo(f.find("tbody")));for(f.append(V(e.nTHead).clone()).append(V(e.nTFoot).clone()),f.find("tfoot th, tfoot td").css("width",""),f.find("thead th, thead td").each(function(){var t=lt(e,this,!0,!1);t?(this.style.width=t,s&&V(this).append(V("<div/>").css({width:t,margin:0,padding:0,border:0,height:1}))):this.style.width=""}),n=0;n<u.length;n++){p=u[n],a=o[p];var p=function(t,e){var n=t.aoColumns[e];if(!n.maxLenString){for(var a,r="",o=-1,i=0,l=t.aiDisplayMaster.length;i<l;i++){var s=t.aiDisplayMaster[i],s=mt(t,s)[e],s=s&&"object"==typeof s&&s.nodeType?s.innerHTML:s+"";s=s.replace(/id=".*?"/g,"").replace(/name=".*?"/g,""),(a=I(s).replace(/&nbsp;/g," ")).length>o&&(r=s,o=a.length)}n.maxLenString=r}return n.maxLenString}(e,p),g=C.type.className[a.sType],v=p+a.sContentPadding,p=-1===p.indexOf("<")?_.createTextNode(v):v;V("<td/>").addClass(g).addClass(a.sClass).append(p).appendTo(h)}V("[name]",f).removeAttr("name");var m=V("<div/>").css(s||l?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(f).appendTo(d),b=(s&&i?f.width(i):s?(f.css("width","auto"),f.removeAttr("width"),f.width()<d.clientWidth&&c&&f.width(d.clientWidth)):l?f.width(d.clientWidth):c&&f.width(c),0),y=f.find("tbody tr").eq(0).children();for(n=0;n<u.length;n++){var D=y[n].getBoundingClientRect().width;b+=D,o[u[n]].sWidth=A(D)}r.style.width=A(b),m.remove(),c&&(r.style.width=A(c)),!c&&!s||e._reszEvt||(V(q).on("resize.DT-"+e.sInstance,$.util.throttle(function(){e.bDestroying||M(e)})),e._reszEvt=!0)}for(var x=t,S=x.aoColumns,T=0;T<S.length;T++){var w=lt(x,[T],!1,!1);S[T].colEl.css("width",w)}i=t.oScroll;""===i.sY&&""===i.sX||Xt(t),tt(t,null,"column-sizing",[t])}function H(t,e){t=X(t,"bVisible");return"number"==typeof t[e]?t[e]:null}function T(t,e){t=X(t,"bVisible").indexOf(e);return-1!==t?t:null}function W(t){var e=t.aoHeader,n=t.aoColumns,a=0;if(e.length)for(var r=0,o=e[0].length;r<o;r++)n[r].bVisible&&"none"!==V(e[0][r].cell).css("display")&&a++;return a}function X(t,n){var a=[];return t.aoColumns.map(function(t,e){t[n]&&a.push(e)}),a}function B(t){for(var e,n,a,r,o,i,l,s=t.aoColumns,u=t.aoData,c=$.ext.type.detect,d=0,f=s.length;d<f;d++){if(l=[],!(o=s[d]).sType&&o._sManualType)o.sType=o._sManualType;else if(!o.sType){for(e=0,n=c.length;e<n;e++){for(a=0,r=u.length;a<r;a++)if(u[a]){if(void 0===l[a]&&(l[a]=G(t,a,d,"type")),!(i=c[e](l[a],t))&&e!==c.length-2)break;if("html"===i&&!y(l[a]))break}if(i){o.sType=i;break}}o.sType||(o.sType="string")}var h=C.type.className[o.sType],h=(h&&(it(t.aoHeader,d,h),it(t.aoFooter,d,h)),C.type.render[o.sType]);if(h&&!o._render){o._render=$.util.get(h),p=b=m=v=g=void 0;for(var p,g=t,v=d,m=g.aoData,b=0;b<m.length;b++)m[b].nTr&&(p=G(g,b,v,"display"),m[b].displayData[v]=p,ct(m[b].anCells[v],p))}}}function it(t,e,n){t.forEach(function(t){t[e]&&t[e].unique&&D(t[e].cell,n)})}function lt(t,e,n,a){Array.isArray(e)||(e=st(e));for(var r,o=0,i=t.aoColumns,l=0,s=e.length;l<s;l++){var u=i[e[l]],c=n?u.sWidthOrig:u.sWidth;if(a||!1!==u.bVisible){if(null==c)return null;"number"==typeof c?(r="px",o+=c):(u=c.match(/([\d\.]+)([^\d]*)/))&&(o+=+u[1],r=3===u.length?u[2]:"px")}}return o+r}function st(t){t=V(t).closest("[data-dt-column]").attr("data-dt-column");return t?t.split(",").map(function(t){return+t}):[]}function Y(t,e,n,a){for(var r=t.aoData.length,o=V.extend(!0,{},$.models.oRow,{src:n?"dom":"data",idx:r}),i=(o._aData=e,t.aoData.push(o),t.aoColumns),l=0,s=i.length;l<s;l++)i[l].sType=null;t.aiDisplayMaster.push(r);e=t.rowIdFn(e);return void 0!==e&&(t.aIds[e]=o),!n&&t.oFeatures.bDeferRender||bt(t,r,n,a),r}function ut(n,t){var a;return(t=t instanceof V?t:V(t)).map(function(t,e){return a=vt(n,e),Y(n,a.data,e,a.cells)})}function G(t,e,n,a){"search"===a?a="filter":"order"===a&&(a="sort");var r=t.aoData[e];if(r){var o=t.iDraw,i=t.aoColumns[n],r=r._aData,l=i.sDefaultContent,s=i.fnGetData(r,a,{settings:t,row:e,col:n});if(void 0===(s="display"!==a&&s&&"object"==typeof s&&s.nodeName?s.innerHTML:s))return t.iDrawError!=o&&null===l&&(Z(t,0,"Requested unknown parameter "+("function"==typeof i.mData?"{function}":"'"+i.mData+"'")+" for row "+e+", column "+n,4),t.iDrawError=o),l;if(s!==r&&null!==s||null===l||void 0===a){if("function"==typeof s)return s.call(r)}else s=l;return null===s&&"display"===a?"":s="filter"===a&&(e=$.ext.type.search)[i.sType]?e[i.sType](s):s}}function ct(t,e){e&&"object"==typeof e&&e.nodeName?V(t).empty().append(e):t.innerHTML=e}var dt=/\[.*?\]$/,p=/\(\)$/;function ft(t){return(t.match(/(\\.|[^.])+/g)||[""]).map(function(t){return t.replace(/\\\./g,".")})}var J=$.util.get,v=$.util.set;function ht(t){return f(t.aoData,"_aData")}function pt(t){t.aoData.length=0,t.aiDisplayMaster.length=0,t.aiDisplay.length=0,t.aIds={}}function gt(t,e,n,a){var r,o,i=t.aoData[e];if(i._aSortData=null,i._aFilterData=null,i.displayData=null,"dom"!==n&&(n&&"auto"!==n||"dom"!==i.src)){var l=i.anCells,s=mt(t,e);if(l)if(void 0!==a)ct(l[a],s[a]);else for(r=0,o=l.length;r<o;r++)ct(l[r],s[r])}else i._aData=vt(t,i,a,void 0===a?void 0:i._aData).data;var u=t.aoColumns;if(void 0!==a)u[a].sType=null,u[a].maxLenString=null;else{for(r=0,o=u.length;r<o;r++)u[r].sType=null,u[r].maxLenString=null;yt(t,i)}}function vt(t,e,n,a){function r(t,e){var n;"string"==typeof t&&-1!==(n=t.indexOf("@"))&&(n=t.substring(n+1),v(t)(a,e.getAttribute(n)))}function o(t){void 0!==n&&n!==d||(l=f[d],s=t.innerHTML.trim(),l&&l._bAttrSrc?(v(l.mData._)(a,s),r(l.mData.sort,t),r(l.mData.type,t),r(l.mData.filter,t)):h?(l._setter||(l._setter=v(l.mData)),l._setter(a,s)):a[d]=s),d++}var i,l,s,u=[],c=e.firstChild,d=0,f=t.aoColumns,h=t._rowReadObject;a=void 0!==a?a:h?{}:[];if(c)for(;c;)"TD"!=(i=c.nodeName.toUpperCase())&&"TH"!=i||(o(c),u.push(c)),c=c.nextSibling;else for(var p=0,g=(u=e.anCells).length;p<g;p++)o(u[p]);var e=e.firstChild?e:e.nTr;return e&&(e=e.getAttribute("id"))&&v(t.rowId)(a,e),{data:a,cells:u}}function mt(t,e){var n=t.aoData[e],a=t.aoColumns;if(!n.displayData){n.displayData=[];for(var r=0,o=a.length;r<o;r++)n.displayData.push(G(t,e,r,"display"))}return n.displayData}function bt(t,e,n,a){var r,o,i,l,s,u,c=t.aoData[e],d=c._aData,f=[],h=t.oClasses.tbody.row;if(null===c.nTr){for(r=n||_.createElement("tr"),c.nTr=r,c.anCells=f,D(r,h),r._DT_RowIndex=e,yt(t,c),l=0,s=t.aoColumns.length;l<s;l++){i=t.aoColumns[l],(o=(u=!n||!a[l])?_.createElement(i.sCellType):a[l])||Z(t,0,"Incorrect column count",18),o._DT_CellIndex={row:e,column:l},f.push(o);var p=mt(t,e);!u&&(!i.mRender&&i.mData===l||V.isPlainObject(i.mData)&&i.mData._===l+".display")||ct(o,p[l]),i.bVisible&&u?r.appendChild(o):i.bVisible||u||o.parentNode.removeChild(o),i.fnCreatedCell&&i.fnCreatedCell.call(t.oInstance,o,G(t,e,l),d,e,l)}tt(t,"aoRowCreatedCallback","row-created",[r,d,e,f])}else D(c.nTr,h)}function yt(t,e){var n=e.nTr,a=e._aData;n&&((t=t.rowIdFn(a))&&(n.id=t),a.DT_RowClass&&(t=a.DT_RowClass.split(" "),e.__rowc=e.__rowc?x(e.__rowc.concat(t)):t,V(n).removeClass(e.__rowc.join(" ")).addClass(a.DT_RowClass)),a.DT_RowAttr&&V(n).attr(a.DT_RowAttr),a.DT_RowData)&&V(n).data(a.DT_RowData)}function Dt(t,e){var n,a=t.oClasses,r=t.aoColumns,o="header"===e?t.nTHead:t.nTFoot,i="header"===e?"sTitle":e;if(o){if(("header"===e||f(t.aoColumns,i).join(""))&&1===(n=(n=V("tr",o)).length?n:V("<tr/>").appendTo(o)).length)for(var l=V("td, th",n).length,s=r.length;l<s;l++)V("<th/>").html(r[l][i]||"").appendTo(n);var u=It(t,o,!0);"header"===e?t.aoHeader=u:t.aoFooter=u,V(o).children("tr").attr("role","row"),V(o).children("tr").children("th, td").each(function(){te(t,e)(t,V(this),a)})}}function xt(t,e,n){var a,r,o,i,l,s=[],u=[],c=t.aoColumns,t=c.length;if(e){for(n=n||h(t).filter(function(t){return c[t].bVisible}),a=0;a<e.length;a++)s[a]=e[a].slice().filter(function(t,e){return n.includes(e)}),u.push([]);for(a=0;a<s.length;a++)for(r=0;r<s[a].length;r++)if(l=i=1,void 0===u[a][r]){for(o=s[a][r].cell;void 0!==s[a+i]&&s[a][r].cell==s[a+i][r].cell;)u[a+i][r]=null,i++;for(;void 0!==s[a][r+l]&&s[a][r].cell==s[a][r+l].cell;){for(var d=0;d<i;d++)u[a+d][r+l]=null;l++}var f=V("span.dt-column-title",o);u[a][r]={cell:o,colspan:l,rowspan:i,title:(f.length?f:V(o)).html()}}return u}}function St(t,e){for(var n,a,r=xt(t,e),o=0;o<e.length;o++){if(n=e[o].row)for(;a=n.firstChild;)n.removeChild(a);for(var i=0;i<r[o].length;i++){var l=r[o][i];l&&V(l.cell).appendTo(n).attr("rowspan",l.rowspan).attr("colspan",l.colspan)}}}function S(t,e){if(r="ssp"==et(s=t),void 0!==(i=s.iInitDisplayStart)&&-1!==i&&(s._iDisplayStart=!r&&i>=s.fnRecordsDisplay()?0:i,s.iInitDisplayStart=-1),-1!==tt(t,"aoPreDrawCallback","preDraw",[t]).indexOf(!1))w(t,!1);else{var l,n=[],a=0,r="ssp"==et(t),o=t.aiDisplay,i=t._iDisplayStart,s=t.fnDisplayEnd(),u=t.aoColumns,c=V(t.nTBody);if(t.bDrawing=!0,r){if(!t.bDestroying&&!e)return 0===t.iDraw&&c.empty().append(Tt(t)),(l=t).iDraw++,w(l,!0),void At(l,function(e){function n(t,e){return"function"==typeof a[t][e]?"function":a[t][e]}var a=e.aoColumns,t=e.oFeatures,r=e.oPreviousSearch,o=e.aoPreSearchCols;return{draw:e.iDraw,columns:a.map(function(e,t){return{data:n(t,"mData"),name:e.sName,searchable:e.bSearchable,orderable:e.bSortable,search:{value:o[t].search,regex:o[t].regex,fixed:Object.keys(e.searchFixed).map(function(t){return{name:t,term:e.searchFixed[t].toString()}})}}}),order:$t(e).map(function(t){return{column:t.col,dir:t.dir,name:n(t.col,"sName")}}),start:e._iDisplayStart,length:t.bPaginate?e._iDisplayLength:-1,search:{value:r.search,regex:r.regex,fixed:Object.keys(e.searchFixed).map(function(t){return{name:t,term:e.searchFixed[t].toString()}})}}}(l),function(t){var e=l,n=Lt(e,t=t),a=Ft(e,"draw",t),r=Ft(e,"recordsTotal",t),t=Ft(e,"recordsFiltered",t);if(void 0!==a){if(+a<e.iDraw)return;e.iDraw=+a}n=n||[],pt(e),e._iRecordsTotal=parseInt(r,10),e._iRecordsDisplay=parseInt(t,10);for(var o=0,i=n.length;o<i;o++)Y(e,n[o]);e.aiDisplay=e.aiDisplayMaster.slice(),S(e,!0),kt(e),w(e,!1)})}else t.iDraw++;if(0!==o.length)for(var d=r?t.aoData.length:s,f=r?0:i;f<d;f++){for(var h=o[f],p=t.aoData[h],g=(null===p.nTr&&bt(t,h),p.nTr),v=0;v<u.length;v++){var m=u[v],b=p.anCells[v];D(b,C.type.className[m.sType]),D(b,m.sClass),D(b,t.oClasses.tbody.cell)}tt(t,"aoRowCallback",null,[g,p._aData,a,f,h]),n.push(g),a++}else n[0]=Tt(t);tt(t,"aoHeaderCallback","header",[V(t.nTHead).children("tr")[0],ht(t),i,s,o]),tt(t,"aoFooterCallback","footer",[V(t.nTFoot).children("tr")[0],ht(t),i,s,o]),c[0].replaceChildren?c[0].replaceChildren.apply(c[0],n):(c.children().detach(),c.append(V(n))),V(t.nTableWrapper).toggleClass("dt-empty-footer",0===V("tr",t.nTFoot).length),tt(t,"aoDrawCallback","draw",[t],!0),t.bSorted=!1,t.bFiltered=!1,t.bDrawing=!1}}function s(t,e,n){var a=t.oFeatures,r=a.bSort,a=a.bFilter;void 0!==n&&!0!==n||(r&&zt(t),a?Nt(t,t.oPreviousSearch):t.aiDisplay=t.aiDisplayMaster.slice()),!0!==e&&(t._iDisplayStart=0),t._drawHold=e,S(t),t._drawHold=!1}function Tt(t){var e=t.oLanguage,n=e.sZeroRecords,a=et(t);return t.iDraw<1&&"ssp"===a||t.iDraw<=1&&"ajax"===a?n=e.sLoadingRecords:e.sEmptyTable&&0===t.fnRecordsTotal()&&(n=e.sEmptyTable),V("<tr/>").append(V("<td />",{colSpan:W(t),class:t.oClasses.empty.row}).html(n))[0]}function wt(t,e,n){for(var i={},a=(V.each(e,function(t,e){if(null!==e){var t=t.replace(/([A-Z])/g," $1").split(" "),n=(i[t[0]]||(i[t[0]]={}),1===t.length?"full":t[1].toLowerCase()),a=i[t[0]],r=function(e,n){V.isPlainObject(n)?Object.keys(n).map(function(t){e.push({feature:t,opts:n[t]})}):e.push(n)};if(a[n]&&a[n].contents||(a[n]={contents:[]}),Array.isArray(e))for(var o=0;o<e.length;o++)r(a[n].contents,e[o]);else r(a[n].contents,e);Array.isArray(a[n].contents)||(a[n].contents=[a[n].contents])}}),Object.keys(i).map(function(t){return 0!==t.indexOf(n)?null:{name:t,val:i[t]}}).filter(function(t){return null!==t})),r=(a.sort(function(t,e){t=+t.name.replace(/[^0-9]/g,"");return+e.name.replace(/[^0-9]/g,"")-t}),"bottom"===n&&a.reverse(),[]),o=0,l=a.length;o<l;o++)a[o].val.full&&(r.push({full:a[o].val.full}),_t(t,r[r.length-1]),delete a[o].val.full),Object.keys(a[o].val).length&&(r.push(a[o].val),_t(t,r[r.length-1]));return r}function _t(o,i){function l(t,e){return C.features[t]||Z(o,0,"Unknown feature: "+t),C.features[t].apply(this,[o,e])}V.each(i,function(t){for(var e,n=i[t].contents,a=0,r=n.length;a<r;a++)n[a]&&("string"==typeof n[a]?n[a]=l(n[a],null):V.isPlainObject(n[a])?n[a]=l(n[a].feature,n[a].opts):"function"==typeof n[a].node?n[a]=n[a].node(o):"function"==typeof n[a]&&(e=n[a](o),n[a]="function"==typeof e.node?e.node():e))})}function Ct(e){var a,t=e.oClasses,n=V(e.nTable),r=V("<div/>").attr({id:e.sTableId+"_wrapper",class:t.container}).insertBefore(n);if(e.nTableWrapper=r[0],e.sDom)for(var o,i,l,s,u,c,d=e,t=e.sDom,f=r,h=t.match(/(".*?")|('.*?')|./g),p=0;p<h.length;p++)o=null,"<"==(i=h[p])?(l=V("<div/>"),"'"!=(s=h[p+1])[0]&&'"'!=s[0]||(s=s.replace(/['"]/g,""),u="",-1!=s.indexOf(".")?(c=s.split("."),u=c[0],c=c[1]):"#"==s[0]?u=s:c=s,l.attr("id",u.substring(1)).addClass(c),p++),f.append(l),f=l):">"==i?f=f.parent():"t"==i?o=Wt(d):$.ext.feature.forEach(function(t){i==t.cFeature&&(o=t.fnInit(d))}),o&&f.append(o);else{var n=wt(e,e.layout,"top"),t=wt(e,e.layout,"bottom"),g=te(e,"layout");n.forEach(function(t){g(e,r,t)}),g(e,r,{full:{table:!0,contents:[Wt(e)]}}),t.forEach(function(t){g(e,r,t)})}var n=e,t=n.nTable,v=""!==n.oScroll.sX||""!==n.oScroll.sY;n.oFeatures.bProcessing&&(a=V("<div/>",{id:n.sTableId+"_processing",class:n.oClasses.processing.container,role:"status"}).html(n.oLanguage.sProcessing).append("<div><div></div><div></div><div></div><div></div></div>"),v?a.prependTo(V("div.dt-scroll",n.nTableWrapper)):a.insertBefore(t),V(t).on("processing.dt.DT",function(t,e,n){a.css("display",n?"block":"none")}))}function It(t,e,n){for(var a,r,o,i,l,s,u=t.aoColumns,c=V(e).children("tr"),d=e&&"thead"===e.nodeName.toLowerCase(),f=[],h=0,p=c.length;h<p;h++)f.push([]);for(h=0,p=c.length;h<p;h++)for(r=(a=c[h]).firstChild;r;){if("TD"==r.nodeName.toUpperCase()||"TH"==r.nodeName.toUpperCase()){var g,v,m,b,y,D=[];for(b=(b=+r.getAttribute("colspan"))&&0!=b&&1!=b?b:1,y=(y=+r.getAttribute("rowspan"))&&0!=y&&1!=y?y:1,l=function(t,e,n){for(var a=t[e];a[n];)n++;return n}(f,h,0),s=1==b,n&&(s&&(ot(t,l,V(r).data()),g=u[l],v=r.getAttribute("width")||null,(m=r.style.width.match(/width:\s*(\d+[pxem%]+)/))&&(v=m[1]),g.sWidthOrig=g.sWidth||v,d?(null===g.sTitle||g.autoTitle||(r.innerHTML=g.sTitle),!g.sTitle&&s&&(g.sTitle=I(r.innerHTML),g.autoTitle=!0)):g.footer&&(r.innerHTML=g.footer),g.ariaTitle||(g.ariaTitle=V(r).attr("aria-label")||g.sTitle),g.className)&&V(r).addClass(g.className),0===V("span.dt-column-title",r).length&&V("<span>").addClass("dt-column-title").append(r.childNodes).appendTo(r),d)&&0===V("span.dt-column-order",r).length&&V("<span>").addClass("dt-column-order").appendTo(r),i=0;i<b;i++){for(o=0;o<y;o++)f[h+o][l+i]={cell:r,unique:s},f[h+o].row=a;D.push(l+i)}r.setAttribute("data-dt-column",x(D).join(","))}r=r.nextSibling}return f}function At(n,t,a){function e(t){var e=n.jqXHR?n.jqXHR.status:null;(null===t||"number"==typeof e&&204==e)&&Lt(n,t={},[]),(e=t.error||t.sError)&&Z(n,0,e),n.json=t,tt(n,null,"xhr",[n,t,n.jqXHR],!0),a(t)}var r,o=n.ajax,i=n.oInstance,l=(V.isPlainObject(o)&&o.data&&(l="function"==typeof(r=o.data)?r(t,n):r,t="function"==typeof r&&l?l:V.extend(!0,t,l),delete o.data),{url:"string"==typeof o?o:"",data:t,success:e,dataType:"json",cache:!1,type:n.sServerMethod,error:function(t,e){-1===tt(n,null,"xhr",[n,null,n.jqXHR],!0).indexOf(!0)&&("parsererror"==e?Z(n,0,"Invalid JSON response",1):4===t.readyState&&Z(n,0,"Ajax error",7)),w(n,!1)}});V.isPlainObject(o)&&V.extend(l,o),n.oAjaxData=t,tt(n,null,"preXhr",[n,t,l],!0),"function"==typeof o?n.jqXHR=o.call(i,t,e,n):""===o.url?(i={},$.util.set(o.dataSrc)(i,[]),e(i)):(n.jqXHR=V.ajax(l),r&&(o.data=r))}function Lt(t,e,n){var a="data";if(V.isPlainObject(t.ajax)&&void 0!==t.ajax.dataSrc&&("string"==typeof(t=t.ajax.dataSrc)||"function"==typeof t?a=t:void 0!==t.data&&(a=t.data)),!n)return"data"===a?e.aaData||e[a]:""!==a?J(a)(e):e;v(a)(e,n)}function Ft(t,e,n){var t=V.isPlainObject(t.ajax)?t.ajax.dataSrc:null;return t&&t[e]?J(t[e])(n):(t="","draw"===e?t="sEcho":"recordsTotal"===e?t="iTotalRecords":"recordsFiltered"===e&&(t="iTotalDisplayRecords"),void 0!==n[t]?n[t]:n[e])}function Nt(n,t){var e=n.aoPreSearchCols;if(B(n),"ssp"!=et(n)){for(var a,r,o,i,l,s=n,u=s.aoColumns,c=s.aoData,d=0;d<c.length;d++)if(c[d]&&!(l=c[d])._aFilterData){for(o=[],a=0,r=u.length;a<r;a++)u[a].bSearchable?"string"!=typeof(i=null===(i=G(s,d,a,"filter"))?"":i)&&i.toString&&(i=i.toString()):i="",i.indexOf&&-1!==i.indexOf("&")&&(Rt.innerHTML=i,i=Ot?Rt.textContent:Rt.innerText),i.replace&&(i=i.replace(/[\r\n\u2028]/g,"")),o.push(i);l._aFilterData=o,l._sFilterRow=o.join(" "),0}n.aiDisplay=n.aiDisplayMaster.slice(),jt(n.aiDisplay,n,t.search,t),V.each(n.searchFixed,function(t,e){jt(n.aiDisplay,n,e,{})});for(var f=0;f<e.length;f++){var h=e[f];jt(n.aiDisplay,n,h.search,h,f),V.each(n.aoColumns[f].searchFixed,function(t,e){jt(n.aiDisplay,n,e,{},f)})}for(var p,g,v=n,m=$.ext.search,b=v.aiDisplay,y=0,D=m.length;y<D;y++){for(var x=[],S=0,T=b.length;S<T;S++)g=b[S],p=v.aoData[g],m[y](v,p._aFilterData,g,p._aData,S)&&x.push(g);b.length=0,b.push.apply(b,x)}}n.bFiltered=!0,tt(n,null,"search",[n])}function jt(t,e,n,a,r){if(""!==n){for(var o=0,i=[],l="function"==typeof n?n:null,s=n instanceof RegExp?n:l?null:function(t,e){var a=[],e=V.extend({},{boundary:!1,caseInsensitive:!0,exact:!1,regex:!1,smart:!0},e);"string"!=typeof t&&(t=t.toString());if(t=O(t),e.exact)return new RegExp("^"+Pt(t)+"$",e.caseInsensitive?"i":"");{var n,r,o;t=e.regex?t:Pt(t),e.smart&&(n=(t.match(/!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g)||[""]).map(function(t){var e,n=!1;return"!"===t.charAt(0)&&(n=!0,t=t.substring(1)),'"'===t.charAt(0)?t=(e=t.match(/^"(.*)"$/))?e[1]:t:"“"===t.charAt(0)&&(t=(e=t.match(/^\u201C(.*)\u201D$/))?e[1]:t),n&&(1<t.length&&a.push("(?!"+t+")"),t=""),t.replace(/"/g,"")}),r=a.length?a.join(""):"",o=e.boundary?"\\b":"",t="^(?=.*?"+o+n.join(")(?=.*?"+o)+")("+r+".)*$")}return new RegExp(t,e.caseInsensitive?"i":"")}(n,a),o=0;o<t.length;o++){var u=e.aoData[t[o]],c=void 0===r?u._sFilterRow:u._aFilterData[r];(l&&l(c,u._aData,t[o],r)||s&&s.test(c))&&i.push(t[o])}for(t.length=i.length,o=0;o<i.length;o++)t[o]=i[o]}}var Pt=$.util.escapeRegex,Rt=V("<div>")[0],Ot=void 0!==Rt.textContent;function Et(n){var a,t,e,r,o,i,l=n.iInitDisplayStart;n.bInitialised?(Dt(n,"header"),Dt(n,"footer"),St(n,n.aoHeader),St(n,n.aoFooter),Ct(n),e=(t=n).nTHead,i=e.querySelectorAll("tr"),r=t.bSortCellsTop,o=':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])',!0===r?e=i[0]:!1===r&&(e=i[i.length-1]),Vt(t,e,e===t.nTHead?"tr"+o+" th"+o+", tr"+o+" td"+o:"th"+o+", td"+o),Ut(t,r=[],t.aaSorting),t.aaSorting=r,Bt(n),w(n,!0),tt(n,null,"preInit",[n],!0),s(n),"ssp"!=(i=et(n))&&("ajax"==i?At(n,{},function(t){var e=Lt(n,t);for(a=0;a<e.length;a++)Y(n,e[a]);n.iInitDisplayStart=l,s(n),w(n,!1),kt(n)}):(kt(n),w(n,!1)))):setTimeout(function(){Et(n)},200)}function kt(t){var e;t._bInitComplete||(e=[t,t.json],t._bInitComplete=!0,M(t),tt(t,null,"plugin-init",e,!0),tt(t,"aoInitComplete","init",e,!0))}function Mt(t,e){e=parseInt(e,10);t._iDisplayLength=e,Kt(t),tt(t,null,"length",[t,e])}function Ht(t,e,n){var a=t._iDisplayStart,r=t._iDisplayLength,o=t.fnRecordsDisplay();if(0===o||-1===r)a=0;else if("number"==typeof e)o<(a=e*r)&&(a=0);else if("first"==e)a=0;else if("previous"==e)(a=0<=r?a-r:0)<0&&(a=0);else if("next"==e)a+r<o&&(a+=r);else if("last"==e)a=Math.floor((o-1)/r)*r;else{if("ellipsis"===e)return;Z(t,0,"Unknown paging action: "+e,5)}o=t._iDisplayStart!==a;t._iDisplayStart=a,tt(t,null,o?"page":"page-nc",[t]),o&&n&&S(t)}function w(t,e){tt(t,null,"processing",[t,e])}function Wt(t){var e,n,a,r,o,i,l,s,u,c,d,f,h,p=V(t.nTable),g=t.oScroll;return""===g.sX&&""===g.sY?t.nTable:(e=g.sX,n=g.sY,a=t.oClasses.scrolling,o=(r=t.captionNode)?r._captionSide:null,u=V(p[0].cloneNode(!1)),i=V(p[0].cloneNode(!1)),c=function(t){return t?A(t):null},(l=p.children("tfoot")).length||(l=null),u=V(s="<div/>",{class:a.container}).append(V(s,{class:a.header.self}).css({overflow:"hidden",position:"relative",border:0,width:e?c(e):"100%"}).append(V(s,{class:a.header.inner}).css({"box-sizing":"content-box",width:g.sXInner||"100%"}).append(u.removeAttr("id").css("margin-left",0).append("top"===o?r:null).append(p.children("thead"))))).append(V(s,{class:a.body}).css({position:"relative",overflow:"auto",width:c(e)}).append(p)),l&&u.append(V(s,{class:a.footer.self}).css({overflow:"hidden",border:0,width:e?c(e):"100%"}).append(V(s,{class:a.footer.inner}).append(i.removeAttr("id").css("margin-left",0).append("bottom"===o?r:null).append(p.children("tfoot"))))),c=u.children(),d=c[0],f=c[1],h=l?c[2]:null,V(f).on("scroll.DT",function(){var t=this.scrollLeft;d.scrollLeft=t,l&&(h.scrollLeft=t)}),V("th, td",d).on("focus",function(){var t=d.scrollLeft;f.scrollLeft=t,l&&(f.scrollLeft=t)}),V(f).css("max-height",n),g.bCollapse||V(f).css("height",n),t.nScrollHead=d,t.nScrollBody=f,t.nScrollFoot=h,t.aoDrawCallback.push(Xt),u[0])}function Xt(e){var t=e.oScroll.iBarWidth,n=V(e.nScrollHead).children("div"),a=n.children("table"),r=e.nScrollBody,o=V(r),i=V(e.nScrollFoot).children("div"),l=i.children("table"),s=V(e.nTHead),u=V(e.nTable),c=e.nTFoot&&V("th, td",e.nTFoot).length?V(e.nTFoot):null,d=e.oBrowser,f=r.scrollHeight>r.clientHeight;if(e.scrollBarVis!==f&&void 0!==e.scrollBarVis)e.scrollBarVis=f,M(e);else{if(e.scrollBarVis=f,u.children("thead, tfoot").remove(),(f=s.clone().prependTo(u)).find("th, td").removeAttr("tabindex"),f.find("[id]").removeAttr("id"),c&&(v=c.clone().prependTo(u)).find("[id]").removeAttr("id"),e.aiDisplay.length)for(var h=u.children("tbody").eq(0).children("tr").eq(0).children("th, td").map(function(t){return{idx:H(e,t),width:V(this).outerWidth()}}),p=0;p<h.length;p++){var g=e.aoColumns[h[p].idx].colEl[0];g.style.width.replace("px","")!==h[p].width&&(g.style.width=h[p].width+"px")}a.find("colgroup").remove(),a.append(e.colgroup.clone()),c&&(l.find("colgroup").remove(),l.append(e.colgroup.clone())),V("th, td",f).each(function(){V(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')}),c&&V("th, td",v).each(function(){V(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')});var s=Math.floor(u.height())>r.clientHeight||"scroll"==o.css("overflow-y"),f="padding"+(d.bScrollbarLeft?"Left":"Right"),v=u.outerWidth();a.css("width",A(v)),n.css("width",A(v)).css(f,s?t+"px":"0px"),c&&(l.css("width",A(v)),i.css("width",A(v)).css(f,s?t+"px":"0px")),u.children("colgroup").prependTo(u),o.trigger("scroll"),!e.bSorted&&!e.bFiltered||e._drawHold||(r.scrollTop=0)}}function A(t){return null===t?"0px":"number"==typeof t?t<0?"0px":t+"px":t.match(/\d$/)?t+"px":t}function Bt(t){var e=t.aoColumns;for(t.colgroup.empty(),a=0;a<e.length;a++)e[a].bVisible&&t.colgroup.append(e[a].colEl)}function Vt(o,t,e,i,l){Qt(t,e,function(t){var e=!1,n=void 0===i?st(t.target):[i];if(n.length){for(var a=0,r=n.length;a<r;a++)if(!1!==function(t,e,n,a){function r(t,e){var n=t._idx;return(n=void 0===n?s.indexOf(t[1]):n)+1<s.length?n+1:e?null:0}var o,i=t.aoColumns[e],l=t.aaSorting,s=i.asSorting;if(!i.bSortable)return!1;"number"==typeof l[0]&&(l=t.aaSorting=[l]);(a||n)&&t.oFeatures.bSortMulti?-1!==(i=f(l,"0").indexOf(e))?null===(o=null===(o=r(l[i],!0))&&1===l.length?0:o)?l.splice(i,1):(l[i][1]=s[o],l[i]._idx=o):(a?l.push([e,s[0],0]):l.push([e,l[0][1],0]),l[l.length-1]._idx=0):l.length&&l[0][0]==e?(o=r(l[0]),l.length=1,l[0][1]=s[o],l[0]._idx=o):(l.length=0,l.push([e,s[0]]),l[0]._idx=0)}(o,n[a],a,t.shiftKey)&&(e=!0),1===o.aaSorting.length&&""===o.aaSorting[0][1])break;e&&(w(o,!0),setTimeout(function(){zt(o),qt(o,o.aiDisplay),w(o,!1),s(o,!1,!1),l&&l()},0))}})}function qt(t,e){if(!(e.length<2)){for(var n=t.aiDisplayMaster,a={},r={},o=0;o<n.length;o++)a[n[o]]=o;for(o=0;o<e.length;o++)r[e[o]]=a[e[o]];e.sort(function(t,e){return r[t]-r[e]})}}function Ut(n,a,t){function e(t){var e;V.isPlainObject(t)?void 0!==t.idx?a.push([t.idx,t.dir]):t.name&&-1!==(e=f(n.aoColumns,"sName").indexOf(t.name))&&a.push([e,t.dir]):a.push(t)}if(V.isPlainObject(t))e(t);else if(t.length&&"number"==typeof t[0])e(t);else if(t.length)for(var r=0;r<t.length;r++)e(t[r])}function $t(t){var e,n,a,r,o,i,l,s=[],u=$.ext.type.order,c=t.aoColumns,d=t.aaSortingFixed,f=V.isPlainObject(d),h=[];if(t.oFeatures.bSort)for(Array.isArray(d)&&Ut(t,h,d),f&&d.pre&&Ut(t,h,d.pre),Ut(t,h,t.aaSorting),f&&d.post&&Ut(t,h,d.post),e=0;e<h.length;e++)if(c[l=h[e][0]])for(n=0,a=(r=c[l].aDataSort).length;n<a;n++)i=c[o=r[n]].sType||"string",void 0===h[e]._idx&&(h[e]._idx=c[o].asSorting.indexOf(h[e][1])),h[e][1]&&s.push({src:l,col:o,dir:h[e][1],index:h[e]._idx,type:i,formatter:u[i+"-pre"],sorter:u[i+"-"+h[e][1]]});return s}function zt(t,e,n){var a,r,o,i,l,c,d=[],s=$.ext.type.order,f=t.aoData,u=t.aiDisplayMaster;for(B(t),void 0!==e?(l=t.aoColumns[e],c=[{src:e,col:e,dir:n,index:0,type:l.sType,formatter:s[l.sType+"-pre"],sorter:s[l.sType+"-"+n]}],u=u.slice()):c=$t(t),a=0,r=c.length;a<r;a++){i=c[a],S=x=D=g=p=h=y=b=m=v=void 0;var h,p,g,v=t,m=i.col,b=v.aoColumns[m],y=$.ext.order[b.sSortDataType];y&&(h=y.call(v.oInstance,v,m,T(v,m)));for(var D=$.ext.type.order[b.sType+"-pre"],x=v.aoData,S=0;S<x.length;S++)x[S]&&((p=x[S])._aSortData||(p._aSortData=[]),p._aSortData[m]&&!y||(g=y?h[S]:G(v,S,m,"sort"),p._aSortData[m]=D?D(g,v):g))}if("ssp"!=et(t)&&0!==c.length){for(a=0,o=u.length;a<o;a++)d[a]=a;c.length&&"desc"===c[0].dir&&d.reverse(),u.sort(function(t,e){for(var n,a,r,o,i=c.length,l=f[t]._aSortData,s=f[e]._aSortData,u=0;u<i;u++)if(n=l[(o=c[u]).col],a=s[o.col],o.sorter){if(0!==(r=o.sorter(n,a)))return r}else if(0!==(r=n<a?-1:a<n?1:0))return"asc"===o.dir?r:-r;return(n=d[t])<(a=d[e])?-1:a<n?1:0})}else 0===c.length&&u.sort(function(t,e){return t<e?-1:e<t?1:0});return void 0===e&&(t.bSorted=!0,tt(t,null,"order",[t,c])),u}function Yt(t){var e,n,a,r=t.aLastSort,o=t.oClasses.order.position,i=$t(t),l=t.oFeatures;if(l.bSort&&l.bSortClasses){for(e=0,n=r.length;e<n;e++)a=r[e].src,V(f(t.aoData,"anCells",a)).removeClass(o+(e<2?e+1:3));for(e=0,n=i.length;e<n;e++)a=i[e].src,V(f(t.aoData,"anCells",a)).addClass(o+(e<2?e+1:3))}t.aLastSort=i}function Gt(n){var t;n._bLoadingState||(t={time:+new Date,start:n._iDisplayStart,length:n._iDisplayLength,order:V.extend(!0,[],n.aaSorting),search:V.extend({},n.oPreviousSearch),columns:n.aoColumns.map(function(t,e){return{visible:t.bVisible,search:V.extend({},n.aoPreSearchCols[e])}})},n.oSavedState=t,tt(n,"aoStateSaveParams","stateSaveParams",[n,t]),n.oFeatures.bStateSave&&!n.bDestroying&&n.fnStateSaveCallback.call(n.oInstance,n,t))}function Jt(n,t,e){var a,r,o=n.aoColumns,i=(n._bLoadingState=!0,n._bInitComplete?new $.Api(n):null);if(t&&t.time){var l=n.iStateDuration;if(0<l&&t.time<+new Date-1e3*l)n._bLoadingState=!1;else if(-1!==tt(n,"aoStateLoadParams","stateLoadParams",[n,t]).indexOf(!1))n._bLoadingState=!1;else if(t.columns&&o.length!==t.columns.length)n._bLoadingState=!1;else{if(n.oLoadedState=V.extend(!0,{},t),tt(n,null,"stateLoadInit",[n,t],!0),void 0!==t.length&&(i?i.page.len(t.length):n._iDisplayLength=t.length),void 0!==t.start&&(null===i?(n._iDisplayStart=t.start,n.iInitDisplayStart=t.start):Ht(n,t.start/n._iDisplayLength)),void 0!==t.order&&(n.aaSorting=[],V.each(t.order,function(t,e){n.aaSorting.push(e[0]>=o.length?[0,e[1]]:e)})),void 0!==t.search&&V.extend(n.oPreviousSearch,t.search),t.columns){for(a=0,r=t.columns.length;a<r;a++){var s=t.columns[a];void 0!==s.visible&&(i?i.column(a).visible(s.visible,!1):o[a].bVisible=s.visible),void 0!==s.search&&V.extend(n.aoPreSearchCols[a],s.search)}i&&i.columns.adjust()}n._bLoadingState=!1,tt(n,"aoStateLoaded","stateLoaded",[n,t])}}else n._bLoadingState=!1;e()}function Z(t,e,n,a){if(n="DataTables warning: "+(t?"table id="+t.sTableId+" - ":"")+n,a&&(n+=". For more information about this error, please see https://datatables.net/tn/"+a),e)q.console&&console.log&&console.log(n);else{e=$.ext,e=e.sErrMode||e.errMode;if(t&&tt(t,null,"dt-error",[t,a,n],!0),"alert"==e)alert(n);else{if("throw"==e)throw new Error(n);"function"==typeof e&&e(t,a,n)}}}function Q(n,a,t,e){Array.isArray(t)?V.each(t,function(t,e){Array.isArray(e)?Q(n,a,e[0],e[1]):Q(n,a,e)}):(void 0===e&&(e=t),void 0!==a[t]&&(n[e]=a[t]))}function Zt(t,e,n){var a,r;for(r in e)Object.prototype.hasOwnProperty.call(e,r)&&(a=e[r],V.isPlainObject(a)?(V.isPlainObject(t[r])||(t[r]={}),V.extend(!0,t[r],a)):n&&"data"!==r&&"aaData"!==r&&Array.isArray(a)?t[r]=a.slice():t[r]=a);return t}function Qt(t,e,n){V(t).on("click.DT",e,function(t){n(t)}).on("keypress.DT",e,function(t){13===t.which&&(t.preventDefault(),n(t))}).on("selectstart.DT",e,function(){return!1})}function K(t,e,n){n&&t[e].push(n)}function tt(e,t,n,a,r){var o=[];return t&&(o=e[t].slice().reverse().map(function(t){return t.apply(e.oInstance,a)})),null!==n&&(t=V.Event(n+".dt"),n=V(e.nTable),t.dt=e.api,n[r?"trigger":"triggerHandler"](t,a),r&&0===n.parents("body").length&&V("body").trigger(t,a),o.push(t.result)),o}function Kt(t){var e=t._iDisplayStart,n=t.fnDisplayEnd(),a=t._iDisplayLength;n<=e&&(e=n-a),e-=e%a,t._iDisplayStart=e=-1===a||e<0?0:e}function te(t,e){var t=t.renderer,n=$.ext.renderer[e];return V.isPlainObject(t)&&t[e]?n[t[e]]||n._:"string"==typeof t&&n[t]||n._}function et(t){return t.oFeatures.bServerSide?"ssp":t.ajax?"ajax":"dom"}function ee(t,e,n){var a=t.fnFormatNumber,r=t._iDisplayStart+1,o=t._iDisplayLength,i=t.fnRecordsDisplay(),l=t.fnRecordsTotal(),s=-1===o;return e.replace(/_START_/g,a.call(t,r)).replace(/_END_/g,a.call(t,t.fnDisplayEnd())).replace(/_MAX_/g,a.call(t,l)).replace(/_TOTAL_/g,a.call(t,i)).replace(/_PAGE_/g,a.call(t,s?1:Math.ceil(r/o))).replace(/_PAGES_/g,a.call(t,s?1:Math.ceil(i/o))).replace(/_ENTRIES_/g,t.api.i18n("entries","",n)).replace(/_ENTRIES-MAX_/g,t.api.i18n("entries","",l)).replace(/_ENTRIES-TOTAL_/g,t.api.i18n("entries","",i))}var ne=[],n=Array.prototype;U=function(t,e){if(!(this instanceof U))return new U(t,e);function n(t){t=t,e=$.settings,a=f(e,"nTable");var n,e,a,r=t?t.nTable&&t.oFeatures?[t]:t.nodeName&&"table"===t.nodeName.toLowerCase()?-1!==(r=a.indexOf(t))?[e[r]]:null:t&&"function"==typeof t.settings?t.settings().toArray():("string"==typeof t?n=V(t).get():t instanceof V&&(n=t.get()),n?e.filter(function(t,e){return n.includes(a[e])}):void 0):[];r&&o.push.apply(o,r)}var o=[];if(Array.isArray(t))for(var a=0,r=t.length;a<r;a++)n(t[a]);else n(t);this.context=1<o.length?x(o):o,e&&this.push.apply(this,e),this.selector={rows:null,cols:null,opts:null},U.extend(this,this,ne)},$.Api=U,V.extend(U.prototype,{any:function(){return 0!==this.count()},context:[],count:function(){return this.flatten().length},each:function(t){for(var e=0,n=this.length;e<n;e++)t.call(this,this[e],e,this);return this},eq:function(t){var e=this.context;return e.length>t?new U(e[t],this[t]):null},filter:function(t){t=n.filter.call(this,t,this);return new U(this.context,t)},flatten:function(){var t=[];return new U(this.context,t.concat.apply(t,this.toArray()))},get:function(t){return this[t]},join:n.join,includes:function(t){return-1!==this.indexOf(t)},indexOf:n.indexOf,iterator:function(t,e,n,a){var r,o,i,l,s,u,c,d,f=[],h=this.context,p=this.selector;for("string"==typeof t&&(a=n,n=e,e=t,t=!1),o=0,i=h.length;o<i;o++){var g=new U(h[o]);if("table"===e)void 0!==(r=n.call(g,h[o],o))&&f.push(r);else if("columns"===e||"rows"===e)void 0!==(r=n.call(g,h[o],this[o],o))&&f.push(r);else if("every"===e||"column"===e||"column-rows"===e||"row"===e||"cell"===e)for(c=this[o],"column-rows"===e&&(u=he(h[o],p.opts)),l=0,s=c.length;l<s;l++)d=c[l],void 0!==(r="cell"===e?n.call(g,h[o],d.row,d.column,o,l):n.call(g,h[o],d,o,l,u))&&f.push(r)}return f.length||a?((t=(a=new U(h,t?f.concat.apply([],f):f)).selector).rows=p.rows,t.cols=p.cols,t.opts=p.opts,a):this},lastIndexOf:n.lastIndexOf,length:0,map:function(t){t=n.map.call(this,t,this);return new U(this.context,t)},pluck:function(t){var e=$.util.get(t);return this.map(function(t){return e(t)})},pop:n.pop,push:n.push,reduce:n.reduce,reduceRight:n.reduceRight,reverse:n.reverse,selector:null,shift:n.shift,slice:function(){return new U(this.context,this)},sort:n.sort,splice:n.splice,toArray:function(){return n.slice.call(this)},to$:function(){return V(this)},toJQuery:function(){return V(this)},unique:function(){return new U(this.context,x(this.toArray()))},unshift:n.unshift}),q.__apiStruct=ne,U.extend=function(t,e,n){if(n.length&&e&&(e instanceof U||e.__dt_wrapper))for(var a,r=0,o=n.length;r<o;r++)"__proto__"!==(a=n[r]).name&&(e[a.name]="function"===a.type?function(e,n,a){return function(){var t=n.apply(e||this,arguments);return U.extend(t,t,a.methodExt),t}}(t,a.val,a):"object"===a.type?{}:a.val,e[a.name].__dt_wrapper=!0,U.extend(t,e[a.name],a.propExt))},U.register=e=function(t,e){if(Array.isArray(t))for(var n=0,a=t.length;n<a;n++)U.register(t[n],e);else for(var r=t.split("."),o=ne,i=0,l=r.length;i<l;i++){var s,u,c=function(t,e){for(var n=0,a=t.length;n<a;n++)if(t[n].name===e)return t[n];return null}(o,u=(s=-1!==r[i].indexOf("()"))?r[i].replace("()",""):r[i]);c||o.push(c={name:u,val:{},methodExt:[],propExt:[],type:"object"}),i===l-1?(c.val=e,c.type="function"==typeof e?"function":V.isPlainObject(e)?"object":"other"):o=s?c.methodExt:c.propExt}},U.registerPlural=t=function(t,e,n){U.register(t,n),U.register(e,function(){var t=n.apply(this,arguments);return t===this?this:t instanceof U?t.length?Array.isArray(t[0])?new U(t.context,t[0]):t[0]:void 0:t})};function ae(t,e){var n,a;return Array.isArray(t)?(n=[],t.forEach(function(t){t=ae(t,e);n.push.apply(n,t)}),n.filter(function(t){return t})):"number"==typeof t?[e[t]]:(a=e.map(function(t){return t.nTable}),V(a).filter(t).map(function(){var t=a.indexOf(this);return e[t]}).toArray())}function re(r,o,t){var e,n;t&&(e=new U(r)).one("draw",function(){t(e.ajax.json())}),"ssp"==et(r)?s(r,o):(w(r,!0),(n=r.jqXHR)&&4!==n.readyState&&n.abort(),At(r,{},function(t){pt(r);for(var e=Lt(r,t),n=0,a=e.length;n<a;n++)Y(r,e[n]);s(r,o),kt(r),w(r,!1)}))}function oe(t,e,n,a,r){for(var o,i,l,s,u=[],c=typeof e,d=0,f=(e=e&&"string"!=c&&"function"!=c&&void 0!==e.length?e:[e]).length;d<f;d++)for(l=0,s=(i=e[d]&&e[d].split&&!e[d].match(/[[(:]/)?e[d].split(","):[e[d]]).length;l<s;l++)(o=(o=n("string"==typeof i[l]?i[l].trim():i[l])).filter(function(t){return null!=t}))&&o.length&&(u=u.concat(o));var h=C.selector[t];if(h.length)for(d=0,f=h.length;d<f;d++)u=h[d](a,r,u);return x(u)}function ie(t){return(t=t||{}).filter&&void 0===t.search&&(t.search=t.filter),V.extend({search:"none",order:"current",page:"all"},t)}function le(t){var e=new U(t.context[0]);return t.length&&e.push(t[0]),e.selector=t.selector,e.length&&1<e[0].length&&e[0].splice(1),e}e("tables()",function(t){return null!=t?new U(ae(t,this.context)):this}),e("table()",function(t){var t=this.tables(t),e=t.context;return e.length?new U(e[0]):t}),[["nodes","node","nTable"],["body","body","nTBody"],["header","header","nTHead"],["footer","footer","nTFoot"]].forEach(function(e){t("tables()."+e[0]+"()","table()."+e[1]+"()",function(){return this.iterator("table",function(t){return t[e[2]]},1)})}),[["header","aoHeader"],["footer","aoFooter"]].forEach(function(n){e("table()."+n[0]+".structure()",function(t){var t=this.columns(t).indexes().flatten(),e=this.context[0];return xt(e,e[n[1]],t)})}),t("tables().containers()","table().container()",function(){return this.iterator("table",function(t){return t.nTableWrapper},1)}),e("tables().every()",function(n){var a=this;return this.iterator("table",function(t,e){n.call(a.table(e),e)})}),e("caption()",function(r,o){var t,e=this.context;return void 0===r?(t=e[0].captionNode)&&e.length?t.innerHTML:null:this.iterator("table",function(t){var e=V(t.nTable),n=V(t.captionNode),a=V(t.nTableWrapper);n.length||(n=V("<caption/>").html(r),t.captionNode=n[0],o)||(e.prepend(n),o=n.css("caption-side")),n.html(r),o&&(n.css("caption-side",o),n[0]._captionSide=o),(a.find("div.dataTables_scroll").length?(t="top"===o?"Head":"Foot",a.find("div.dataTables_scroll"+t+" table")):e).prepend(n)},1)}),e("caption.node()",function(){var t=this.context;return t.length?t[0].captionNode:null}),e("draw()",function(e){return this.iterator("table",function(t){"page"===e?S(t):s(t,!1===(e="string"==typeof e?"full-hold"!==e:e))})}),e("page()",function(e){return void 0===e?this.page.info().page:this.iterator("table",function(t){Ht(t,e)})}),e("page.info()",function(){var t,e,n,a,r;if(0!==this.context.length)return e=(t=this.context[0])._iDisplayStart,n=t.oFeatures.bPaginate?t._iDisplayLength:-1,a=t.fnRecordsDisplay(),{page:(r=-1===n)?0:Math.floor(e/n),pages:r?1:Math.ceil(a/n),start:e,end:t.fnDisplayEnd(),length:n,recordsTotal:t.fnRecordsTotal(),recordsDisplay:a,serverSide:"ssp"===et(t)}}),e("page.len()",function(e){return void 0===e?0!==this.context.length?this.context[0]._iDisplayLength:void 0:this.iterator("table",function(t){Mt(t,e)})}),e("ajax.json()",function(){var t=this.context;if(0<t.length)return t[0].json}),e("ajax.params()",function(){var t=this.context;if(0<t.length)return t[0].oAjaxData}),e("ajax.reload()",function(e,n){return this.iterator("table",function(t){re(t,!1===n,e)})}),e("ajax.url()",function(e){var t=this.context;return void 0===e?0===t.length?void 0:(t=t[0],V.isPlainObject(t.ajax)?t.ajax.url:t.ajax):this.iterator("table",function(t){V.isPlainObject(t.ajax)?t.ajax.url=e:t.ajax=e})}),e("ajax.url().load()",function(e,n){return this.iterator("table",function(t){re(t,!1===n,e)})});function se(o,i,t,e){function l(t,e){var n;if(Array.isArray(t)||t instanceof V)for(var a=0,r=t.length;a<r;a++)l(t[a],e);else t.nodeName&&"tr"===t.nodeName.toLowerCase()?(t.setAttribute("data-dt-row",i.idx),s.push(t)):(n=V("<tr><td></td></tr>").attr("data-dt-row",i.idx).addClass(e),V("td",n).addClass(e).html(t)[0].colSpan=W(o),s.push(n[0]))}var s=[];l(t,e),i._details&&i._details.detach(),i._details=V(s),i._detailsShow&&i._details.insertAfter(i.nTr)}function ue(t,e){var n=t.context;if(n.length&&t.length){var a=n[0].aoData[t[0]];if(a._details){(a._detailsShow=e)?(a._details.insertAfter(a.nTr),V(a.nTr).addClass("dt-hasChild")):(a._details.detach(),V(a.nTr).removeClass("dt-hasChild")),tt(n[0],null,"childRow",[e,t.row(t[0])]);var i=n[0],r=new U(i),a=".dt.DT_details",e="draw"+a,t="column-sizing"+a,a="destroy"+a,l=i.aoData;if(r.off(e+" "+t+" "+a),f(l,"_details").length>0){r.on(e,function(t,e){if(i!==e)return;r.rows({page:"current"}).eq(0).each(function(t){var e=l[t];if(e._detailsShow)e._details.insertAfter(e.nTr)})});r.on(t,function(t,e){if(i!==e)return;var n,a=W(e);for(var r=0,o=l.length;r<o;r++){n=l[r];if(n&&n._details)n._details.each(function(){var t=V(this).children("td");if(t.length==1)t.attr("colspan",a)})}});r.on(a,function(t,e){if(i!==e)return;for(var n=0,a=l.length;n<a;n++)if(l[n]&&l[n]._details)ve(r,n)})}ge(n)}}}function ce(t,e,n,a,r,o){for(var i=[],l=0,s=r.length;l<s;l++)i.push(G(t,r[l],e,o));return i}function de(t,e,n){var a=t.aoHeader;return a[void 0!==n?n:t.bSortCellsTop?0:a.length-1][e].cell}function fe(e,n){return function(t){return y(t)||"string"!=typeof t||(t=t.replace(d," "),e&&(t=I(t)),n&&(t=O(t,!1))),t}}var he=function(t,e){var n,a=[],r=t.aiDisplay,o=t.aiDisplayMaster,i=e.search,l=e.order;if("current"==e.page)for(u=t._iDisplayStart,c=t.fnDisplayEnd();u<c;u++)a.push(r[u]);else if("current"==l||"applied"==l){if("none"==i)a=o.slice();else if("applied"==i)a=r.slice();else if("removed"==i){for(var s={},u=0,c=r.length;u<c;u++)s[r[u]]=null;o.forEach(function(t){Object.prototype.hasOwnProperty.call(s,t)||a.push(t)})}}else if("index"==l||"original"==l)for(u=0,c=t.aoData.length;u<c;u++)t.aoData[u]&&("none"==i||-1===(n=r.indexOf(u))&&"removed"==i||0<=n&&"applied"==i)&&a.push(u);else if("number"==typeof l){var d=zt(t,l,"asc");if("none"===i)a=d;else for(u=0;u<d.length;u++)(-1===(n=r.indexOf(d[u]))&&"removed"==i||0<=n&&"applied"==i)&&a.push(d[u])}return a},pe=(e("rows()",function(n,a){void 0===n?n="":V.isPlainObject(n)&&(a=n,n=""),a=ie(a);var t=this.iterator("table",function(t){return e=oe("row",e=n,function(n){var t=g(n),a=r.aoData;if(null!==t&&!o)return[t];if(i=i||he(r,o),null!==t&&-1!==i.indexOf(t))return[t];if(null==n||""===n)return i;if("function"==typeof n)return i.map(function(t){var e=a[t];return n(t,e._aData,e.nTr)?t:null});if(n.nodeName)return t=n._DT_RowIndex,e=n._DT_CellIndex,void 0!==t?a[t]&&a[t].nTr===n?[t]:[]:e?a[e.row]&&a[e.row].nTr===n.parentNode?[e.row]:[]:(t=V(n).closest("*[data-dt-row]")).length?[t.data("dt-row")]:[];if("string"==typeof n&&"#"===n.charAt(0)){var e=r.aIds[n.replace(/^#/,"")];if(void 0!==e)return[e.idx]}t=b(m(r.aoData,i,"nTr"));return V(t).filter(n).map(function(){return this._DT_RowIndex}).toArray()},r=t,o=a),"current"!==o.order&&"applied"!==o.order||qt(r,e),e;var r,e,o,i},1);return t.selector.rows=n,t.selector.opts=a,t}),e("rows().nodes()",function(){return this.iterator("row",function(t,e){return t.aoData[e].nTr||void 0},1)}),e("rows().data()",function(){return this.iterator(!0,"rows",function(t,e){return m(t.aoData,e,"_aData")},1)}),t("rows().cache()","row().cache()",function(n){return this.iterator("row",function(t,e){t=t.aoData[e];return"search"===n?t._aFilterData:t._aSortData},1)}),t("rows().invalidate()","row().invalidate()",function(n){return this.iterator("row",function(t,e){gt(t,e,n)})}),t("rows().indexes()","row().index()",function(){return this.iterator("row",function(t,e){return e},1)}),t("rows().ids()","row().id()",function(t){for(var e=[],n=this.context,a=0,r=n.length;a<r;a++)for(var o=0,i=this[a].length;o<i;o++){var l=n[a].rowIdFn(n[a].aoData[this[a][o]]._aData);e.push((!0===t?"#":"")+l)}return new U(n,e)}),t("rows().remove()","row().remove()",function(){return this.iterator("row",function(t,e){var n=t.aoData,a=n[e],r=t.aiDisplayMaster.indexOf(e),r=(-1!==r&&t.aiDisplayMaster.splice(r,1),0<t._iRecordsDisplay&&t._iRecordsDisplay--,Kt(t),t.rowIdFn(a._aData));void 0!==r&&delete t.aIds[r],n[e]=null}),this}),e("rows.add()",function(o){var t=this.iterator("table",function(t){for(var e,n=[],a=0,r=o.length;a<r;a++)(e=o[a]).nodeName&&"TR"===e.nodeName.toUpperCase()?n.push(ut(t,e)[0]):n.push(Y(t,e));return n},1),e=this.rows(-1);return e.pop(),e.push.apply(e,t),e}),e("row()",function(t,e){return le(this.rows(t,e))}),e("row().data()",function(t){var e,n=this.context;return void 0===t?n.length&&this.length&&this[0].length?n[0].aoData[this[0]]._aData:void 0:((e=n[0].aoData[this[0]])._aData=t,Array.isArray(t)&&e.nTr&&e.nTr.id&&v(n[0].rowId)(t,e.nTr.id),gt(n[0],this[0],"data"),this)}),e("row().node()",function(){var t=this.context;if(t.length&&this.length&&this[0].length){t=t[0].aoData[this[0]];if(t&&t.nTr)return t.nTr}return null}),e("row.add()",function(e){e instanceof V&&e.length&&(e=e[0]);var t=this.iterator("table",function(t){return e.nodeName&&"TR"===e.nodeName.toUpperCase()?ut(t,e)[0]:Y(t,e)});return this.row(t[0])}),V(_).on("plugin-init.dt",function(t,e){var a=new U(e);a.on("stateSaveParams.DT",function(t,e,n){for(var a=e.rowIdFn,r=e.aiDisplayMaster,o=[],i=0;i<r.length;i++){var l=r[i],l=e.aoData[l];l._detailsShow&&o.push("#"+a(l._aData))}n.childRows=o}),a.on("stateLoaded.DT",function(t,e,n){pe(a,n)}),pe(a,a.state.loaded())}),function(t,e){e&&e.childRows&&t.rows(e.childRows.map(function(t){return t.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g,"$1\\:")})).every(function(){tt(t.settings()[0],null,"requestChild",[this])})}),ge=$.util.throttle(function(t){Gt(t[0])},500),ve=function(t,e){var n=t.context;n.length&&(e=n[0].aoData[void 0!==e?e:t[0]])&&e._details&&(e._details.remove(),e._detailsShow=void 0,e._details=void 0,V(e.nTr).removeClass("dt-hasChild"),ge(n))},me="row().child",be=me+"()",ye=(e(be,function(t,e){var n=this.context;return void 0===t?n.length&&this.length&&n[0].aoData[this[0]]?n[0].aoData[this[0]]._details:void 0:(!0===t?this.child.show():!1===t?ve(this):n.length&&this.length&&se(n[0],n[0].aoData[this[0]],t,e),this)}),e([me+".show()",be+".show()"],function(){return ue(this,!0),this}),e([me+".hide()",be+".hide()"],function(){return ue(this,!1),this}),e([me+".remove()",be+".remove()"],function(){return ve(this),this}),e(me+".isShown()",function(){var t=this.context;return t.length&&this.length&&t[0].aoData[this[0]]._detailsShow||!1}),/^([^:]+):(name|title|visIdx|visible)$/),be=(e("columns()",function(n,a){void 0===n?n="":V.isPlainObject(n)&&(a=n,n=""),a=ie(a);var t=this.iterator("table",function(t){return e=n,l=a,s=(i=t).aoColumns,u=f(s,"sName"),c=f(s,"sTitle"),t=$.util.get("[].[].cell")(i.aoHeader),d=x(E([],t)),oe("column",e,function(n){var a,t=g(n);if(""===n)return h(s.length);if(null!==t)return[0<=t?t:s.length+t];if("function"==typeof n)return a=he(i,l),s.map(function(t,e){return n(e,ce(i,e,0,0,a),de(i,e))?e:null});var r="string"==typeof n?n.match(ye):"";if(r)switch(r[2]){case"visIdx":case"visible":var e,o=parseInt(r[1],10);return o<0?[(e=s.map(function(t,e){return t.bVisible?e:null}))[e.length+o]]:[H(i,o)];case"name":return u.map(function(t,e){return t===r[1]?e:null});case"title":return c.map(function(t,e){return t===r[1]?e:null});default:return[]}return n.nodeName&&n._DT_CellIndex?[n._DT_CellIndex.column]:(t=V(d).filter(n).map(function(){return st(this)}).toArray()).length||!n.nodeName?t:(t=V(n).closest("*[data-dt-column]")).length?[t.data("dt-column")]:[]},i,l);var i,e,l,s,u,c,d},1);return t.selector.cols=n,t.selector.opts=a,t}),t("columns().header()","column().header()",function(n){return this.iterator("column",function(t,e){return de(t,e,n)},1)}),t("columns().footer()","column().footer()",function(n){return this.iterator("column",function(t,e){return t.aoFooter.length?t.aoFooter[void 0!==n?n:0][e].cell:null},1)}),t("columns().data()","column().data()",function(){return this.iterator("column-rows",ce,1)}),t("columns().render()","column().render()",function(o){return this.iterator("column-rows",function(t,e,n,a,r){return ce(t,e,0,0,r,o)},1)}),t("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(t,e){return t.aoColumns[e].mData},1)}),t("columns().cache()","column().cache()",function(o){return this.iterator("column-rows",function(t,e,n,a,r){return m(t.aoData,r,"search"===o?"_aFilterData":"_aSortData",e)},1)}),t("columns().init()","column().init()",function(){return this.iterator("column",function(t,e){return t.aoColumns[e]},1)}),t("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(t,e,n,a,r){return m(t.aoData,r,"anCells",e)},1)}),t("columns().titles()","column().title()",function(n,a){return this.iterator("column",function(t,e){"number"==typeof n&&(a=n,n=void 0);e=V("span.dt-column-title",this.column(e).header(a));return void 0!==n?(e.html(n),this):e.html()},1)}),t("columns().types()","column().type()",function(){return this.iterator("column",function(t,e){e=t.aoColumns[e].sType;return e||B(t),e},1)}),t("columns().visible()","column().visible()",function(n,a){var e=this,r=[],t=this.iterator("column",function(t,e){if(void 0===n)return t.aoColumns[e].bVisible;!function(t,e,n){var a,r,o=t.aoColumns,i=o[e],l=t.aoData;if(void 0===n)return i.bVisible;if(i.bVisible===n)return!1;if(n)for(var s=f(o,"bVisible").indexOf(!0,e+1),u=0,c=l.length;u<c;u++)l[u]&&(r=l[u].nTr,a=l[u].anCells,r)&&r.insertBefore(a[e],a[s]||null);else V(f(t.aoData,"anCells",e)).detach();return i.bVisible=n,Bt(t),!0}(t,e,n)||r.push(e)});return void 0!==n&&this.iterator("table",function(t){St(t,t.aoHeader),St(t,t.aoFooter),t.aiDisplay.length||V(t.nTBody).find("td[colspan]").attr("colspan",W(t)),Gt(t),e.iterator("column",function(t,e){r.includes(e)&&tt(t,null,"column-visibility",[t,e,n,a])}),r.length&&(void 0===a||a)&&e.columns.adjust()}),t}),t("columns().widths()","column().width()",function(){var t=this.columns(":visible").count(),t=V("<tr>").html("<td>"+Array(t).join("</td><td>")+"</td>"),n=(V(this.table().body()).append(t),t.children().map(function(){return V(this).outerWidth()}));return t.remove(),this.iterator("column",function(t,e){t=T(t,e);return null!==t?n[t]:0},1)}),t("columns().indexes()","column().index()",function(n){return this.iterator("column",function(t,e){return"visible"===n?T(t,e):e},1)}),e("columns.adjust()",function(){return this.iterator("table",function(t){M(t)},1)}),e("column.index()",function(t,e){var n;if(0!==this.context.length)return n=this.context[0],"fromVisible"===t||"toData"===t?H(n,e):"fromData"===t||"toVisible"===t?T(n,e):void 0}),e("column()",function(t,e){return le(this.columns(t,e))}),e("cells()",function(g,t,v){var a,r,o,i,l,s,e;return V.isPlainObject(g)&&(void 0===g.row?(v=g,g=null):(v=t,t=null)),V.isPlainObject(t)&&(v=t,t=null),null==t?this.iterator("table",function(t){return a=t,t=g,e=ie(v),d=a.aoData,f=he(a,e),n=b(m(d,f,"anCells")),h=V(E([],n)),p=a.aoColumns.length,oe("cell",t,function(t){var e,n="function"==typeof t;if(null==t||n){for(o=[],i=0,l=f.length;i<l;i++)for(r=f[i],s=0;s<p;s++)u={row:r,column:s},(!n||(c=d[r],t(u,G(a,r,s),c.anCells?c.anCells[s]:null)))&&o.push(u);return o}return V.isPlainObject(t)?void 0!==t.column&&void 0!==t.row&&-1!==f.indexOf(t.row)?[t]:[]:(e=h.filter(t).map(function(t,e){return{row:e._DT_CellIndex.row,column:e._DT_CellIndex.column}}).toArray()).length||!t.nodeName?e:(c=V(t).closest("*[data-dt-row]")).length?[{row:c.data("dt-row"),column:c.data("dt-column")}]:[]},a,e);var a,e,r,o,i,l,s,u,c,d,f,n,h,p}):(e=v?{page:v.page,order:v.order,search:v.search}:{},a=this.columns(t,e),r=this.rows(g,e),e=this.iterator("table",function(t,e){var n=[];for(o=0,i=r[e].length;o<i;o++)for(l=0,s=a[e].length;l<s;l++)n.push({row:r[e][o],column:a[e][l]});return n},1),e=v&&v.selected?this.cells(e,v):e,V.extend(e.selector,{cols:t,rows:g,opts:v}),e)}),t("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(t,e,n){t=t.aoData[e];return t&&t.anCells?t.anCells[n]:void 0},1)}),e("cells().data()",function(){return this.iterator("cell",function(t,e,n){return G(t,e,n)},1)}),t("cells().cache()","cell().cache()",function(a){return a="search"===a?"_aFilterData":"_aSortData",this.iterator("cell",function(t,e,n){return t.aoData[e][a][n]},1)}),t("cells().render()","cell().render()",function(a){return this.iterator("cell",function(t,e,n){return G(t,e,n,a)},1)}),t("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(t,e,n){return{row:e,column:n,columnVisible:T(t,n)}},1)}),t("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(t,e,n){gt(t,e,a,n)})}),e("cell()",function(t,e,n){return le(this.cells(t,e,n))}),e("cell().data()",function(t){var e,n,a,r,o,i=this.context,l=this[0];return void 0===t?i.length&&l.length?G(i[0],l[0].row,l[0].column):void 0:(e=i[0],n=l[0].row,a=l[0].column,r=e.aoColumns[a],o=e.aoData[n]._aData,r.fnSetData(o,t,{settings:e,row:n,col:a}),gt(i[0],l[0].row,"data",l[0].column),this)}),e("order()",function(e,t){var n=this.context,a=Array.prototype.slice.call(arguments);return void 0===e?0!==n.length?n[0].aaSorting:void 0:("number"==typeof e?e=[[e,t]]:1<a.length&&(e=a),this.iterator("table",function(t){t.aaSorting=Array.isArray(e)?e.slice():e}))}),e("order.listener()",function(e,n,a){return this.iterator("table",function(t){Vt(t,e,{},n,a)})}),e("order.fixed()",function(e){var t;return e?this.iterator("table",function(t){t.aaSortingFixed=V.extend(!0,{},e)}):(t=(t=this.context).length?t[0].aaSortingFixed:void 0,Array.isArray(t)?{pre:t}:t)}),e(["columns().order()","column().order()"],function(n){var a=this;return n?this.iterator("table",function(t,e){t.aaSorting=a[e].map(function(t){return[t,n]})}):this.iterator("column",function(t,e){for(var n=$t(t),a=0,r=n.length;a<r;a++)if(n[a].col===e)return n[a].dir;return null},1)}),t("columns().orderable()","column().orderable()",function(n){return this.iterator("column",function(t,e){t=t.aoColumns[e];return n?t.asSorting:t.bSortable},1)}),e("processing()",function(e){return this.iterator("table",function(t){w(t,e)})}),e("search()",function(e,n,a,r){var t=this.context;return void 0===e?0!==t.length?t[0].oPreviousSearch.search:void 0:this.iterator("table",function(t){t.oFeatures.bFilter&&Nt(t,"object"==typeof n?V.extend(t.oPreviousSearch,n,{search:e}):V.extend(t.oPreviousSearch,{search:e,regex:null!==n&&n,smart:null===a||a,caseInsensitive:null===r||r}))})}),e("search.fixed()",function(e,n){var t=this.iterator(!0,"table",function(t){t=t.searchFixed;return e?void 0===n?t[e]:(null===n?delete t[e]:t[e]=n,this):Object.keys(t)});return void 0!==e&&void 0===n?t[0]:t}),t("columns().search()","column().search()",function(a,r,o,i){return this.iterator("column",function(t,e){var n=t.aoPreSearchCols;if(void 0===a)return n[e].search;t.oFeatures.bFilter&&("object"==typeof r?V.extend(n[e],r,{search:a}):V.extend(n[e],{search:a,regex:null!==r&&r,smart:null===o||o,caseInsensitive:null===i||i}),Nt(t,t.oPreviousSearch))})}),e(["columns().search.fixed()","column().search.fixed()"],function(n,a){var t=this.iterator(!0,"column",function(t,e){t=t.aoColumns[e].searchFixed;return n?void 0===a?t[n]:(null===a?delete t[n]:t[n]=a,this):Object.keys(t)});return void 0!==n&&void 0===a?t[0]:t}),e("state()",function(t,e){var n;return t?(n=V.extend(!0,{},t),this.iterator("table",function(t){!1!==e&&(n.time=+new Date+100),Jt(t,n,function(){})})):this.context.length?this.context[0].oSavedState:null}),e("state.clear()",function(){return this.iterator("table",function(t){t.fnStateSaveCallback.call(t.oInstance,t,{})})}),e("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null}),e("state.save()",function(){return this.iterator("table",function(t){Gt(t)})}),$.use=function(t,e){"lib"===e||t.fn?V=t:"win"==e||t.document?_=(q=t).document:"datetime"!==e&&"DateTime"!==t.type||($.DateTime=t)},$.factory=function(t,e){var n=!1;return t&&t.document&&(_=(q=t).document),e&&e.fn&&e.fn.jquery&&(V=e,n=!0),n},$.versionCheck=function(t,e){for(var n,a,r=(e||$.version).split("."),o=t.split("."),i=0,l=o.length;i<l;i++)if((n=parseInt(r[i],10)||0)!==(a=parseInt(o[i],10)||0))return a<n;return!0},$.isDataTable=function(t){var r=V(t).get(0),o=!1;return t instanceof $.Api||(V.each($.settings,function(t,e){var n=e.nScrollHead?V("table",e.nScrollHead)[0]:null,a=e.nScrollFoot?V("table",e.nScrollFoot)[0]:null;e.nTable!==r&&n!==r&&a!==r||(o=!0)}),o)},$.tables=function(e){var t=!1,n=(V.isPlainObject(e)&&(t=e.api,e=e.visible),$.settings.filter(function(t){return!(e&&!V(t.nTable).is(":visible"))}).map(function(t){return t.nTable}));return t?new U(n):n},$.camelToHungarian=z,e("$()",function(t,e){e=this.rows(e).nodes(),e=V(e);return V([].concat(e.filter(t).toArray(),e.find(t).toArray()))}),V.each(["on","one","off"],function(t,n){e(n+"()",function(){var t=Array.prototype.slice.call(arguments),e=(t[0]=t[0].split(/\s/).map(function(t){return t.match(/\.dt\b/)?t:t+".dt"}).join(" "),V(this.tables().nodes()));return e[n].apply(e,t),this})}),e("clear()",function(){return this.iterator("table",function(t){pt(t)})}),e("error()",function(e){return this.iterator("table",function(t){Z(t,0,e)})}),e("settings()",function(){return new U(this.context,this.context)}),e("init()",function(){var t=this.context;return t.length?t[0].oInit:null}),e("data()",function(){return this.iterator("table",function(t){return f(t.aoData,"_aData")}).flatten()}),e("trigger()",function(e,n,a){return this.iterator("table",function(t){return tt(t,null,e,n,a)}).flatten()}),e("ready()",function(t){var e=this.context;return t?this.tables().every(function(){this.context[0]._bInitComplete?t.call(this):this.on("init",function(){t.call(this)})}):e.length?e[0]._bInitComplete||!1:null}),e("destroy()",function(c){return c=c||!1,this.iterator("table",function(t){var e=t.oClasses,n=t.nTable,a=t.nTBody,r=t.nTHead,o=t.nTFoot,i=V(n),a=V(a),l=V(t.nTableWrapper),s=t.aoData.map(function(t){return t?t.nTr:null}),u=e.order,o=(t.bDestroying=!0,tt(t,"aoDestroyCallback","destroy",[t],!0),c||new U(t).columns().visible(!0),l.off(".DT").find(":not(tbody *)").off(".DT"),V(q).off(".DT-"+t.sInstance),n!=r.parentNode&&(i.children("thead").detach(),i.append(r)),o&&n!=o.parentNode&&(i.children("tfoot").detach(),i.append(o)),t.colgroup.remove(),t.aaSorting=[],t.aaSortingFixed=[],Yt(t),V("th, td",r).removeClass(u.canAsc+" "+u.canDesc+" "+u.isAsc+" "+u.isDesc).css("width",""),a.children().detach(),a.append(s),t.nTableWrapper.parentNode),r=t.nTableWrapper.nextSibling,u=c?"remove":"detach",a=(i[u](),l[u](),!c&&o&&(o.insertBefore(n,r),i.css("width",t.sDestroyWidth).removeClass(e.table)),$.settings.indexOf(t));-1!==a&&$.settings.splice(a,1)})}),V.each(["column","row","cell"],function(t,s){e(s+"s().every()",function(a){var r,o=this.selector.opts,i=this,l=0;return this.iterator("every",function(t,e,n){r=i[s](e,o),"cell"===s?a.call(r,r[0][0].row,r[0][0].column,n,l):a.call(r,e,n,l),l++})})}),e("i18n()",function(t,e,n){var a=this.context[0],t=J(t)(a.oLanguage);return"string"==typeof(t=V.isPlainObject(t=void 0===t?e:t)?void 0!==n&&void 0!==t[n]?t[n]:t._:t)?t.replace("%d",n):t}),$.version="2.0.7",$.settings=[],$.models={},$.models.oSearch={caseInsensitive:!0,search:"",regex:!1,smart:!0,return:!1},$.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,src:null,idx:-1,displayData:null},$.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null,maxLenString:null,searchFixed:null},$.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],bAutoWidth:!0,bDeferRender:!0,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:null,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(t){return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnStateLoadCallback:function(t){try{return JSON.parse((-1===t.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+t.sInstance+"_"+location.pathname))}catch(t){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(t,e){try{(-1===t.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+t.sInstance+"_"+location.pathname,JSON.stringify(e))}catch(t){}},fnStateSaveParams:null,iStateDuration:7200,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{orderable:": Activate to sort",orderableReverse:": Activate to invert sorting",orderableRemove:": Activate to remove sorting",paginate:{first:"First",last:"Last",next:"Next",previous:"Previous"}},oPaginate:{sFirst:"«",sLast:"»",sNext:"›",sPrevious:"‹"},entries:{_:"entries",1:"entry"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",sInfoEmpty:"Showing 0 to 0 of 0 _ENTRIES-TOTAL_",sInfoFiltered:"(filtered from _MAX_ total _ENTRIES-MAX_)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"_MENU_ _ENTRIES_ per page",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:V.extend({},$.models.oSearch),layout:{topStart:"pageLength",topEnd:"search",bottomStart:"info",bottomEnd:"paging"},sDom:null,searchDelay:null,sPaginationType:"full_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId",caption:null},k($.defaults),$.defaults.column={aDataSort:null,iDataSort:-1,ariaTitle:"",asSorting:["asc","desc",""],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null},k($.defaults.column),$.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:!0,bLengthChange:!0,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollbarLeft:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},searchFixed:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",pagingControls:0,iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,bAjaxDataGet:!0,jqXHR:null,json:void 0,oAjaxData:void 0,sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==et(this)?+this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==et(this)?+this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var t=this._iDisplayLength,e=this._iDisplayStart,n=e+t,a=this.aiDisplay.length,r=this.oFeatures,o=r.bPaginate;return r.bServerSide?!1===o||-1===t?e+a:Math.min(e+t,this._iRecordsDisplay):!o||a<n||-1===t?a:n},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null,caption:"",captionNode:null,colgroup:null},$.ext.pager);V.extend(be,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(){return["numbers"]},simple_numbers:function(){return["previous","numbers","next"]},full_numbers:function(){return["first","previous","numbers","next","last"]},first_last:function(){return["first","last"]},first_last_numbers:function(){return["first","numbers","last"]},_numbers:Ne,numbers_length:7}),V.extend(!0,$.ext.renderer,{pagingButton:{_:function(t,e,n,a,r){var t=t.oClasses.paging,o=[t.button];return a&&o.push(t.active),r&&o.push(t.disabled),{display:a="ellipsis"===e?V('<span class="ellipsis"></span>').html(n)[0]:V("<button>",{class:o.join(" "),role:"link",type:"button"}).html(n),clicker:a}}},pagingContainer:{_:function(t,e){return e}}});function De(t){return t.replace(/[\W]/g,"_")}function xe(t,e,n,a,r){return q.moment?t[e](r):q.luxon?t[n](r):a?t[a](r):t}var Se=!1;function Te(t,e,n){var a;if(q.moment){if(!(a=q.moment.utc(t,e,n,!0)).isValid())return null}else if(q.luxon){if(!(a=e&&"string"==typeof t?q.luxon.DateTime.fromFormat(t,e):q.luxon.DateTime.fromISO(t)).isValid)return null;a.setLocale(n)}else e?(Se||alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),Se=!0):a=new Date(t);return a}function we(s){return function(a,r,o,i){0===arguments.length?(o="en",a=r=null):1===arguments.length?(o="en",r=a,a=null):2===arguments.length&&(o=r,r=a,a=null);var l="datetime"+(r?"-"+De(r):"");return $.ext.type.order[l]||$.type(l,{detect:function(t){return t===l&&l},order:{pre:function(t){return t.valueOf()}},className:"dt-right"}),function(t,e){var n;return null==t&&(t="--now"===i?(n=new Date,new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()))):""),"type"===e?l:""===t?"sort"!==e?"":Te("0000-01-01 00:00:00",null,o):!(null===r||a!==r||"sort"===e||"type"===e||t instanceof Date)||null===(n=Te(t,a,o))?t:"sort"===e?n:(t=null===r?xe(n,"toDate","toJSDate","")[s]():xe(n,"format","toFormat","toISOString",r),"display"===e?u(t):t)}}}var _e=",",Ce=".";if(void 0!==q.Intl)try{for(var Ie=(new Intl.NumberFormat).formatToParts(100000.1),a=0;a<Ie.length;a++)"group"===Ie[a].type?_e=Ie[a].value:"decimal"===Ie[a].type&&(Ce=Ie[a].value)}catch(t){}$.datetime=function(n,a){var r="datetime-detect-"+De(n);a=a||"en",$.ext.type.order[r]||$.type(r,{detect:function(t){var e=Te(t,n,a);return!(""!==t&&!e)&&r},order:{pre:function(t){return Te(t,n,a)||0}},className:"dt-right"})},$.render={date:we("toLocaleDateString"),datetime:we("toLocaleString"),time:we("toLocaleTimeString"),number:function(r,o,i,l,s){return null==r&&(r=_e),null==o&&(o=Ce),{display:function(t){if("number"!=typeof t&&"string"!=typeof t)return t;if(""===t||null===t)return t;var e=t<0?"-":"",n=parseFloat(t),a=Math.abs(n);if(1e11<=a||a<1e-4&&0!==a)return(a=n.toExponential(i).split(/e\+?/))[0]+" x 10<sup>"+a[1]+"</sup>";if(isNaN(n))return u(t);n=n.toFixed(i),t=Math.abs(n);a=parseInt(t,10),n=i?o+(t-a).toFixed(i).substring(2):"";return(e=0===a&&0===parseFloat(n)?"":e)+(l||"")+a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,r)+n+(s||"")}}},text:function(){return{display:u,filter:u}}};var i=$.ext.type,Ae=($.type=function(a,t,e){if(!t)return{className:i.className[a],detect:i.detect.find(function(t){return t.name===a}),order:{pre:i.order[a+"-pre"],asc:i.order[a+"-asc"],desc:i.order[a+"-desc"]},render:i.render[a],search:i.search[a]};function n(t,e){i[t][a]=e}function r(n){function t(t,e){return!0===(t=n(t,e))?a:t}Object.defineProperty(t,"name",{value:a});var e=i.detect.findIndex(function(t){return t.name===a});-1===e?i.detect.unshift(t):i.detect.splice(e,1,t)}function o(t){i.order[a+"-pre"]=t.pre,i.order[a+"-asc"]=t.asc,i.order[a+"-desc"]=t.desc}void 0===e&&(e=t,t=null),"className"===t?n("className",e):"detect"===t?r(e):"order"===t?o(e):"render"===t?n("render",e):"search"===t?n("search",e):t||(e.className&&n("className",e.className),void 0!==e.detect&&r(e.detect),e.order&&o(e.order),void 0!==e.render&&n("render",e.render),void 0!==e.search&&n("search",e.search))},$.types=function(){return i.detect.map(function(t){return t.name})},$.type("string",{detect:function(){return"string"},order:{pre:function(t){return y(t)?"":"string"==typeof t?t.toLowerCase():t.toString?t.toString():""}},search:fe(!1,!0)}),$.type("html",{detect:function(t){return y(t)||"string"==typeof t&&-1!==t.indexOf("<")?"html":null},order:{pre:function(t){return y(t)?"":t.replace?I(t).trim().toLowerCase():t+""}},search:fe(!0,!0)}),$.type("date",{className:"dt-type-date",detect:function(t){var e;return(!t||t instanceof Date||N.test(t))&&(null!==(e=Date.parse(t))&&!isNaN(e)||y(t))?"date":null},order:{pre:function(t){t=Date.parse(t);return isNaN(t)?-1/0:t}}}),$.type("html-num-fmt",{className:"dt-type-numeric",detect:function(t,e){e=e.oLanguage.sDecimal;return l(t,e,!0)?"html-num-fmt":null},order:{pre:function(t,e){e=e.oLanguage.sDecimal;return Ae(t,e,L,P)}},search:fe(!0,!0)}),$.type("html-num",{className:"dt-type-numeric",detect:function(t,e){e=e.oLanguage.sDecimal;return l(t,e)?"html-num":null},order:{pre:function(t,e){e=e.oLanguage.sDecimal;return Ae(t,e,L)}},search:fe(!0,!0)}),$.type("num-fmt",{className:"dt-type-numeric",detect:function(t,e){e=e.oLanguage.sDecimal;return o(t,e,!0)?"num-fmt":null},order:{pre:function(t,e){e=e.oLanguage.sDecimal;return Ae(t,e,P)}}}),$.type("num",{className:"dt-type-numeric",detect:function(t,e){e=e.oLanguage.sDecimal;return o(t,e)?"num":null},order:{pre:function(t,e){e=e.oLanguage.sDecimal;return Ae(t,e)}}}),function(t,e,n,a){var r;return 0===t||t&&"-"!==t?"number"==(r=typeof t)||"bigint"==r?t:+(t=(t=e?R(t,e):t).replace&&(n&&(t=t.replace(n,"")),a)?t.replace(a,""):t):-1/0});V.extend(!0,$.ext.renderer,{footer:{_:function(t,e,n){e.addClass(n.tfoot.cell)}},header:{_:function(d,f,h){f.addClass(h.thead.cell),d.oFeatures.bSort||f.addClass(h.order.none);var t=d.bSortCellsTop,e=f.closest("thead").find("tr"),n=f.parent().index();"disable"===f.attr("data-dt-order")||"disable"===f.parent().attr("data-dt-order")||!0===t&&0!==n||!1===t&&n!==e.length-1||V(d.nTable).on("order.dt.DT",function(t,e,n){var a,r,o,i,l,s,u,c;d===e&&(a=h.order,c=e.api.columns(f),r=d.aoColumns[c.flatten()[0]],o=c.orderable().includes(!0),i="",u=c.indexes(),l=c.orderable(!0).flatten(),s=","+n.map(function(t){return t.col}).join(",")+",",f.removeClass(a.isAsc+" "+a.isDesc).toggleClass(a.none,!o).toggleClass(a.canAsc,o&&l.includes("asc")).toggleClass(a.canDesc,o&&l.includes("desc")),-1!==(l=s.indexOf(","+u.toArray().join(",")+","))&&(s=c.order(),f.addClass(s.includes("asc")?a.isAsc:""+s.includes("desc")?a.isDesc:"")),0===l?(u=n[0],c=r.asSorting,f.attr("aria-sort","asc"===u.dir?"ascending":"descending"),i=c[u.index+1]?"Reverse":"Remove"):f.removeAttr("aria-sort"),f.attr("aria-label",o?r.ariaTitle+e.api.i18n("oAria.orderable"+i):r.ariaTitle),o)&&(f.find(".dt-column-title").attr("role","button"),f.attr("tabindex",0))})}},layout:{_:function(t,e,n){var a=V("<div/>").addClass("dt-layout-row").appendTo(e);V.each(n,function(t,e){t=e.table?"":"dt-"+t+" ";e.table&&a.addClass("dt-layout-table"),V("<div/>").attr({id:e.id||null,class:"dt-layout-cell "+t+(e.className||"")}).append(e.contents).appendTo(a)})}}}),$.feature={},$.feature.register=function(t,e,n){$.ext.features[t]=e,n&&C.feature.push({cFeature:n,fnInit:e})},$.feature.register("info",function(t,s){var e,n,u;return t.oFeatures.bInfo?(e=t.oLanguage,n=t.sTableId,u=V("<div/>",{class:t.oClasses.info.container}),s=V.extend({callback:e.fnInfoCallback,empty:e.sInfoEmpty,postfix:e.sInfoPostFix,search:e.sInfoFiltered,text:e.sInfo},s),t.aoDrawCallback.push(function(t){var e=s,n=u,a=t._iDisplayStart+1,r=t.fnDisplayEnd(),o=t.fnRecordsTotal(),i=t.fnRecordsDisplay(),l=i?e.text:e.empty;i!==o&&(l+=" "+e.search),l+=e.postfix,l=ee(t,l),e.callback&&(l=e.callback.call(t.oInstance,t,a,r,o,i,l)),n.html(l),tt(t,null,"info",[t,n[0],l])}),t._infoEl||(u.attr({"aria-live":"polite",id:n+"_info",role:"status"}),V(t.nTable).attr("aria-describedby",n+"_info"),t._infoEl=u),u):null},"i");var Le=0;function Fe(t,e,n,a){var r=t.oLanguage.oPaginate,o={display:"",active:!1,disabled:!1};switch(e){case"ellipsis":o.display="&#x2026;",o.disabled=!0;break;case"first":o.display=r.sFirst,0===n&&(o.disabled=!0);break;case"previous":o.display=r.sPrevious,0===n&&(o.disabled=!0);break;case"next":o.display=r.sNext,0!==a&&n!==a-1||(o.disabled=!0);break;case"last":o.display=r.sLast,0!==a&&n!==a-1||(o.disabled=!0);break;default:"number"==typeof e&&(o.display=t.fnFormatNumber(e+1),n===e)&&(o.active=!0)}return o}function Ne(t,e,n,a){var r=[],o=Math.floor(n/2),i=a?2:1,l=a?1:0;return e<=n?r=h(0,e):1===n?r=[t]:3===n?t<=1?r=[0,1,"ellipsis"]:e-2<=t?(r=h(e-2,e)).unshift("ellipsis"):r=["ellipsis",t,"ellipsis"]:t<=o?((r=h(0,n-i)).push("ellipsis"),a&&r.push(e-1)):e-1-o<=t?((r=h(e-(n-i),e)).unshift("ellipsis"),a&&r.unshift(0)):((r=h(t-o+i,t+o-l)).push("ellipsis"),r.unshift("ellipsis"),a&&(r.push(e-1),r.unshift(0))),r}$.feature.register("search",function(n,t){var e,a,r,o,i,l,s,u,c,d;return n.oFeatures.bFilter?(e=n.oClasses.search,a=n.sTableId,c=n.oLanguage,r=n.oPreviousSearch,o='<input type="search" class="'+e.input+'"/>',-1===(t=V.extend({placeholder:c.sSearchPlaceholder,text:c.sSearch},t)).text.indexOf("_INPUT_")&&(t.text+="_INPUT_"),t.text=ee(n,t.text),c=t.text.match(/_INPUT_$/),s=t.text.match(/^_INPUT_/),i=t.text.replace(/_INPUT_/,""),l="<label>"+t.text+"</label>",s?l="_INPUT_<label>"+i+"</label>":c&&(l="<label>"+i+"</label>_INPUT_"),(s=V("<div>").addClass(e.container).append(l.replace(/_INPUT_/,o))).find("label").attr("for","dt-search-"+Le),s.find("input").attr("id","dt-search-"+Le),Le++,u=function(t){var e=this.value;r.return&&"Enter"!==t.key||e!=r.search&&(r.search=e,Nt(n,r),n._iDisplayStart=0,S(n))},c=null!==n.searchDelay?n.searchDelay:0,d=V("input",s).val(r.search).attr("placeholder",t.placeholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",c?$.util.debounce(u,c):u).on("mouseup.DT",function(t){setTimeout(function(){u.call(d[0],t)},10)}).on("keypress.DT",function(t){if(13==t.keyCode)return!1}).attr("aria-controls",a),V(n.nTable).on("search.dt.DT",function(t,e){n===e&&d[0]!==_.activeElement&&d.val("function"!=typeof r.search?r.search:"")}),s):null},"f"),$.feature.register("paging",function(t,e){if(!t.oFeatures.bPaginate)return null;(e=V.extend({buttons:$.ext.pager.numbers_length,type:t.sPaginationType,boundaryNumbers:!0},e)).numbers&&(e.buttons=e.numbers);function n(){!function t(e,n,a){if(!e._bInitComplete)return;var r=$.ext.pager[a.type],o=e.oLanguage.oAria.paginate||{},i=e._iDisplayStart,l=e._iDisplayLength,s=e.fnRecordsDisplay(),u=-1===l,c=u?0:Math.ceil(i/l),d=u?1:Math.ceil(s/l),f=r().map(function(t){return"numbers"===t?Ne(c,d,a.buttons,a.boundaryNumbers):t}).flat();var h=[];for(var p=0;p<f.length;p++){var g=f[p],v=Fe(e,g,c,d),m=te(e,"pagingButton")(e,g,v.display,v.active,v.disabled);V(m.clicker).attr({"aria-controls":e.sTableId,"aria-disabled":v.disabled?"true":null,"aria-current":v.active?"page":null,"aria-label":o[g],"data-dt-idx":g,tabIndex:v.disabled?-1:e.iTabIndex}),"number"!=typeof g&&V(m.clicker).addClass(g),Qt(m.clicker,{action:g},function(t){t.preventDefault(),Ht(e,t.data.action,!0)}),h.push(m.display)}i=te(e,"pagingContainer")(e,h);u=n.find(_.activeElement).data("dt-idx");n.empty().append(i);void 0!==u&&n.find("[data-dt-idx="+u+"]").trigger("focus");h.length&&1<a.numbers&&V(n).height()>=2*V(h[0]).outerHeight()-10&&t(e,n,V.extend({},a,{numbers:a.numbers-2}))}(t,a,e)}var a=V("<div/>").addClass(t.oClasses.paging.container+" paging_"+e.type);return t.aoDrawCallback.push(n),V(t.nTable).on("column-sizing.dt.DT",n),a},"p");var je=0;return $.feature.register("pageLength",function(a,t){var e=a.oFeatures;if(!e.bPaginate||!e.bLengthChange)return null;t=V.extend({menu:a.aLengthMenu,text:a.oLanguage.sLengthMenu},t);var e=a.oClasses.length,n=a.sTableId,r=t.menu,o=[],i=[];if(Array.isArray(r[0]))o=r[0],i=r[1];else for(p=0;p<r.length;p++)V.isPlainObject(r[p])?(o.push(r[p].value),i.push(r[p].label)):(o.push(r[p]),i.push(r[p]));for(var l=t.text.match(/_MENU_$/),s=t.text.match(/^_MENU_/),u=t.text.replace(/_MENU_/,""),t="<label>"+t.text+"</label>",c=(s?t="_MENU_<label>"+u+"</label>":l&&(t="<label>"+u+"</label>_MENU_"),V("<div/>").addClass(e.container).append(t.replace("_MENU_","<span></span>"))),d=[],f=(c.find("label")[0].childNodes.forEach(function(t){t.nodeType===Node.TEXT_NODE&&d.push({el:t,text:t.textContent})}),function(e){d.forEach(function(t){t.el.textContent=ee(a,t.text,e)})}),h=V("<select/>",{name:n+"_length","aria-controls":n,class:e.select}),p=0;p<o.length;p++)h[0][p]=new Option("number"==typeof i[p]?a.fnFormatNumber(i[p]):i[p],o[p]);return c.find("label").attr("for","dt-length-"+je),h.attr("id","dt-length-"+je),je++,c.find("span").replaceWith(h),V("select",c).val(a._iDisplayLength).on("change.DT",function(){Mt(a,V(this).val()),S(a)}),V(a.nTable).on("length.dt.DT",function(t,e,n){a===e&&(V("select",c).val(n),f(n))}),f(a._iDisplayLength),c},"l"),((V.fn.dataTable=$).$=V).fn.dataTableSettings=$.settings,V.fn.dataTableExt=$.ext,V.fn.DataTable=function(t){return V(this).dataTable(t).api()},V.each($,function(t,e){V.fn.DataTable[t]=e}),$});
  40.  
  41. /*! DataTables Bootstrap 4 integration
  42. * © SpryMedia Ltd - datatables.net/license
  43. */
  44. !function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return n(e,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||o(e),r(e,t),n(t,0,e.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(d,e,t){"use strict";var n=d.fn.dataTable;return d.extend(!0,n.defaults,{renderer:"bootstrap"}),d.extend(!0,n.ext.classes,{container:"dt-container dt-bootstrap4",search:{input:"form-control form-control-sm"},length:{select:"custom-select custom-select-sm form-control form-control-sm"},processing:{container:"dt-processing card"}}),n.ext.renderer.pagingButton.bootstrap=function(e,t,n,o,r){var a=["dt-paging-button","page-item"],o=(o&&a.push("active"),r&&a.push("disabled"),d("<li>").addClass(a.join(" ")));return{display:o,clicker:d("<a>",{href:r?null:"#",class:"page-link"}).html(n).appendTo(o)}},n.ext.renderer.pagingContainer.bootstrap=function(e,t){return d("<ul/>").addClass("pagination").append(t)},n.ext.renderer.layout.bootstrap=function(e,t,n){var o=d("<div/>",{class:n.full?"row justify-content-md-center":"row justify-content-between"}).appendTo(t);d.each(n,function(e,t){e=t.table?"col-12":"start"===e?"col-md-auto mr-auto":"end"===e?"col-md-auto ml-auto":"col-md";d("<div/>",{id:t.id||null,class:e+" "+(t.className||"")}).append(t.contents).appendTo(o)})},n});
  45.  
  46. /*! ColReorder 2.0.2
  47. * © SpryMedia Ltd - datatables.net/license
  48. */
  49. !function(o){var r,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return o(t,window,document)}):"object"==typeof exports?(r=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||r(t),n(t,e),o(e,0,t.document)}:(n(window,r),module.exports=o(r,window,window.document))):o(jQuery,window,document)}(function(c,t,h){"use strict";var n=c.fn.dataTable;function f(t,e,o,r){var n=t.splice(e,o);n.unshift(0),n.unshift(r<e?r:r-o+1),t.splice.apply(t,n)}function a(t){t.rows().invalidate("data"),t.column(0).visible(t.column(0).visible()),t.columns.adjust();var e=t.colReorder.order();t.trigger("columns-reordered",[{order:e,mapping:g(e)}])}function s(t){return t.settings()[0].aoColumns.map(function(t){return t._crOriginalIdx})}function p(t,e,o,r){for(var n=[],s=0;s<t.length;s++){var i=t[s];f(i,o[0],o.length,r);for(var a=0;a<i.length;a++){var l,d=i[a].cell;n.includes(d)||(l=d.getAttribute("data-dt-column").split(",").map(function(t){return e[t]}).join(","),d.setAttribute("data-dt-column",l),n.push(d))}}}function i(t){t.columns().iterator("column",function(t,e){t=t.aoColumns;void 0===t[e]._crOriginalIdx&&(t[e]._crOriginalIdx=e)})}function g(t){for(var e=[],o=0;o<t.length;o++)e[t[o]]=o;return e}function l(t,e,o){var r,n=t.settings()[0],s=n.aoColumns,i=s.map(function(t,e){return e});if(!e.includes(o)){f(i,e[0],e.length,o);var a=g(i);for(f(s,e[0],e.length,o),r=0;r<n.aoData.length;r++){var l=n.aoData[r];if(l){var d=l.anCells;if(d)for(f(d,e[0],e.length,o),c=0;c<d.length;c++)l.nTr&&d[c]&&s[c].bVisible&&l.nTr.appendChild(d[c]),d[c]&&d[c]._DT_CellIndex&&(d[c]._DT_CellIndex.column=c)}}for(r=0;r<s.length;r++){for(var u=s[r],c=0;c<u.aDataSort.length;c++)u.aDataSort[c]=a[u.aDataSort[c]];u.idx=a[u.idx],u.bVisible&&n.colgroup.append(u.colEl)}p(n.aoHeader,a,e,o),p(n.aoFooter,a,e,o),f(n.aoPreSearchCols,e[0],e.length,o),m(a,n.aaSorting),Array.isArray(n.aaSortingFixed)?m(a,n.aaSortingFixed):(n.aaSortingFixed.pre||n.aaSortingFixed.post)&&m(a,n.aaSortingFixed.pre),n.aLastSort.forEach(function(t){t.src=a[t.src]}),t.trigger("column-reorder",[t.settings()[0],{from:e,to:o,mapping:a}])}}function m(t,e){for(var o=0;o<e.length;o++){var r=e[o];"number"==typeof r?e[o]=t[r]:c.isPlainObject(r)&&void 0!==r.idx?r.idx=t[r.idx]:Array.isArray(r)&&"number"==typeof r[0]&&(r[0]=t[r[0]])}}function d(t,e,o){var r=!1;if(e.length!==t.columns().count())t.error("ColReorder - column count mismatch");else{for(var n=g(e=o?u(t,e,"toCurrent"):e),s=0;s<n.length;s++){var i=n.indexOf(s);s!==i&&(f(n,i,1,s),l(t,[i],s),r=!0)}r&&a(t)}}function u(t,e,o){var r=t.colReorder.order(),n=t.settings()[0].aoColumns;return"toCurrent"===o||"fromOriginal"===o?Array.isArray(e)?e.map(function(t){return r.indexOf(t)}):r.indexOf(e):Array.isArray(e)?e.map(function(t){return n[t]._crOriginalIdx}):n[e]._crOriginalIdx}function v(t,e,o){var r=t.columns().count();return!(e[0]<o&&o<e[e.length]||e[0]<0&&e[e.length-1]>r||o<0&&r<o||!e.includes(o)&&(!y(t.table().header.structure(),e,o)||!y(t.table().footer.structure(),e,o)))}function y(t,e,o){for(var r=function(t){for(var e=[],o=0;o<t.length;o++){e.push([]);for(var r=0;r<t[o].length;r++){var n=t[o][r];if(n)for(var s=0;s<n.rowspan;s++){e[o+s]||(e[o+s]=[]);for(var i=0;i<n.colspan;i++)e[o+s][r+i]=n.cell}}}return e}(t),n=0;n<r.length;n++)f(r[n],e[0],e.length,o);for(n=0;n<r.length;n++)for(var s=[],i=0;i<r[n].length;i++){var a=r[n][i];if(s.includes(a)){if(s[s.length-1]!==a)return}else s.push(a)}return 1}_.prototype.disable=function(){return this.c.enable=!1,this},_.prototype.enable=function(t){return!1===(t=void 0===t?!0:t)?this.disable():(this.c.enable=!0,this)},_.prototype._addListener=function(t){var e=this;c(t).on("selectstart.colReorder",function(){return!1}).on("mousedown.colReorder touchstart.colReorder",function(t){"mousedown"===t.type&&1!==t.which||e.c.enable&&e._mouseDown(t,this)})},_.prototype._createDragNode=function(){var t=this.s.mouse.target,e=t.parent(),o=e.parent(),r=o.parent(),n=t.clone();this.dom.drag=c(r[0].cloneNode(!1)).addClass("dtcr-cloned").append(c(o[0].cloneNode(!1)).append(c(e[0].cloneNode(!1)).append(n[0]))).css({position:"absolute",top:0,left:0,width:c(t).outerWidth(),height:c(t).outerHeight()}).appendTo("body")},_.prototype._cursorPosition=function(t,e){return(-1!==t.type.indexOf("touch")?t.originalEvent.touches[0]:t)[e]},_.prototype._mouseDown=function(t,e){for(var o=this,r=c(t.target).closest("th, td"),n=r.offset(),s=this.dt.columns(this.c.columns).indexes().toArray(),i=c(e).attr("data-dt-column").split(",").map(function(t){return parseInt(t,10)}),a=0;a<i.length;a++)if(!s.includes(i[a]))return!1;this.s.mouse.start.x=this._cursorPosition(t,"pageX"),this.s.mouse.start.y=this._cursorPosition(t,"pageY"),this.s.mouse.offset.x=this._cursorPosition(t,"pageX")-n.left,this.s.mouse.offset.y=this._cursorPosition(t,"pageY")-n.top,this.s.mouse.target=r,this.s.mouse.targets=i;for(var l=0;l<i.length;l++){var d=this.dt.cells(null,i[l],{page:"current"}).nodes().to$(),u="dtcr-moving";0===l&&(u+=" dtcr-moving-first"),l===i.length-1&&(u+=" dtcr-moving-last"),d.addClass(u)}this._regions(i),this._scrollRegions(),c(h).on("mousemove.colReorder touchmove.colReorder",function(t){o._mouseMove(t)}).on("mouseup.colReorder touchend.colReorder",function(t){o._mouseUp(t)})},_.prototype._mouseMove=function(t){if(null===this.dom.drag){if(Math.pow(Math.pow(this._cursorPosition(t,"pageX")-this.s.mouse.start.x,2)+Math.pow(this._cursorPosition(t,"pageY")-this.s.mouse.start.y,2),.5)<5)return;c(h.body).addClass("dtcr-dragging"),this._createDragNode()}this.dom.drag.css({left:this._cursorPosition(t,"pageX")-this.s.mouse.offset.x,top:this._cursorPosition(t,"pageY")-this.s.mouse.offset.y});var e=c(this.dt.table().node()).offset().left,o=this._cursorPosition(t,"pageX")-e,e=this.s.dropZones.find(function(t){return t.left<=o&&o<=t.left+t.width});this.s.mouse.absLeft=this._cursorPosition(t,"pageX"),e&&!e.self&&this._move(e,o)},_.prototype._mouseUp=function(t){c(h).off(".colReorder"),c(h.body).removeClass("dtcr-dragging"),this.dom.drag&&(this.dom.drag.remove(),this.dom.drag=null),this.s.scrollInterval&&clearInterval(this.s.scrollInterval),this.dt.cells(".dtcr-moving").nodes().to$().removeClass("dtcr-moving dtcr-moving-first dtcr-moving-last")},_.prototype._move=function(t,e){var o,r,n=this,t=(this.dt.colReorder.move(this.s.mouse.targets,t.colIdx),this.s.mouse.targets=c(this.s.mouse.target).attr("data-dt-column").split(",").map(function(t){return parseInt(t,10)}),this._regions(this.s.mouse.targets),this.s.dropZones.find(function(t){return t.colIdx===n.s.mouse.targets[0]})),s=this.s.dropZones.indexOf(t);t.left>e&&(r=t.left-e,o=this.s.dropZones[s-1],t.left-=r,t.width+=r,o)&&(o.width-=r),(t=this.s.dropZones.find(function(t){return t.colIdx===n.s.mouse.targets[n.s.mouse.targets.length-1]})).left+t.width<e&&(o=e-(t.left+t.width),r=this.s.dropZones[s+1],t.width+=o,r)&&(r.left+=o,r.width-=o)},_.prototype._regions=function(n){var s=this,i=[],a=0,l=0,d=this.dt.columns(this.c.columns).indexes().toArray(),u=this.dt.columns().widths();this.dt.columns().every(function(t,e,o){var r;this.visible()&&(r=u[t],d.includes(t)&&(v(s.dt,n,t)?i.push({colIdx:t,left:a-l,self:n[0]<=t&&t<=n[n.length-1],width:r+l}):t<n[0]?i.length&&(i[i.length-1].width+=r):t>n[n.length-1]&&(l+=r)),a+=r)}),this.s.dropZones=i},_.prototype._isScrolling=function(){return this.dt.table().body().parentNode!==this.dt.table().header().parentNode},_.prototype._scrollRegions=function(){var e,o,r,n;this._isScrolling()&&(o=c((e=this).dt.table().container()).position().left,r=c(this.dt.table().container()).outerWidth(),n=this.dt.table().body().parentElement.parentElement,this.s.scrollInterval=setInterval(function(){var t=e.s.mouse.absLeft;t<o+75&&n.scrollLeft?n.scrollLeft-=5:o+r-75<t&&n.scrollLeft<n.scrollWidth&&(n.scrollLeft+=5)},25))},_.defaults={columns:"",enable:!0,order:null},_.version="2.0.2";
  50. /*! ColReorder 2.0.2
  51. * © SpryMedia Ltd - datatables.net/license
  52. */var b=_;function _(r,t){this.dom={drag:null},this.c={columns:null,enable:null,order:null},this.s={dropZones:[],mouse:{absLeft:-1,offset:{x:-1,y:-1},start:{x:-1,y:-1},target:null,targets:[]},scrollInterval:null};var e,o=this;r.settings()[0]._colReorder||((r.settings()[0]._colReorder=this).dt=r,c.extend(this.c,_.defaults,t),i(r),r.on("stateSaveParams",function(t,e,o){o.colReorder=s(r)}),r.on("destroy",function(){r.off(".colReorder"),r.colReorder.reset()}),t=r.state.loaded(),e=this.c.order,(e=t&&t.colReorder?t.colReorder:e)&&r.ready(function(){d(r,e,!0)}),r.table().header.structure().forEach(function(t){for(var e=0;e<t.length;e++)t[e]&&t[e].cell&&o._addListener(t[e].cell)}))}return n.Api.register("colReorder.enable()",function(e){return this.iterator("table",function(t){t._colReorder&&t._colReorder.enable(e)})}),n.Api.register("colReorder.disable()",function(){return this.iterator("table",function(t){t._colReorder&&t._colReorder.disable()})}),n.Api.register("colReorder.move()",function(t,e){return i(this),v(this,t=Array.isArray(t)?t:[t],e)?this.tables().every(function(){l(this,t,e),a(this)}):(this.error("ColReorder - invalid move"),this)}),n.Api.register("colReorder.order()",function(t,e){return i(this),t?this.tables().every(function(){d(this,t,e)}):this.context.length?s(this):null}),n.Api.register("colReorder.reset()",function(){return i(this),this.tables().every(function(){var t=this.columns().every(function(t){return t}).flatten().toArray();d(this,t,!0)})}),n.Api.register("colReorder.transpose()",function(t,e){return i(this),u(this,t,e=e||"toCurrent")}),n.ColReorder=b,c(h).on("stateLoadInit.dt",function(t,e,o){if("dt"===t.namespace){t=new n.Api(e);if(o.colReorder)if(t.ready())d(t,o.colReorder,!0);else{m(g(o.colReorder),o.order);for(var r=0;r<o.columns.length;r++)o.columns[r]._cr_sort=o.colReorder[r];o.columns.sort(function(t,e){return t._cr_sort-e._cr_sort})}}}),c(h).on("preInit.dt",function(t,e){var o,r;"dt"===t.namespace&&(t=e.oInit.colReorder,r=n.defaults.colReorder,t||r)&&(o=c.extend({},r,t),!1!==t)&&(r=new n.Api(e),new b(r,o))}),n});
  53.  
  54. /*! Bootstrap 4 styling wrapper for ColReorder
  55. * © SpryMedia Ltd - datatables.net/license
  56. */
  57. !function(t){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-colreorder"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,n){n.fn.dataTable||require("datatables.net-bs4")(e,n),n.fn.dataTable.ColReorder||require("datatables.net-colreorder")(e,n)},"undefined"==typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),d(e,n),t(n,0,e.document)}:(d(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)}(function(e,n,t){"use strict";return e.fn.dataTable});
  58.  
  59. /*! Responsive 3.0.2
  60. * © SpryMedia Ltd - datatables.net/license
  61. */
  62. !function(n){var i,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return n(e,window,document)}):"object"==typeof exports?(i=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||i(e),r(e,t),n(t,e,e.document)}:(r(window,i),module.exports=n(i,window,window.document))):n(jQuery,window,document)}(function(b,y,d){"use strict";function a(e,t){if(!i.versionCheck||!i.versionCheck("2"))throw"DataTables Responsive requires DataTables 2 or newer";this.s={childNodeStore:{},columns:[],current:[],dt:new i.Api(e)},this.s.dt.settings()[0].responsive||(t&&"string"==typeof t.details?t.details={type:t.details}:t&&!1===t.details?t.details={type:!1}:t&&!0===t.details&&(t.details={type:"inline"}),this.c=b.extend(!0,{},a.defaults,i.defaults.responsive,t),(e.responsive=this)._constructor())}var i=b.fn.dataTable,e=(b.extend(a.prototype,{_constructor:function(){var o=this,r=this.s.dt,t=b(y).innerWidth(),e=(r.settings()[0]._responsive=this,b(y).on("orientationchange.dtr",i.util.throttle(function(){var e=b(y).innerWidth();e!==t&&(o._resize(),t=e)})),r.on("row-created.dtr",function(e,t,n,i){-1!==b.inArray(!1,o.s.current)&&b(">td, >th",t).each(function(e){e=r.column.index("toData",e);!1===o.s.current[e]&&b(this).css("display","none").addClass("dtr-hidden")})}),r.on("destroy.dtr",function(){r.off(".dtr"),b(r.table().body()).off(".dtr"),b(y).off("resize.dtr orientationchange.dtr"),r.cells(".dtr-control").nodes().to$().removeClass("dtr-control"),b(r.table().node()).removeClass("dtr-inline collapsed"),b.each(o.s.current,function(e,t){!1===t&&o._setColumnVis(e,!0)})}),this.c.breakpoints.sort(function(e,t){return e.width<t.width?1:e.width>t.width?-1:0}),this._classLogic(),this._resizeAuto(),this.c.details);!1!==e.type&&(o._detailsInit(),r.on("column-visibility.dtr",function(){o._timer&&clearTimeout(o._timer),o._timer=setTimeout(function(){o._timer=null,o._classLogic(),o._resizeAuto(),o._resize(!0),o._redrawChildren()},100)}),r.on("draw.dtr",function(){o._redrawChildren()}),b(r.table().node()).addClass("dtr-"+e.type)),r.on("column-reorder.dtr",function(e,t,n){o._classLogic(),o._resizeAuto(),o._resize(!0)}),r.on("column-sizing.dtr",function(){o._resizeAuto(),o._resize()}),r.on("column-calc.dt",function(e,t){for(var n=o.s.current,i=0;i<n.length;i++){var r=t.visible.indexOf(i);!1===n[i]&&0<=r&&t.visible.splice(r,1)}}),r.on("preXhr.dtr",function(){var e=[];r.rows().every(function(){this.child.isShown()&&e.push(this.id(!0))}),r.one("draw.dtr",function(){o._resizeAuto(),o._resize(),r.rows(e).every(function(){o._detailsDisplay(this,!1)})})}),r.on("draw.dtr",function(){o._controlClass()}).on("init.dtr",function(e,t,n){"dt"===e.namespace&&(o._resizeAuto(),o._resize())}),this._resize()},_colGroupAttach:function(e,t,n){var i=null;if(t[n].get(0).parentNode!==e[0]){for(var r=n+1;r<t.length;r++)if(e[0]===t[r].get(0).parentNode){i=r;break}null!==i?t[n].insertBefore(t[i][0]):e.append(t[n])}},_childNodes:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i])return this.s.childNodeStore[i];for(var r=[],o=e.cell(t,n).node().childNodes,s=0,d=o.length;s<d;s++)r.push(o[s]);return this.s.childNodeStore[i]=r},_childNodesRestore:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i]){var r=e.cell(t,n).node(),e=this.s.childNodeStore[i];if(0<e.length){for(var o=e[0].parentNode.childNodes,s=[],d=0,a=o.length;d<a;d++)s.push(o[d]);for(var l=0,c=s.length;l<c;l++)r.appendChild(s[l])}this.s.childNodeStore[i]=void 0}},_columnsVisiblity:function(n){for(var i=this.s.dt,e=this.s.columns,t=e.map(function(e,t){return{columnIdx:t,priority:e.priority}}).sort(function(e,t){return e.priority!==t.priority?e.priority-t.priority:e.columnIdx-t.columnIdx}),r=b.map(e,function(e,t){return!1===i.column(t).visible()?"not-visible":(!e.auto||null!==e.minWidth)&&(!0===e.auto?"-":-1!==b.inArray(n,e.includeIn))}),o=0,s=0,d=r.length;s<d;s++)!0===r[s]&&(o+=e[s].minWidth);var a=i.settings()[0].oScroll,a=a.sY||a.sX?a.iBarWidth:0,l=i.table().container().offsetWidth-a-o;for(s=0,d=r.length;s<d;s++)e[s].control&&(l-=e[s].minWidth);var c=!1;for(s=0,d=t.length;s<d;s++){var u=t[s].columnIdx;"-"===r[u]&&!e[u].control&&e[u].minWidth&&(c||l-e[u].minWidth<0?r[u]=!(c=!0):r[u]=!0,l-=e[u].minWidth)}var h=!1;for(s=0,d=e.length;s<d;s++)if(!e[s].control&&!e[s].never&&!1===r[s]){h=!0;break}for(s=0,d=e.length;s<d;s++)e[s].control&&(r[s]=h),"not-visible"===r[s]&&(r[s]=!1);return-1===b.inArray(!0,r)&&(r[0]=!0),r},_classLogic:function(){function d(e,t,n,i){var r,o,s;if(n){if("max-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width<=r&&u(e,l[o].name);else if("min-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width>=r&&u(e,l[o].name);else if("not-"===n)for(o=0,s=l.length;o<s;o++)-1===l[o].name.indexOf(i)&&u(e,l[o].name)}else c[e].includeIn.push(t)}var a=this,l=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(e){var e=this.column(e),t=e.header().className,n=e.init().responsivePriority,e=e.header().getAttribute("data-priority");return void 0===n&&(n=null==e?1e4:+e),{className:t,includeIn:[],auto:!1,control:!1,never:!!t.match(/\b(dtr\-)?never\b/),priority:n}}),u=function(e,t){e=c[e].includeIn;-1===b.inArray(t,e)&&e.push(t)};c.each(function(e,r){for(var t=e.className.split(" "),o=!1,n=0,i=t.length;n<i;n++){var s=t[n].trim();if("all"===s||"dtr-all"===s)return o=!0,void(e.includeIn=b.map(l,function(e){return e.name}));if("none"===s||"dtr-none"===s||e.never)return void(o=!0);if("control"===s||"dtr-control"===s)return o=!0,void(e.control=!0);b.each(l,function(e,t){var n=t.name.split("-"),i=new RegExp("(min\\-|max\\-|not\\-)?("+n[0]+")(\\-[_a-zA-Z0-9])?"),i=s.match(i);i&&(o=!0,i[2]===n[0]&&i[3]==="-"+n[1]?d(r,t.name,i[1],i[2]+i[3]):i[2]!==n[0]||i[3]||d(r,t.name,i[1],i[2]))})}o||(e.auto=!0)}),this.s.columns=c},_controlClass:function(){var e,t,n;"inline"===this.c.details.type&&(e=this.s.dt,t=this.s.current,n=b.inArray(!0,t),e.cells(null,function(e){return e!==n},{page:"current"}).nodes().to$().filter(".dtr-control").removeClass("dtr-control"),e.cells(null,n,{page:"current"}).nodes().to$().addClass("dtr-control"))},_detailsDisplay:function(t,n){function e(e){b(t.node()).toggleClass("dtr-expanded",!1!==e),b(o.table().node()).triggerHandler("responsive-display.dt",[o,t,e,n])}var i,r=this,o=this.s.dt,s=this.c.details;s&&!1!==s.type&&(i="string"==typeof s.renderer?a.renderer[s.renderer]():s.renderer,"boolean"==typeof(s=s.display(t,n,function(){return i.call(r,o,t[0][0],r._detailsObj(t[0]))},function(){e(!1)})))&&e(s)},_detailsInit:function(){var n=this,i=this.s.dt,e=this.c.details,r=("inline"===e.type&&(e.target="td.dtr-control, th.dtr-control"),i.on("draw.dtr",function(){n._tabIndexes()}),n._tabIndexes(),b(i.table().body()).on("keyup.dtr","td, th",function(e){13===e.keyCode&&b(this).data("dtr-keyboard")&&b(this).click()}),e.target),e="string"==typeof r?r:"td, th";void 0===r&&null===r||b(i.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",e,function(e){if(b(i.table().node()).hasClass("collapsed")&&-1!==b.inArray(b(this).closest("tr").get(0),i.rows().nodes().toArray())){if("number"==typeof r){var t=r<0?i.columns().eq(0).length+r:r;if(i.cell(this).index().column!==t)return}t=i.row(b(this).closest("tr"));"click"===e.type?n._detailsDisplay(t,!1):"mousedown"===e.type?b(this).css("outline","none"):"mouseup"===e.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(n){var i=this,r=this.s.dt;return b.map(this.s.columns,function(e,t){if(!e.never&&!e.control)return{className:r.settings()[0].aoColumns[t].sClass,columnIndex:t,data:r.cell(n,t).render(i.c.orthogonal),hidden:r.column(t).visible()&&!i.s.current[t],rowIndex:n,title:r.column(t).title()}})},_find:function(e){for(var t=this.c.breakpoints,n=0,i=t.length;n<i;n++)if(t[n].name===e)return t[n]},_redrawChildren:function(){var n=this,i=this.s.dt;i.rows({page:"current"}).iterator("row",function(e,t){n._detailsDisplay(i.row(t),!0)})},_resize:function(n){for(var e,i=this,r=this.s.dt,t=b(y).innerWidth(),o=this.c.breakpoints,s=o[0].name,d=this.s.columns,a=this.s.current.slice(),l=o.length-1;0<=l;l--)if(t<=o[l].width){s=o[l].name;break}var c=this._columnsVisiblity(s),u=(this.s.current=c,!1);for(l=0,e=d.length;l<e;l++)if(!1===c[l]&&!d[l].never&&!d[l].control&&!1==!r.column(l).visible()){u=!0;break}b(r.table().node()).toggleClass("collapsed",u);var h=!1,p=0,f=r.settings()[0],m=b(r.table().node()).children("colgroup"),v=f.aoColumns.map(function(e){return e.colEl});r.columns().eq(0).each(function(e,t){r.column(e).visible()&&(!0===c[t]&&p++,!n&&c[t]===a[t]||(h=!0,i._setColumnVis(e,c[t])),c[t]?i._colGroupAttach(m,v,t):v[t].detach())}),h&&(r.columns.adjust(),this._redrawChildren(),b(r.table().node()).trigger("responsive-resize.dt",[r,this._responsiveOnlyHidden()]),0===r.page.info().recordsDisplay)&&b("td",r.table().body()).eq(0).attr("colspan",p),i._controlClass()},_resizeAuto:function(){var t=this.s.dt,n=this.s.columns,r=this,o=t.columns().indexes().filter(function(e){return t.column(e).visible()});if(this.c.auto&&-1!==b.inArray(!0,b.map(n,function(e){return e.auto}))){for(var e=t.table().node().cloneNode(!1),i=b(t.table().header().cloneNode(!1)).appendTo(e),s=b(t.table().footer().cloneNode(!1)).appendTo(e),d=b(t.table().body()).clone(!1,!1).empty().appendTo(e),a=(e.style.width="auto",t.table().header.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(i)}),b("<tr/>").appendTo(d)),l=0;l<o.count();l++)a.append("<td/>");t.rows({page:"current"}).every(function(n){var i,e=this.node();e&&(i=e.cloneNode(!1),t.cells(n,o).every(function(e,t){t=r.s.childNodeStore[n+"-"+t];(t?b(this.node().cloneNode(!1)).append(b(t).clone()):b(this.node()).clone(!1)).appendTo(i)}),d.append(i))}),d.find("th, td").css("display",""),t.table().footer.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(s)}),"inline"===this.c.details.type&&b(e).addClass("dtr-inline collapsed"),b(e).find("[name]").removeAttr("name"),b(e).css("position","relative");e=b("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(e);e.insertBefore(t.table().node()),a.children().each(function(e){e=t.column.index("fromVisible",e);n[e].minWidth=this.offsetWidth||0}),e.remove()}},_responsiveOnlyHidden:function(){var n=this.s.dt;return b.map(this.s.current,function(e,t){return!1===n.column(t).visible()||e})},_setColumnVis:function(e,t){var n=this,i=this.s.dt,r=t?"":"none";this._setHeaderVis(e,t,i.table().header.structure()),this._setHeaderVis(e,t,i.table().footer.structure()),i.column(e).nodes().to$().css("display",r).toggleClass("dtr-hidden",!t),b.isEmptyObject(this.s.childNodeStore)||i.cells(null,e).indexes().each(function(e){n._childNodesRestore(i,e.row,e.column)})},_setHeaderVis:function(n,i,e){var r=this,o=i?"":"none";e.forEach(function(e){if(e[n])b(e[n].cell).css("display",o).toggleClass("dtr-hidden",!i);else for(var t=n;0<=t;){if(e[t]){e[t].cell.colSpan=r._colspan(e,t);break}t--}})},_colspan:function(e,t){for(var n=1,i=t+1;i<e.length;i++)if(null===e[i]&&this.s.current[i])n++;else if(e[i])break;return n},_tabIndexes:function(){var e=this.s.dt,t=e.cells({page:"current"}).nodes().to$(),n=e.settings()[0],i=this.c.details.target;t.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"),("number"==typeof i?e.cells(null,i,{page:"current"}).nodes().to$():b(i="td:first-child, th:first-child"===i?">td:first-child, >th:first-child":i,e.rows({page:"current"}).nodes())).attr("tabIndex",n.iTabIndex).data("dtr-keyboard",1)}}),a.defaults={breakpoints:a.breakpoints=[{name:"desktop",width:1/0},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}],auto:!0,details:{display:(a.display={childRow:function(e,t,n){var i=b(e.node());return t?i.hasClass("dtr-expanded")?(e.child(n(),"child").show(),!0):void 0:i.hasClass("dtr-expanded")?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},childRowImmediate:function(e,t,n){var i=b(e.node());return!t&&i.hasClass("dtr-expanded")||!e.responsive.hasHidden()?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},modal:function(s){return function(e,t,n,i){n=n();if(!1===n)return!1;if(t){if(!(o=b("div.dtr-modal-content")).length||e.index()!==o.data("dtr-row-idx"))return null;o.empty().append(n)}else{var r=function(){o.remove(),b(d).off("keypress.dtr"),b(e.node()).removeClass("dtr-expanded"),i()},o=b('<div class="dtr-modal"/>').append(b('<div class="dtr-modal-display"/>').append(b('<div class="dtr-modal-content"/>').data("dtr-row-idx",e.index()).append(n)).append(b('<div class="dtr-modal-close">&times;</div>').click(function(){r()}))).append(b('<div class="dtr-modal-background"/>').click(function(){r()})).appendTo("body");b(e.node()).addClass("dtr-expanded"),b(d).on("keyup.dtr",function(e){27===e.keyCode&&(e.stopPropagation(),r())})}return s&&s.header&&b("div.dtr-modal-content").prepend("<h2>"+s.header(e)+"</h2>"),!0}}}).childRow,renderer:(a.renderer={listHiddenNodes:function(){return function(i,e,t){var r=this,o=b('<ul data-dtr-index="'+e+'" class="dtr-details"/>'),s=!1;return b.each(t,function(e,t){var n;t.hidden&&(n=t.className?'class="'+t.className+'"':"",b("<li "+n+' data-dtr-index="'+t.columnIndex+'" data-dt-row="'+t.rowIndex+'" data-dt-column="'+t.columnIndex+'"><span class="dtr-title">'+t.title+"</span> </li>").append(b('<span class="dtr-data"/>').append(r._childNodes(i,t.rowIndex,t.columnIndex))).appendTo(o),s=!0)}),!!s&&o}},listHidden:function(){return function(e,t,n){n=b.map(n,function(e){var t=e.className?'class="'+e.className+'"':"";return e.hidden?"<li "+t+' data-dtr-index="'+e.columnIndex+'" data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><span class="dtr-title">'+e.title+'</span> <span class="dtr-data">'+e.data+"</span></li>":""}).join("");return!!n&&b('<ul data-dtr-index="'+t+'" class="dtr-details"/>').append(n)}},tableAll:function(i){return i=b.extend({tableClass:""},i),function(e,t,n){n=b.map(n,function(e){return"<tr "+(e.className?'class="'+e.className+'"':"")+' data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><td>'+e.title+":</td> <td>"+e.data+"</td></tr>"}).join("");return b('<table class="'+i.tableClass+' dtr-details" width="100%"/>').append(n)}}}).listHidden(),target:0,type:"inline"},orthogonal:"display"},b.fn.dataTable.Api);return e.register("responsive()",function(){return this}),e.register("responsive.index()",function(e){return{column:(e=b(e)).data("dtr-index"),row:e.parent().data("dtr-index")}}),e.register("responsive.rebuild()",function(){return this.iterator("table",function(e){e._responsive&&e._responsive._classLogic()})}),e.register("responsive.recalc()",function(){return this.iterator("table",function(e){e._responsive&&(e._responsive._resizeAuto(),e._responsive._resize())})}),e.register("responsive.hasHidden()",function(){var e=this.context[0];return!!e._responsive&&-1!==b.inArray(!1,e._responsive._responsiveOnlyHidden())}),e.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(e,t){return!!e._responsive&&e._responsive._responsiveOnlyHidden()[t]},1)}),a.version="3.0.2",b.fn.dataTable.Responsive=a,b.fn.DataTable.Responsive=a,b(d).on("preInit.dt.dtr",function(e,t,n){"dt"===e.namespace&&(b(t.nTable).hasClass("responsive")||b(t.nTable).hasClass("dt-responsive")||t.oInit.responsive||i.defaults.responsive)&&!1!==(e=t.oInit.responsive)&&new a(t,b.isPlainObject(e)?e:{})}),i});
  63.  
  64. /*! Bootstrap 4 integration for DataTables' Responsive
  65. * © SpryMedia Ltd - datatables.net/license
  66. */
  67. !function(n){var a,t;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-responsive"],function(e){return n(e,window,document)}):"object"==typeof exports?(a=require("jquery"),t=function(e,d){d.fn.dataTable||require("datatables.net-bs4")(e,d),d.fn.dataTable.Responsive||require("datatables.net-responsive")(e,d)},"undefined"==typeof window?module.exports=function(e,d){return e=e||window,d=d||a(e),t(e,d),n(d,0,e.document)}:(t(window,a),module.exports=n(a,window,window.document))):n(jQuery,window,document)}(function(s,e,l){"use strict";var d=s.fn.dataTable,n=d.Responsive.display,u=n.modal,m=s('<div class="modal fade dtr-bs-modal" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"/></div></div></div>');return n.modal=function(r){return function(e,d,n,a){if(s.fn.modal){var t,o,i=n();if(!1===i)return!1;if(d){if(!s.contains(l,m[0])||e.index()!==m.data("dtr-row-idx"))return null;m.find("div.modal-body").empty().append(i)}else r&&r.header&&(o=(t=m.find("div.modal-header")).find("button").detach(),t.empty().append('<h4 class="modal-title">'+r.header(e)+"</h4>").append(o)),m.find("div.modal-body").empty().append(i),m.data("dtr-row-idx",e.index()).one("hidden.bs.modal",a).appendTo("body").modal();return!0}return u(e,d,n,a)}},d});
  68.  
  69. /*! RowReorder 1.5.0
  70. * © SpryMedia Ltd - datatables.net/license
  71. */
  72. !function(o){var r,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return o(t,window,document)}):"object"==typeof exports?(r=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||r(t),n(t,e),o(e,t,t.document)}:(n(window,r),module.exports=o(r,window,window.document))):o(jQuery,window,document)}(function(v,d,l){"use strict";function s(t,e){if(!i.versionCheck||!i.versionCheck("1.11"))throw"DataTables RowReorder requires DataTables 1.11 or newer";if(this.c=v.extend(!0,{},i.defaults.rowReorder,s.defaults,e),this.s={bodyTop:null,dt:new i.Api(t),getDataFn:i.util.get(this.c.dataSrc),middles:null,scroll:{},scrollInterval:null,setDataFn:i.util.set(this.c.dataSrc),start:{top:0,left:0,offsetTop:0,offsetLeft:0,nodes:[],rowIndex:0},windowHeight:0,documentOuterHeight:0,domCloneOuterHeight:0,dropAllowed:!0},this.dom={clone:null,cloneParent:null,dtScroll:v("div.dataTables_scrollBody, div.dt-scroll-body",this.s.dt.table().container())},e=this.s.dt.settings()[0],t=e.rowreorder)return t;this.dom.dtScroll.length||(this.dom.dtScroll=v(this.s.dt.table().container(),"tbody")),(e.rowreorder=this)._constructor()}var i=v.fn.dataTable,t=(v.extend(s.prototype,{_constructor:function(){var r=this,n=this.s.dt,t=v(n.table().node());"static"===t.css("position")&&t.css("position","relative"),v(n.table().container()).on("mousedown.rowReorder touchstart.rowReorder",this.c.selector,function(t){var e,o;if(r.c.enable)return!!v(t.target).is(r.c.excludedChildren)||(e=v(this).closest("tr"),(o=n.row(e)).any()?(r._emitEvent("pre-row-reorder",{node:o.node(),index:o.index()}),r._mouseDown(t,e),!1):void 0)}),n.on("destroy.rowReorder",function(){v(n.table().container()).off(".rowReorder"),n.off(".rowReorder")}),this._keyup=this._keyup.bind(this)},_cachePositions:function(){var t=this.s.dt,r=v(t.table().node()).find("thead").outerHeight(),e=v.unique(t.rows({page:"current"}).nodes().toArray()),e=v.map(e,function(t,e){var o=v(t).position().top-r;return(o+o+v(t).outerHeight())/2});this.s.middles=e,this.s.bodyTop=v(t.table().body()).offset().top,this.s.windowHeight=v(d).height(),this.s.documentOuterHeight=v(l).outerHeight(),this.s.bodyArea=this._calcBodyArea()},_clone:function(t){var e=this.s.dt,e=v(e.table().node().cloneNode(!1)).addClass("dt-rowReorder-float").append("<tbody/>").append(t.clone(!1)),o=t.outerWidth(),r=t.outerHeight(),n=v(v(this.s.dt.table().node()).parent()),s=n.width(),n=n.scrollLeft(),i=t.children().map(function(){return v(this).width()}),t=(e.width(o).height(r).find("tr").children().each(function(t){this.style.width=i[t]+"px"}),v("<div>").addClass("dt-rowReorder-float-parent").width(s).append(e).appendTo("body").scrollLeft(n));this.dom.clone=e,this.dom.cloneParent=t,this.s.domCloneOuterHeight=e.outerHeight()},_clonePosition:function(t){var e=this.s.start,o=this._eventToPage(t,"Y")-e.top,t=this._eventToPage(t,"X")-e.left,r=this.c.snapX,o=o+e.offsetTop,r=!0===r?e.offsetLeft:"number"==typeof r?e.offsetLeft+r:t+e.offsetLeft+this.dom.cloneParent.scrollLeft();o<0?o=0:o+this.s.domCloneOuterHeight>this.s.documentOuterHeight&&(o=this.s.documentOuterHeight-this.s.domCloneOuterHeight),this.dom.cloneParent.css({top:o,left:r})},_emitEvent:function(o,r){var n;return this.s.dt.iterator("table",function(t,e){t=v(t.nTable).triggerHandler(o+".dt",r);void 0!==t&&(n=t)}),n},_eventToPage:function(t,e){return(-1!==t.type.indexOf("touch")?t.originalEvent.touches[0]:t)["page"+e]},_mouseDown:function(t,e){var o=this,r=this.s.dt,n=this.s.start,s=this.c.cancelable,i=e.offset(),i=(n.top=this._eventToPage(t,"Y"),n.left=this._eventToPage(t,"X"),n.offsetTop=i.top,n.offsetLeft=i.left,n.nodes=v.unique(r.rows({page:"current"}).nodes().toArray()),this._cachePositions(),this._clone(e),this._clonePosition(t),this._eventToPage(t,"Y")-this.s.bodyTop),r=(n.rowIndex=this._calcRowIndexByPos(i),(this.dom.target=e).addClass("dt-rowReorder-moving"),v(l).on("mouseup.rowReorder touchend.rowReorder",function(t){o._mouseUp(t)}).on("mousemove.rowReorder touchmove.rowReorder",function(t){o._mouseMove(t)}),v(d).width()===v(l).width()&&v(l.body).addClass("dt-rowReorder-noOverflow"),this.dom.dtScroll);this.s.scroll={windowHeight:v(d).height(),windowWidth:v(d).width(),dtTop:r.length?r.offset().top:null,dtLeft:r.length?r.offset().left:null,dtHeight:r.length?r.outerHeight():null,dtWidth:r.length?r.outerWidth():null},s&&v(l).on("keyup",this._keyup)},_mouseMove:function(t){this._clonePosition(t);for(var e,o,r=this.s.start,n=this.c.cancelable,s=(n&&(e=this.s.bodyArea,o=this._calcCloneParentArea(),this.s.dropAllowed=this._rectanglesIntersect(e,o),this.s.dropAllowed?v(this.dom.cloneParent).removeClass("drop-not-allowed"):v(this.dom.cloneParent).addClass("drop-not-allowed")),this._eventToPage(t,"Y")-this.s.bodyTop),i=this.s.middles,d=null,l=0,a=i.length;l<a;l++)if(s<i[l]){d=l;break}null===d&&(d=i.length),n&&(this.s.dropAllowed||(d=r.rowIndex>this.s.lastInsert?r.rowIndex+1:r.rowIndex),this.dom.target.toggleClass("dt-rowReorder-moving",this.s.dropAllowed)),this._moveTargetIntoPosition(d),this._shiftScroll(t)},_mouseUp:function(t){var e=this,o=this.s.dt,r=this.c.dataSrc;if(this.s.dropAllowed){for(var n,s,i,d=this.s.start.nodes,l=v.unique(o.rows({page:"current"}).nodes().toArray()),a={},c=[],h=[],u=this.s.getDataFn,f=this.s.setDataFn,w=0,p=d.length;w<p;w++)d[w]!==l[w]&&(n=o.row(l[w]).id(),s=o.row(l[w]).data(),i=o.row(d[w]).data(),n&&(a[n]=u(i)),c.push({node:l[w],oldData:u(s),newData:u(i),newPosition:w,oldPosition:v.inArray(l[w],d)}),h.push(l[w]));var g,m=[c,{dataSrc:r,nodes:h,values:a,triggerRow:o.row(this.dom.target),originalEvent:t}];!1===this._emitEvent("row-reorder",m)?e._cancel():(this._cleanupDragging(),g=function(){if(e.c.update){for(w=0,p=c.length;w<p;w++){var t=o.row(c[w].node).data();f(t,c[w].newData),o.columns().every(function(){this.dataSrc()===r&&o.cell(c[w].node,this.index()).invalidate("data")})}e._emitEvent("row-reordered",m),o.draw(!1)}},this.c.editor?(this.c.enable=!1,this.c.editor.edit(h,!1,v.extend({submit:"changed"},this.c.formOptions)).multiSet(r,a).one("preSubmitCancelled.rowReorder",function(){e.c.enable=!0,e.c.editor.off(".rowReorder"),o.draw(!1)}).one("submitUnsuccessful.rowReorder",function(){o.draw(!1)}).one("submitSuccess.rowReorder",function(){g()}).one("submitComplete",function(){e.c.enable=!0,e.c.editor.off(".rowReorder")}).submit()):g())}else e._cancel()},_moveTargetIntoPosition:function(t){var e,o,r=this.s.dt;null!==this.s.lastInsert&&this.s.lastInsert===t||(e=v.unique(r.rows({page:"current"}).nodes().toArray()),o="",o=t>this.s.lastInsert?(this.dom.target.insertAfter(e[t-1]),"after"):(this.dom.target.insertBefore(e[t]),"before"),this._cachePositions(),this.s.lastInsert=t,this._emitEvent("row-reorder-changed",{insertPlacement:o,insertPoint:t,row:r.row(this.dom.target)}))},_cleanupDragging:function(){var t=this.c.cancelable;this.dom.clone.remove(),this.dom.cloneParent.remove(),this.dom.clone=null,this.dom.cloneParent=null,this.dom.target.removeClass("dt-rowReorder-moving"),v(l).off(".rowReorder"),v(l.body).removeClass("dt-rowReorder-noOverflow"),clearInterval(this.s.scrollInterval),this.s.scrollInterval=null,t&&v(l).off("keyup",this._keyup)},_shiftScroll:function(t){var e,o,r=this,n=this.s.scroll,s=!1,i=t.pageY-l.body.scrollTop;i<v(d).scrollTop()+65?e=-5:i>n.windowHeight+v(d).scrollTop()-65&&(e=5),null!==n.dtTop&&t.pageY<n.dtTop+65?o=-5:null!==n.dtTop&&t.pageY>n.dtTop+n.dtHeight-65&&(o=5),e||o?(n.windowVert=e,n.dtVert=o,s=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null),!this.s.scrollInterval&&s&&(this.s.scrollInterval=setInterval(function(){var t;n.windowVert&&(t=v(l).scrollTop(),v(l).scrollTop(t+n.windowVert),t!==v(l).scrollTop())&&(t=parseFloat(r.dom.cloneParent.css("top")),r.dom.cloneParent.css("top",t+n.windowVert)),n.dtVert&&(t=r.dom.dtScroll[0],n.dtVert)&&(t.scrollTop+=n.dtVert)},20))},_calcBodyArea:function(t){var e=this.s.dt,o=v(e.table().body()).offset();return{left:o.left,top:o.top,right:o.left+v(e.table().body()).width(),bottom:o.top+v(e.table().body()).height()}},_calcCloneParentArea:function(t){var e=v(this.dom.cloneParent).offset();return{left:e.left,top:e.top,right:e.left+v(this.dom.cloneParent).width(),bottom:e.top+v(this.dom.cloneParent).height()}},_rectanglesIntersect:function(t,e){return!(t.left>=e.right||e.left>=t.right||t.top>=e.bottom||e.top>=t.bottom)},_calcRowIndexByPos:function(r){var t=this.s.dt,e=v.unique(t.rows({page:"current"}).nodes().toArray()),n=-1,s=v(t.table().node()).find("thead").outerHeight();return v.each(e,function(t,e){var o=v(e).position().top-s,e=o+v(e).outerHeight();o<=r&&r<=e&&(n=t)}),n},_keyup:function(t){this.c.cancelable&&27===t.which&&(t.preventDefault(),this._cancel())},_cancel:function(){var t=this.s.start,t=t.rowIndex>this.s.lastInsert?t.rowIndex+1:t.rowIndex;this._moveTargetIntoPosition(t),this._cleanupDragging(),this._emitEvent("row-reorder-canceled",[this.s.start.rowIndex])}}),s.defaults={dataSrc:0,editor:null,enable:!0,formOptions:{},selector:"td:first-child",snapX:!1,update:!0,excludedChildren:"a",cancelable:!1},v.fn.dataTable.Api);return t.register("rowReorder()",function(){return this}),t.register("rowReorder.enable()",function(e){return void 0===e&&(e=!0),this.iterator("table",function(t){t.rowreorder&&(t.rowreorder.c.enable=e)})}),t.register("rowReorder.disable()",function(){return this.iterator("table",function(t){t.rowreorder&&(t.rowreorder.c.enable=!1)})}),s.version="1.5.0",v.fn.dataTable.RowReorder=s,v.fn.DataTable.RowReorder=s,v(l).on("init.dt.dtr",function(t,e,o){var r,n;"dt"===t.namespace&&(t=e.oInit.rowReorder,r=i.defaults.rowReorder,t||r)&&(n=v.extend({},t,r),!1!==t)&&new s(e,n)}),i});
  73.  
  74. /*! Bootstrap 4 styling wrapper for RowReorder
  75. * © SpryMedia Ltd - datatables.net/license
  76. */
  77. !function(t){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-rowreorder"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(e,n){n.fn.dataTable||require("datatables.net-bs4")(e,n),n.fn.dataTable.RowReorder||require("datatables.net-rowreorder")(e,n)},"undefined"==typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),r(e,n),t(n,0,e.document)}:(r(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)}(function(e,n,t){"use strict";return e.fn.dataTable});
  78.  
  79. var ferveX = jQuery.noConflict(true);
  80. ferveX(document).ready(function() {
  81. var url = document.location.href;
  82. const BASE_URL = document.location.origin;
  83. const COOKIE_DOMAIN = document.location.hostname.match(/([^\.]+\.[^\.]+)$/)[0] || document.location.hostname;
  84. const SIZE_UNITS = ['Octets', 'Ko', 'Mo', 'Go', 'To', 'Po', 'Eo', 'Zo', 'Yo'];
  85. var styleBouton = "margin:15px 8px 0; display:inline-block; border-radius:25px; padding:8px 15px; text-transform:uppercase; background:#4e5c6f; color:#fff; font-size:13px; font-weight:700; transition:background 0.5s ease;";
  86. var styleBoutonF = "margin:15px 8px 0; display:inline-block; border-radius:25px; padding:8px 15px; text-transform:uppercase; background:#267bbb; color:#fff; font-size:13px; font-weight:700; transition:background 0.5s ease;";
  87. var styleBoutonS = "margin:15px 8px 0; display:inline-block; border-radius:25px; padding:8px 15px; text-transform:uppercase; background:#885599; color:#fff; font-size:13px; font-weight:700; transition:background 0.5s ease;";
  88. ferveX("head link[rel='stylesheet']").last().after('<style type="text/css">#top_panel{z-index: 1000}.promo-container{display:none!important}body #middle .search-criteria td button.solo{width:180px!important}.w65{width:65px}.f16{font-size:16px;vertical-align:text-top;}.butonFervexHover{background:#22282f!important;color:#fff!important;text-decoration:none!important}.focus-wrap-nav .p-navEl-link[data-nav-id=moncompte]:before{content:"\\f007"}.focus-wrap-nav .p-navEl-link[data-nav-id=messagerie]:before{content:"\\f0e0"}.focus-wrap-nav .p-navEl-link[data-nav-id=uploadtorrent]:before{content:"\\f093"}.focus-wrap-nav .p-navEl-link[data-nav-id=chercheCopain]:before{content:"\\f002"}.focus-wrap-nav .p-navEl-link[data-nav-id=voirfavoris]:before{content:"\\f02e"}.fervexTools{box-shadow:0px 0px 4px rgba(0,0,0,.5)!important;border:solid 1px #777;z-index:999999;background:#dff0d8;}.fervexTools:hover{box-shadow:0px 3px 10px rgba(0,0,0,.6)!important}.fervexTools1{position:fixed;padding:2px 3px;border-radius:4px;font-size:12px}.fervexTools2{position:absolute;padding:4px 3px 4px 5px;border-radius:50%;width:25px;height:25px;line-height:1.15}.fervexTime{position:absolute;top:35px;width:100%;text-align:center;color:#eee;}.fervexTime .badge{font-size:100%}.fervexTime .badge span{color:#6cded4}#fervextip{position:fixed;z-index:1070;display:inline-block;font-size:.875rem;text-transform:none;font-weight:400;font-style:normal;}#fervextip .tipBody{display:inline-block;max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem;}.config-recherche-bas,.config-recherche-popup,.config-recherche-date-desc,.config-recherche-date-asc,.config-sidebar-on,.config-sidebar-off,.config-notifs-on,.config-notifs-off,.config-notifs-total-on,.config-notifs-total-off,.config-preview-on,.config-preview-off,.config-preview2-on,.config-preview2-off{padding:4px 6px;font-size:0.875em;text-transform:inherit;font-weight:400;font-family:inherit} #nfoModal .modal-body pre{white-space: pre-wrap}.results .dataTables_info {display: inherit!important}.m-2{margin:0.5rem}.ico_spin {animation: spin-animation 1s infinite;animation-timing-function: linear;}@keyframes spin-animation {0% {transform: rotate(0deg);}100% {transform: rotate(360deg);}}#middle .content table.notif td{padding:6px 10px!important;font-size:12px;}#middle table.notif tbody td .btn{margin-top:0;}#middle table.notif td:first-child {width:130px}.block-outer-main+.block-outer-main {margin-left:15px;}</style>');
  89. ferveX("body").prepend('<div class="fervexTools fervexTools1" style="display:none"><a href="#" style="text-decoration:none" title="Recherche torrent sur YGG" target="_blank">Recherche</a></ul>');
  90. /* cookies & backup */
  91. function setCookie(name, value, days, domain = COOKIE_DOMAIN) {
  92. var expires = "";
  93. if (days) {
  94. var date = new Date();
  95. date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  96. expires = "; expires=" + date.toUTCString();
  97. }
  98. document.cookie = name + "=" + (value || "") + expires + ";domain=." + domain + ";path=/";
  99. }
  100.  
  101. function getCookie(name) {
  102. var nameEQ = name + "=";
  103. var ca = document.cookie.split(';');
  104. for (var i = 0; i < ca.length; i++) {
  105. var c = ca[i];
  106. while (c.charAt(0) == ' ') c = c.substring(1, c.length);
  107. if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  108. }
  109. return null;
  110. }
  111.  
  112. function setBackup(name, value) {
  113. GM_setValue(name + "_backup", value);
  114. }
  115.  
  116. function getBackup(name) {
  117. return GM_getValue(name + "_backup", null);
  118. }
  119.  
  120. function setValue(name, value, days) {
  121. setCookie(name, value, days, COOKIE_DOMAIN);
  122. setBackup(name, value);
  123. }
  124.  
  125. function getValue(name, days) {
  126. var value = getCookie(name);
  127. if (value === null) {
  128. value = getBackup(name);
  129. if (value !== null) {
  130. setCookie(name, value, days, COOKIE_DOMAIN);
  131. }
  132. } else {
  133. setBackup(name, value);
  134. }
  135. return value;
  136. }
  137. /* fonction conversion octets */
  138. function formatOctets(bytes, decimals = 2) {
  139. if (bytes === 0) return '~0';
  140. const k = 1024;
  141. const dm = decimals < 0 ? 0 : decimals;
  142. const i = Math.floor(Math.log(bytes) / Math.log(k));
  143. return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + SIZE_UNITS[i];
  144. }
  145.  
  146. function sizeStringToByteNumber(sizeString) {
  147. const sizeUnit = sizeString.substring(sizeString.length - 2);
  148. const sizeUnitIndex = SIZE_UNITS.findIndex((si) => (si === sizeUnit));
  149. const size = Number.parseFloat(sizeString.slice(0, -2));
  150. if (sizeUnitIndex >= 1) {
  151. return size * Math.pow(1024, sizeUnitIndex);
  152. }
  153. return size;
  154. }
  155. /* calcul avancement */
  156. ferveX(document).ready(function() {
  157. var up = ferveX('#top_panel .ct li:first-child strong:first-child').text().trim();
  158. var down = ferveX('#top_panel .ct li:first-child strong:nth-child(2)').text().trim();
  159. if (!up || !down) {
  160. return;
  161. }
  162. var avancement = sizeStringToByteNumber(up) - sizeStringToByteNumber(down);
  163. ferveX('#top_panel .ct li:first-child').after('<li><strong>Δ ' + (avancement < 0 ? '<1 !' : formatOctets(avancement)) + '</strong></li>');
  164. });
  165. /* Sélecteur pour Recherche dynamique */
  166. if (!window.x) {
  167. x = {};
  168. }
  169. x.Selector = {};
  170. x.Selector.getSelected = function() {
  171. var t = '';
  172. if (window.getSelection) {
  173. t = window.getSelection();
  174. } else if (document.getSelection) {
  175. t = document.getSelection();
  176. } else if (document.selection) {
  177. t = document.selection.createRange().text;
  178. }
  179. return t;
  180. }
  181. var pageX;
  182. var pageY;
  183. var fervexTemp = '0';
  184. /* Icone recherche dynamique */
  185. var iconeRecherche = 'ico_search';
  186. if (url.indexOf("/forum/") > -1) {
  187. iconeRecherche = 'fa fa-search';
  188. }
  189. const sidebar = (getValue('fervex_sidebar') == 'on') ? " checked" : "";
  190. const notifs = (getValue('fervex_notifs') == 'off') ? "" : " checked";
  191. const notifs_total = (getValue('fervex_notifs_total') == 'off') ? "" : " checked";
  192. const preview = (getValue('fervex_preview') == 'on') ? " checked" : "";
  193. const preview_delai = (getValue('fervex_preview_delai') !== null) ? getValue('fervex_preview_delai') : 400;
  194. const preview_height = (getValue('fervex_preview_height') !== null) ? getValue('fervex_preview_height') : 300;
  195. const preview2 = (getValue('fervex_preview2') == 'on') ? " checked" : "";
  196. const darkmode = (getValue('re_darkmode') == 'on') ? " checked" : "";
  197. const scroll = (getValue('re_scroll') == 'on') ? " checked" : "";
  198. ferveX("body")
  199. .prepend('<div id="fervexConf" style="display:none;position:fixed;right:10px;top:10px;background:#21242b;z-index:999999;border:1px solid #777;color:#ddd;text-align:center;font-size: 13px; max-height:90vh; overflow-x:auto;">' +
  200. ' <div style="border-bottom:1px solid #777; padding:8px; background:#222; cursor:move" id="fervexConfMenu">' +
  201. ' <b>ReYGGTools</b>' +
  202. ' </div>' +
  203. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  204. ' <p style="margin: 0 0 7px">Mode sombre (Dark Mode)</p>' +
  205. ' <p style="margin-bottom:0">' +
  206. ' <button type="button" class="btn btn-sm btn-primary config-darkmode-on">Oui</button> ' +
  207. ' <button type="button" class="btn btn-sm btn-primary config-darkmode-off">Non</button>' +
  208. ' </p>' +
  209. ' </div>' +
  210. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  211. ' <p style="margin: 0 0 7px">Recherche sur sélection</p>' +
  212. ' <p style="margin-bottom:0">' +
  213. ' <button type="button" class="btn btn-sm btn-primary config-recherche-bas">Bas de l\'écran</button> ' +
  214. ' <button type="button" class="btn btn-sm btn-primary config-recherche-popup">Popup</button>' +
  215. ' </p>' +
  216. ' </div>' +
  217. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  218. ' <p style="margin: 0 0 7px">Recherche par défaut</p>' +
  219. ' <p style="margin-bottom:0">' +
  220. ' <button type="button" class="btn btn-sm btn-primary config-recherche-date-desc">Plus récent</button> ' +
  221. ' <button type="button" class="btn btn-sm btn-primary config-recherche-date-asc">Plus ancien</button>' +
  222. ' </p>' +
  223. ' </div>' +
  224. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  225. ' <p style="margin: 0 0 7px">Afficher la sidebar ?</p>' +
  226. ' <p style="margin-bottom:0">' +
  227. ' <button type="button" class="btn btn-sm btn-primary config-sidebar-on">Oui</button> ' +
  228. ' <button type="button" class="btn btn-sm btn-primary config-sidebar-off">Non</button>' +
  229. ' </p>' +
  230. ' </div>' +
  231. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  232. ' <p style="margin: 0 0 7px">Afficher lien "notifications" si 0 notif ?</p>' +
  233. ' <p style="margin-bottom:0">' +
  234. ' <button type="button" class="btn btn-sm btn-primary config-notifs-on">Oui</button> ' +
  235. ' <button type="button" class="btn btn-sm btn-primary config-notifs-off">Non</button>' +
  236. ' </p>' +
  237. ' </div>' +
  238. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  239. ' <p style="margin: 0 0 7px">Afficher compteur notifs total ?</p>' +
  240. ' <p style="margin-bottom:0">' +
  241. ' <button type="button" class="btn btn-sm btn-primary config-notifs-total-on">Oui</button> ' +
  242. ' <button type="button" class="btn btn-sm btn-primary config-notifs-total-off">Non</button>' +
  243. ' </p>' +
  244. ' </div>' +
  245. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  246. ' <p style="margin: 0 0 7px">Afficher preview (survol) ?</p>' +
  247. ' <p style="margin-bottom:10px">' +
  248. ' <button type="button" class="btn btn-sm btn-primary config-preview-on">Oui</button> ' +
  249. ' <button type="button" class="btn btn-sm btn-primary config-preview-off">Non</button>' +
  250. ' </p>' +
  251. ' <p style="margin-bottom:10px">' +
  252. ' <input type="range" class="height_preview" min="100" max="600" step="10" value="' + preview_height + '"><br>' +
  253. ' Hauteur image : <span class="height_preview_value">' + preview_height + '</span> px' +
  254. ' </p>' +
  255. ' <p style="margin-bottom:0">' +
  256. ' <input type="range" class="tempo_preview" min="100" max="1000" step="100" value="' + preview_delai + '"><br>' +
  257. ' Délai : <span class="tempo_preview_value">' + preview_delai + '</span> ms' +
  258. ' </p>' +
  259. ' </div>' +
  260. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  261. ' <p style="margin: 0 0 7px">Afficher preview (fixe) ?<br><em style="color:#ccc;font-size:11px">[expérimental]</em></p>' +
  262. ' <p style="margin-bottom:0">' +
  263. ' <button type="button" class="btn btn-sm btn-primary config-preview2-on">Oui</button> ' +
  264. ' <button type="button" class="btn btn-sm btn-primary config-preview2-off">Non</button>' +
  265. ' </p>' +
  266. ' </div>' +
  267. ' <div style="border-bottom:1px solid #777; padding:10px 10px 12px">' +
  268. ' <p style="margin: 0 0 7px">Infinite Scroll ?<br><em style="color:#ccc;font-size:11px">[expérimental]</em></p>' +
  269. ' <p style="margin-bottom:0">' +
  270. ' <button type="button" class="btn btn-sm btn-primary config-scroll-on">Oui</button> ' +
  271. ' <button type="button" class="btn btn-sm btn-primary config-scroll-off">Non</button>' +
  272. ' </p>' +
  273. ' </div>' +
  274. ' <div style="padding:8px; background:#222; cursor: pointer;" id="close_menu_reyggtools">Fermer</div>' +
  275. '</div>'
  276. );
  277. ferveX('#update-settings')
  278. .append('<h2>Paramètres ReYGGTools</h2>' +
  279. '<table>' +
  280. ' <tbody>' +
  281. ' <tr>' +
  282. ' <td style="width:240px">' +
  283. ' <a type="button" class="my-1 mr-1 btn btn-sm btn-primary config-recherche-bas">Bas de l\'écran</a>' +
  284. ' <a type="button" class="my-1 btn btn-sm btn-primary config-recherche-popup">En popup</a>' +
  285. ' </td>' +
  286. ' <td><strong>Recherche sur sélection de texte</strong> <small>&nbsp; (Affiche un bouton en bas d\écran ou en popup pour lancer une recherche torrent du texte sélectionné)</small></td>' +
  287. ' <tr>' +
  288. ' <tr>' +
  289. ' <td>' +
  290. ' <a type="button" class="my-1 mr-1 btn btn-sm btn-primary config-recherche-date-desc">Plus récent</a>' +
  291. ' <a type="button" class="my-1 btn btn-sm btn-primary config-recherche-date-asc">Plus ancien</a>' +
  292. ' </td>' +
  293. ' <td><strong>Tri du moteur de recherche par défaut</strong> <small>&nbsp; (Affiche les torrents plus récents/anciens en premier)</small></td>' +
  294. ' <tr>' +
  295. ' <tr>' +
  296. ' <td>' +
  297. ' <div class="pretty p-default">' +
  298. ' <input type="checkbox" id="config_sidebar"' + sidebar + '>' +
  299. ' <div class="state"><label></label></div>' +
  300. ' </div>' +
  301. ' </td>' +
  302. ' <td><strong>Afficher la sidebar</strong> <small>&nbsp; (Afficher la barre latérale de gauche contenant les catégories des torrents)</small></td>' +
  303. ' <tr>' +
  304. ' <td>' +
  305. ' <div class="pretty p-default">' +
  306. ' <input type="checkbox" id="config_darkmode"' + darkmode + '>' +
  307. ' <div class="state"><label></label></div>' +
  308. ' </div>' +
  309. ' </td>' +
  310. ' <td><strong>Afficher en mode sombre (YGGDark)</strong> <small>&nbsp; (Affichage de YGG et de son forum dans un thème sombre)</small></td>' +
  311. ' <tr>' +
  312. ' <tr>' +
  313. ' <td>' +
  314. ' <div class="pretty p-default">' +
  315. ' <input type="checkbox" id="config_notifs"' + notifs + '>' +
  316. ' <div class="state"><label></label></div>' +
  317. ' </div>' +
  318. ' </td>' +
  319. ' <td><strong>Afficher le lien "notifications" si 0 notif</strong> <small>&nbsp; (Afficher le lien "notifications" dans le menu en haut de page même si aucun notif reçue)</small></td>' +
  320. ' <tr>' +
  321. ' <tr>' +
  322. ' <td>' +
  323. ' <div class="pretty p-default">' +
  324. ' <input type="checkbox" id="config_notifs_total"' + notifs_total + '>' +
  325. ' <div class="state"><label></label></div>' +
  326. ' </div>' +
  327. ' </td>' +
  328. ' <td><strong>Afficher le compteur de notifs total</strong> <small>&nbsp; (Afficher la bulle verte dans le menu en haut de page)</small></td>' +
  329. ' <tr>' +
  330. ' <tr>' +
  331. ' <td>' +
  332. ' <div class="pretty p-default">' +
  333. ' <input type="checkbox" class="my-1" id="config_preview"' + preview + '>' +
  334. ' <div class="state"><label></label></div>' +
  335. ' </div>' +
  336. ' </td>' +
  337. ' <td>' +
  338. ' <p class="mb-2"><strong>Afficher les prévisualisations de jaquettes sur les torrents au survol de la souris</strong></p>' +
  339. ' <p class="mb-2"><input type="range" class="height_preview" min="100" max="600" step="10" value="' + preview_height + '"> Hauteur image : <span class="height_preview_value">' + preview_height + '</span> px</p>' +
  340. ' <p><input type="range" class="tempo_preview" min="100" max="1000" step="100" value="' + preview_delai + '"> Délai : <span class="tempo_preview_value">' + preview_delai + '</span> ms</p>' +
  341. ' </td>' +
  342. ' <tr>' +
  343. ' <tr>' +
  344. ' <td>' +
  345. ' <div class="pretty p-default">' +
  346. ' <input type="checkbox" class="my-1" id="config_preview2"' + preview2 + '>' +
  347. ' <div class="state"><label></label></div>' +
  348. ' </div>' +
  349. ' </td>' +
  350. ' <td><strong>Afficher les miniatures des jaquettes dans les listes de torrents</strong></td>' +
  351. ' <tr>' +
  352. ' <tr>' +
  353. ' <td>' +
  354. ' <div class="pretty p-default">' +
  355. ' <input type="checkbox" class="my-1" id="config_scroll"' + scroll + '>' +
  356. ' <div class="state"><label></label></div>' +
  357. ' </div>' +
  358. ' </td>' +
  359. ' <td><strong>Afficher les torrents à l\'infini lors de la recherche et dans la liste exclu (Infinite Scroll)</strong></td>' +
  360. ' <tr>' +
  361. ' </tbody>' +
  362. '</table>');
  363.  
  364. function TheDarkSide() {
  365. function addGlobalStyle(css) {
  366. var head, style;
  367. head = document.getElementsByTagName('head')[0];
  368. if (!head) {
  369. return;
  370. }
  371. style = document.createElement('style');
  372. style.type = 'text/css';
  373. style.innerHTML = css;
  374. head.appendChild(style);
  375. }
  376. var url = window.location.href;
  377. if (url.indexOf("/team/") === -1) {
  378. if (url.indexOf("/forum/") === -1) {
  379. addGlobalStyle(`
  380. #middle .default a {
  381. color: #cdcdcd!important
  382. }
  383. .modal-body {
  384. background-color: #333333!important;
  385. color: #ffffff!important;
  386. }
  387. .description-header {
  388. background: #2C343F!important;
  389. }
  390. .text-dark {
  391. color: white!important;
  392. }
  393. .text-left {
  394. color: white!important;
  395. }
  396. .font-italic {
  397. color: white!important;
  398. }
  399. .text-justify {
  400. color: white!important;
  401. }
  402. .border-dark {
  403. border-color: white!important;
  404. }
  405. .form-control {
  406. background: #1a2028!important;
  407. color: white!important;
  408. }
  409. .alert-dark {
  410. background-color: #252C35!important;
  411. color: white!important;
  412. }
  413. ::selection {
  414. background-color: rgba(149, 152, 157, 0.5);
  415. }
  416. .modal-footer {
  417. background-color: #2C343F!important;
  418. }
  419.  
  420. ::-webkit-scrollbar {
  421. width: 8px;
  422. }
  423. ::-webkit-scrollbar-track {
  424. background: #575a5c ;
  425. border-radius: 10px;
  426. }
  427. ::-webkit-scrollbar-thumb {
  428. background: #1b3544;
  429. border-radius: 10px;
  430. }
  431. ::-webkit-scrollbar-thumb:hover {
  432. background: #2b2f31;
  433. }
  434.  
  435. #middle .default,
  436. #middle .detail-account {
  437. background: #2a313a!important;
  438. color: #cdcdcd!important;
  439. }
  440. #middle .default .date, #middle #description .date {
  441. background: #2a313a!important;
  442. border-top: none!important;
  443. }
  444.  
  445. form label {
  446. color: #aaa;
  447. margin-top: 2px;
  448. }
  449.  
  450. .results {
  451. box-shadow: 0 0 10px rgb(0 0 0 / 15%)!important;
  452. background: #2a313a!important;
  453. }
  454. .results thead th {
  455. color: #ddd!important;
  456. background: #1d232a!important;
  457. }
  458. results tr:nth-child(odd) td,
  459. #middle table.notif tbody tr:nth-child(odd) td {
  460. background: #2a313a!important;
  461. }
  462.  
  463. .results td,
  464. #middle table.notif tbody td,
  465. #middle table td {
  466. background: #252c35!important;
  467. color: #aaa;
  468. border: 1px solid transparent!important;
  469. border-right: 1px solid #212121!important;
  470. border-bottom: 1px solid #212121!important;
  471. font-size: 12px;
  472. }
  473. #middle .results table tbody tr:nth-child(odd) td {
  474. background: #2a313a!important;
  475. }
  476. #torrents .results #DataTables_Table_0_filter > label > input {
  477. background: #1d232a;
  478. color: #fff;
  479. }
  480.  
  481. #middle .search-criteria,
  482. #middle .notifications {
  483. background: #1d232a!important;
  484. }
  485. #middle .search-criteria td,
  486. #middle .detail-account td{
  487. background: #1d232a!important;
  488. padding: 9px 8px!important;
  489. border-right: 1px solid transparent!important;
  490. border-bottom: 1px solid transparent!important;
  491. }
  492.  
  493. #middle table td a:not(.text-warning):not(.text-danger) {
  494. color: #eee!important;
  495. }
  496. #middle .detail-account td a {
  497. color: #7191bd!important;
  498. }
  499.  
  500. #middle table td a.butt {
  501. border-radius: 8px;
  502. border: 2px solid #5ad9a4;
  503. top: 0px;
  504. font-weight: 500;
  505. text-transform: inherit;
  506. font-size: 12px;
  507. padding: 4px 6px;
  508. color: #ffffff!important;
  509. }
  510.  
  511. #middle .search-criteria td.adv_search_option, #middle .search-criteria td:first-child {
  512. background: #1d232a!important;
  513. }
  514.  
  515. .search-criteria tr:first-child{
  516. padding-top:5px!important;
  517. }
  518. .search-criteria tr:last-child{
  519. padding-bottom:5px!important;
  520. }
  521.  
  522. #middle .search-criteria tr td:first-child,.search-criteria tr td:first-child, .search-criteria td.adv_search_option {
  523. color: #bbb!important;
  524. }
  525. #middle .search-criteria td .input-table {
  526. border: none!important;
  527. background-color: rgba(250,250,250,.03)!important;
  528. color: #ddd!important;
  529. }
  530. #middle .search-criteria td.alone {
  531. background: #1d232a!important
  532. }
  533.  
  534. .select2-container--bootstrap .select2-selection {
  535. background-color: rgba(250,250,250,.03)!important;
  536. border: none!important;
  537. }
  538. .select2-selection__rendered, .select2-selection__rendered {
  539. color: #555555!important;
  540. background-color: unset!important;
  541. border: none!important;
  542. }
  543. .select2-container--bootstrap .select2-selection--single .select2-selection__rendered {
  544. color: #ddd!important;
  545. padding: 0!important;
  546. }
  547. .select2-dropdown {
  548. color: #aaa;
  549. background-color: #242a31;
  550. border: 1px solid #1b1e24;
  551. }
  552. .select2-container--bootstrap .select2-search--dropdown .select2-search__field {
  553. background-color: #1d232a;
  554. border: 1px solid #2b2f31;
  555. color: #aaa;
  556. }
  557. .select2-container--bootstrap .select2-results__option[aria-selected=true] {
  558. background-color: #1d232a;
  559. color: #ebebeb;
  560. }
  561.  
  562. select.form-control:not([size]):not([multiple]):not(.select-tracker) {
  563. height: 40px!important;
  564. background: #1d232a!important;
  565. color: #aaa!important;
  566. }
  567. #upload-torrent input[type=text]{
  568. background: #1d232a!important;
  569. }
  570. #middle #upload-torrent .default input,
  571. #middle #torrent_description {
  572. background: #1d232a!important;
  573. color: #aaa!important;
  574. }
  575.  
  576. #middle .pagination {
  577. background: #2a313a!important;
  578. }
  579. #middle .pagination li {
  580. border-left: 1px solid #1d232a!important;
  581. }
  582. #middle .pagination li a {
  583. background: #343c46!important;
  584. color: #999!important;
  585. }
  586.  
  587. #middle .content .results .dataTables_wrapper {
  588. margin-bottom: 28px!important;
  589. }
  590. #middle .content .results .dataTables_info {
  591. color: #777!important;
  592. }
  593.  
  594. #middle .add-comment, #middle .add-note {
  595. background: #2b2f31;
  596. border-bottom: 3px solid #2b2f31;
  597. }
  598.  
  599. #middle .add-comment textarea, #middle .add-note textarea {
  600. color: #aaa;
  601. }
  602.  
  603. .wysibb {
  604. border: 1px solid #1c1c1c;
  605. position: relative;
  606. background: #1f2224;
  607. font-size: 13px;
  608. }
  609.  
  610. @media screen and (min-width: 992px) {
  611. .wysibb .wysibb-toolbar {
  612. background: #222;
  613. border-bottom: 1px solid #1c1c1c;
  614. }
  615.  
  616. .wysibb .wysibb-toolbar .wysibb-toolbar-container {
  617. margin: 0;
  618. border-right: 1px solid #1c1c1c;
  619. padding: 0;
  620. display: inline-block;
  621. }
  622.  
  623. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn .wbb-list {
  624. border: 1px solid #1f2224;
  625. box-shadow: 0 3px 20px #111;
  626. background: #2a313c;
  627. color: #aaa;
  628. }
  629.  
  630. .wbb-list .sc {
  631. border: 0;
  632. }
  633. }
  634.  
  635. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn .fonticon,
  636. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn span.btn-inner,
  637. .wbb-select .val {
  638. color: #aaa;
  639. text-shadow: none;
  640. }
  641. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn:hover,
  642. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn.wbb-select:hover,
  643. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn.wbb-dropdown:hover {
  644. background: #111;
  645. }
  646. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn.wbb-select.on,
  647. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn.wbb-select.on:active {
  648. border: 1px solid #333;
  649. background: #111;
  650. box-shadow: none;
  651. }
  652. .wysibb .wysibb-toolbar .wysibb-toolbar-container .wysibb-toolbar-btn:hover .fonticon {
  653. color: #aaa;
  654. }
  655.  
  656. .wysibb .wysibb-text {
  657. color: #aaa;
  658. font-size: 13px;
  659. }
  660.  
  661. #commentary {
  662. background: #2a313c;
  663. }
  664. #middle .comment h4, #middle #commentary h4 {
  665. color: #ddd;
  666. }
  667. #commentary li {
  668. border-top: 0;
  669. }
  670. #commentary li .left {
  671. border: 1px solid #1f2224;
  672. border-radius: 8px;
  673. background: #22282f;
  674. }
  675. #commentary li .left .rang {
  676. padding: 4px;
  677. border-radius: 0;
  678. }
  679. #commentary li .left .name {
  680. font-size: 12px;
  681. padding: 6px 0;
  682. color: #aaa;
  683. }
  684. #commentary li .left .ratio {
  685. font-size: 9.8px;
  686. padding: 6px 0;
  687. border-top: 1px solid #1f2224;
  688. }
  689. #commentary li .message {
  690. color: #aaa;
  691. background: #22282f;
  692. border: 1px solid #1f2224;
  693. font-size: 13px;
  694. border-radius: 6px;
  695. }
  696. #commentary li .message a {
  697. font-weight: 600;
  698. color: #7191bd;
  699. }
  700. #commentary li .message .add {
  701. font-size: 13px;
  702. color: #dfdfdf;
  703. padding-bottom: 10px;
  704. margin-bottom: 10px;
  705. border-bottom: 1px solid #1f2224;
  706. }
  707. #commentary li .message:before {
  708. border-right: 15px solid #22282f;
  709. }
  710. #commentary li .message:after {
  711. border-right: 16px solid #1f2224;
  712. }
  713.  
  714. a.sender-badge {
  715. background: #222222!important;
  716. }
  717. a.btn.grey {
  718. background: #575a5c!important;
  719. border: 2px solid transparent;
  720. color: #fff!important;
  721. }
  722. a.btn.grey:hover {
  723. background: #4b4d4f!important;
  724. }
  725. .table-bordered, .table-bordered td, .table-bordered th {
  726. border-color: #222!important;
  727. background-color: #252C35!important;
  728. }
  729. .text-danger {
  730. background-color: #252C35!important;
  731. }
  732. .results td:nth-child(8) {
  733. color: #01ca01!important;
  734. }
  735. .results td:nth-child(9) {
  736. color: #fd1111!important;
  737. }
  738.  
  739.  
  740. .card {
  741. background-color: #2a313a!important;
  742. color: #cdcdcd;
  743. }
  744. .card-footer {
  745. color: rgba(255,255,255,.4)!important;
  746. border-top: 1px solid rgba(255,255,255,.1)!important;
  747. background: #2a313a!important;
  748. }
  749.  
  750. #feeds .table thead th {
  751. border-bottom: 1px solid #191919!important;
  752. border-top: 1px solid #191919!important;
  753. background: #1d232a!important;
  754. }
  755. `);
  756. } else {
  757. addGlobalStyle(`
  758. ::-webkit-scrollbar {
  759. width: 8px;
  760. }
  761. ::-webkit-scrollbar-track {
  762. background: #575a5c ;
  763. border-radius: 10px;
  764. }
  765. ::-webkit-scrollbar-thumb {
  766. background: #1b3544;
  767. border-radius: 10px;
  768. }
  769. ::-webkit-scrollbar-thumb:hover {
  770. background: #2b2f31;
  771. }
  772.  
  773. html {
  774. color: #aaa;
  775. background-image: none!important;
  776. background-color: #1f2224!important;
  777. }
  778.  
  779. a {
  780. color: #ececec;
  781. text-decoration: none
  782. }
  783.  
  784. a:hover {
  785. color: #6bb2df
  786. }
  787.  
  788. svg {
  789. fill: currentColor
  790. }
  791.  
  792. .u-concealed,.u-concealed a,.u-cloaked,.u-cloaked a,.u-concealed--icon,.u-concealed--icon a {
  793. text-decoration: inherit !important;
  794. color: inherit !important
  795. }
  796.  
  797. a.u-concealed:hover,.u-concealed a:hover {
  798. text-decoration: underline !important
  799. }
  800.  
  801. a.u-concealed:hover .fa,.u-concealed a:hover .fa {
  802. color: #6bb2df
  803. }
  804.  
  805. a.u-concealed--icon:hover .fa,.u-concealed--icon a:hover .fa {
  806. color: #6bb2df
  807. }
  808.  
  809. .u-textColor {
  810. color: #aaa
  811. }
  812.  
  813. .u-dimmed {
  814. color: #969696
  815. }
  816.  
  817. .u-muted {
  818. color: #818181
  819. }
  820.  
  821. .u-dimmed a,.u-muted a,.u-faint a {
  822. color: inherit;
  823. text-decoration: none
  824. }
  825.  
  826. .u-featuredText {
  827. color: #49a1d8
  828. }
  829.  
  830. .u-accentText {
  831. color: #49a1d8
  832. }
  833.  
  834. .u-accentText a {
  835. color: #49a1d8
  836. }
  837.  
  838. .pairs.pairs--plainLabel>dt {
  839. color: inherit
  840. }
  841.  
  842. .pairs>dt {
  843. color: #818181
  844. }
  845.  
  846. .categoryList-itemDesc {
  847. color: #818181;
  848. }
  849.  
  850. .categoryList-header {
  851. color: #49a1d8;
  852. }
  853.  
  854. .categoryList-header.categoryList-header--muted {
  855. color: #818181
  856. }
  857.  
  858. .categoryList-header a {
  859. color: inherit;
  860. text-decoration: none
  861. }
  862.  
  863. .categoryList-link {
  864. color: inherit
  865. }
  866.  
  867. .categoryList-toggler {
  868. color: inherit
  869. }
  870.  
  871. .siropuShoutboxHeader {
  872. border-bottom: none;
  873. color: #aaa
  874. }
  875. .siropuShoutbox form {
  876. margin-bottom: 20px;
  877. }
  878.  
  879. .blocks-header {
  880. color: #818181
  881. }
  882.  
  883. .blocks-header.blocks-header--strong {
  884. color: #969696
  885. }
  886.  
  887. .blocks-header.blocks-header--strong .blocks-desc {
  888. color: #818181
  889. }
  890.  
  891. .block-outer .block-outer-hint {
  892. color: #818181
  893. }
  894.  
  895. .block-container, .block--messages .message {
  896. color: #aaa;
  897. background: #22282f;
  898. border: 1px solid #1e1f1f;
  899. }
  900.  
  901. html:not(.focus-grid) .node-body {
  902. padding: 0
  903. }
  904.  
  905. .node+.node {
  906. border-top: 1px solid #191b1c
  907. }
  908.  
  909. #nfo {
  910. background: #2e2e2e; /* Couleur de fond gris foncé */
  911. color: #ffffff; /* Couleur de texte blanche */
  912. }
  913. pre {
  914. background: inherit; /* Assure que le fond de l'élément <pre> hérite du fond de #nfo */
  915. color: inherit; /* Assure que la couleur du texte de l'élément <pre> hérite de la couleur du texte de #nfo */
  916. }
  917.  
  918. .block--messages .message, .block--messages .block-row {
  919. color: inherit;
  920. background: #22282f;
  921. border: 1px solid #202020;
  922. border-radius: 4px;
  923. }
  924.  
  925. .message-cell.message-cell--user {
  926. padding: 10px;
  927. }
  928.  
  929. .message-cell.message-cell--user, .message-cell.message-cell--action {
  930. background: #2a313c;
  931. border-right: 1px solid #1f2224;
  932. }
  933.  
  934. .message-cell.message-cell--main {
  935. padding-left: 0;
  936. }
  937.  
  938. .message-cell {
  939. padding: 10px 0;
  940. }
  941.  
  942. .message-cell.message-cell--alert {
  943. color: #e8ebed;
  944. background: #16435e;
  945. padding-left: 10px;
  946. }
  947.  
  948. message-cell.message-cell--alert a {
  949. color: #6bb2df;
  950. }
  951.  
  952. .message-attribution {
  953. border-bottom: 1px solid #1f2224;
  954. padding: 0 12px 8px;
  955. }
  956.  
  957. .message-content {
  958. margin-bottom: 10px;
  959. padding: 0 12px;
  960. }
  961.  
  962. .message-content a {
  963. text-decoration: none;
  964. }
  965.  
  966. .message-footer {
  967. border-top: 1px solid #1f2224;
  968. padding: 0 12px;
  969. }
  970.  
  971. .message-signature {
  972. border-top: 1px solid #1f2224;
  973. padding-top: 6px;
  974. color: #777;
  975. }
  976.  
  977. .message-actionBar .actionBar-set {
  978. margin-top: 8px;
  979. }
  980.  
  981. .editorSmilies {
  982. border: 1px solid #1c1c1c;
  983. background: #22282f;
  984. }
  985.  
  986. .message-editorWrapper {
  987. padding: 0 10px;
  988. }
  989.  
  990. .attachment {
  991. background: #1f2224;
  992. border: 1px solid #383b3d;
  993. }
  994.  
  995. .fr-toolbar {
  996. color: #f5f5f5;
  997. background: #222;
  998. border-radius: 2px;
  999. -moz-border-radius: 2px;
  1000. -webkit-border-radius: 2px;
  1001. border: 1px solid #1c1c1c;
  1002. border-top: 1px solid #1c1c1c;
  1003. }
  1004.  
  1005. .fr-toolbar .fr-command.fr-btn, .fr-popup .fr-command.fr-btn {
  1006. background: transparent;
  1007. color: #aaa;
  1008. }
  1009.  
  1010. .fr-command.fr-btn+.fr-dropdown-menu .fr-dropdown-wrapper {
  1011. background: #2b2f31!important;
  1012. border: 1px solid #444;
  1013. }
  1014.  
  1015. .fr-command.fr-btn+.fr-dropdown-menu .fr-dropdown-wrapper .fr-dropdown-content ul.fr-dropdown-list li {
  1016. font-size: inherit;
  1017. }
  1018.  
  1019. .fr-separator {
  1020. background: #1c1c1c;
  1021. }
  1022.  
  1023. .fr-box.fr-basic .fr-wrapper {
  1024. background: #1f2224;
  1025. border: 1px solid #1c1c1c;
  1026. border-top: 0;
  1027. top: 0;
  1028. left: 0;
  1029. }
  1030.  
  1031. .fr-box.fr-basic .fr-element {
  1032. color: #aaa;
  1033. }
  1034.  
  1035. .block--category .block-body {
  1036. color: #aaa;
  1037. background: #22282f;
  1038. border-width:0;
  1039. border-radius: 0;
  1040. border-bottom-left-radius: 3px;
  1041. border-bottom-right-radius: 3px;
  1042. box-shadow: rgb(0 0 0 / 8%) 0px 1px 4px;
  1043. border-color: #191b1c;
  1044. }
  1045.  
  1046. .block-container.block-container--none {
  1047. background: none;
  1048. color: #aaa;
  1049. }
  1050.  
  1051. .block-header {
  1052. color: #fff;
  1053. background: #16435e;
  1054. border-bottom: 1px solid #1e1f1f;
  1055. border-radius: 0;
  1056. border-top-left-radius: 3px;
  1057. border-top-right-radius: 3px;
  1058. margin: 0!important
  1059. }
  1060.  
  1061. .block-header .block-desc {
  1062. color: rgba(255,255,255,0.7)
  1063. }
  1064.  
  1065. .block-header .block-desc a {
  1066. color: inherit;
  1067. text-decoration: underline
  1068. }
  1069.  
  1070. .block-minorHeader {
  1071. border-radius: 4px 4px 0 0!important;
  1072. box-shadow: rgb(0 0 0 / 10%) 0px 1px 3px inset;
  1073. color: #fff;
  1074. background: #1b3544;
  1075. }
  1076.  
  1077. .block-tabHeader {
  1078. color: #969696;
  1079. background: #2b2f31;
  1080. }
  1081.  
  1082. .block-tabHeader .tabs-tab:hover {
  1083. color: #969696;
  1084. background: #34393c
  1085. }
  1086.  
  1087. .block-tabHeader .tabs-tab.is-active {
  1088. color: #fff;
  1089. background: #16435e;
  1090. }
  1091.  
  1092. .block-tabHeader .hScroller-action {
  1093. color: #969696
  1094. }
  1095.  
  1096. .block-tabHeader .hScroller-action:hover {
  1097. color: #fff
  1098. }
  1099.  
  1100. .block-tabHeader .hScroller-action.hScroller-action--start {
  1101. background: #2b2f31;
  1102. background: linear-gradient(to right, #2b2f31 66%, rgba(43,47,49,0) 100%)
  1103. }
  1104.  
  1105. .block-tabHeader .hScroller-action.hScroller-action--end {
  1106. background: #2b2f31;
  1107. background: linear-gradient(to right, rgba(43,47,49,0) 0%, #2b2f31 33%)
  1108. }
  1109.  
  1110. .block-minorTabHeader {
  1111. color: #969696;
  1112. background: #2f3336;
  1113. }
  1114.  
  1115. .block-minorTabHeader .tabs-tab {
  1116. color: #969696;
  1117. }
  1118.  
  1119. .block-minorTabHeader .tabs-tab:hover {
  1120. background: #34393c
  1121. }
  1122.  
  1123. .block-minorTabHeader .tabs-tab.is-active {
  1124. color: #6bb2df;
  1125. background: #34393c;
  1126. }
  1127.  
  1128. .block-minorTabHeader .hScroller-action {
  1129. color: #969696
  1130. }
  1131.  
  1132. .block-minorTabHeader .hScroller-action:hover {
  1133. color: #6bb2df
  1134. }
  1135.  
  1136. .block-minorTabHeader .hScroller-action.hScroller-action--start {
  1137. background: #2f3336;
  1138. background: linear-gradient(to right, #2f3336 66%, rgba(47,51,54,0) 100%)
  1139. }
  1140.  
  1141. .block-minorTabHeader .hScroller-action.hScroller-action--end {
  1142. background: #2f3336;
  1143. background: linear-gradient(to right, rgba(47,51,54,0) 0%, #2f3336 33%)
  1144. }
  1145.  
  1146. .block-filterBar {
  1147. color: #fff;
  1148. background: #16435e;
  1149. border-bottom: 1px solid #1f2224;
  1150. }
  1151.  
  1152. .block-filterBar .filterBar-filterToggle {
  1153. background: #357ca9
  1154. }
  1155.  
  1156. .block-filterBar .filterBar-listToggle,.block-filterBar .filterBar-filterToggle,.block-filterBar .filterBar-menuTrigger {
  1157. color: #fff;
  1158. }
  1159.  
  1160. .block-filterBar .filterBar-listToggle:hover,.block-filterBar .filterBar-filterToggle:hover,.block-filterBar .filterBar-menuTrigger:hover {
  1161. color: #fff;
  1162. text-decoration: underline;
  1163. background: transparent
  1164. }
  1165.  
  1166. .block-textHeader a {
  1167. color: inherit;
  1168. text-decoration: none
  1169. }
  1170.  
  1171. .block-textHeader a:hover {
  1172. text-decoration: underline
  1173. }
  1174.  
  1175. .block-textHeader .block-textHeader-highlight {
  1176. color: #aaa
  1177. }
  1178.  
  1179. .block-textHeader .block-desc a {
  1180. color: inherit;
  1181. text-decoration: underline
  1182. }
  1183.  
  1184. .block-formSectionHeader {
  1185. text-decoration: none;
  1186. color: #fff;
  1187. }
  1188.  
  1189. .block-formSectionHeader a {
  1190. color: inherit;
  1191. text-decoration: none
  1192. }
  1193.  
  1194. .block-formSectionHeader a:hover {
  1195. text-decoration: underline
  1196. }
  1197.  
  1198. .block-formSectionHeader .block-desc a {
  1199. color: inherit;
  1200. text-decoration: underline
  1201. }
  1202.  
  1203. .block-row {
  1204. background: inherit;
  1205. }
  1206.  
  1207. .p-body-sidebar .block-row:not(:last-child) {
  1208. border-bottom: 1px solid #1e1f1f;
  1209. }
  1210.  
  1211. .block-row.block-row--highlighted {
  1212. color: #aaa;
  1213. background: #34393c
  1214. }
  1215.  
  1216. .block-row.block-row--clickable:hover {
  1217. color: #aaa;
  1218. background: #34393c
  1219. }
  1220.  
  1221. .block-row.block-row--alt {
  1222. color: inherit;
  1223. background: inherit;
  1224. }
  1225.  
  1226. .block-row.block-row--separated+.block-row {
  1227. border-top: 1px solid #1f2224;
  1228. }
  1229.  
  1230. .block-row.is-mod-selected {
  1231. background: #34393c
  1232. }
  1233.  
  1234. .block-footer {
  1235. color: #969696;
  1236. background: #2f3336;
  1237. }
  1238.  
  1239. .block-rowMessage.block-rowMessage--highlight {
  1240. color: #aaa;
  1241. background: #34393c
  1242. }
  1243.  
  1244. .block-rowMessage.block-rowMessage--important {
  1245. color: #49a1d8;
  1246. background: #2b2f31;
  1247. }
  1248.  
  1249. .block-rowMessage.block-rowMessage--important a {
  1250. color: #49a1d8
  1251. }
  1252.  
  1253. .block-rowMessage--important.block-rowMessage--iconic:before {
  1254. color: #49a1d8
  1255. }
  1256.  
  1257. .block-rowMessage.block-rowMessage--alt {
  1258. color: #aaa;
  1259. background: #2f3336
  1260. }
  1261.  
  1262. .block-rowMessage.block-rowMessage--success {
  1263. background: #daf3d8;
  1264. color: #3d793f
  1265. }
  1266.  
  1267. .block-rowMessage.block-rowMessage--success a {
  1268. color: inherit;
  1269. text-decoration: underline
  1270. }
  1271.  
  1272. .block-rowMessage--success.block-rowMessage--iconic:before {
  1273. color: #63b265
  1274. }
  1275.  
  1276. .block-rowMessage.block-rowMessage--warning {
  1277. background: #fbf7e2;
  1278. color: #84653d
  1279. }
  1280.  
  1281. .block-rowMessage.block-rowMessage--warning a {
  1282. color: inherit;
  1283. text-decoration: underline
  1284. }
  1285.  
  1286. .block-rowMessage--warning.block-rowMessage--iconic:before {
  1287. color: #dcda54
  1288. }
  1289.  
  1290. .block-rowMessage.block-rowMessage--error {
  1291. background: #fde9e9;
  1292. color: #c84448
  1293. }
  1294.  
  1295. .block-rowMessage.block-rowMessage--error a {
  1296. color: inherit;
  1297. text-decoration: underline
  1298. }
  1299.  
  1300. .block-rowMessage--error.block-rowMessage--iconic:before {
  1301. color: #c84448
  1302. }
  1303.  
  1304. .blockMessage {
  1305. color: #aaa;
  1306. background: #2b2f31;
  1307. }
  1308.  
  1309. .blockMessage.blockMessage--none {
  1310. background: none;
  1311. color: #aaa;
  1312. }
  1313.  
  1314. .blockMessage.blockMessage--highlight {
  1315. color: #aaa;
  1316. background: #34393c
  1317. }
  1318.  
  1319. .blockMessage.blockMessage--important {
  1320. color: #49a1d8;
  1321. background: #2b2f31;
  1322. }
  1323.  
  1324. .blockMessage.blockMessage--important a {
  1325. color: #49a1d8
  1326. }
  1327.  
  1328. .blockMessage--important.blockMessage--iconic:before {
  1329. color: #49a1d8
  1330. }
  1331.  
  1332. .blockMessage.blockMessage--alt {
  1333. color: #aaa;
  1334. background: #2f3336
  1335. }
  1336.  
  1337. .blockMessage.blockMessage--success {
  1338. background: #daf3d8;
  1339. color: #3d793f
  1340. }
  1341.  
  1342. .blockMessage.blockMessage--success a {
  1343. color: inherit;
  1344. text-decoration: underline
  1345. }
  1346.  
  1347. .blockMessage--success.blockMessage--iconic:before {
  1348. color: #63b265
  1349. }
  1350.  
  1351. .blockMessage.blockMessage--warning {
  1352. background: #fbf7e2;
  1353. color: #84653d
  1354. }
  1355.  
  1356. .blockMessage.blockMessage--warning a {
  1357. color: inherit;
  1358. text-decoration: underline
  1359. }
  1360.  
  1361. .blockMessage--warning.blockMessage--iconic:before {
  1362. color: #dcda54
  1363. }
  1364.  
  1365. .blockMessage.blockMessage--error {
  1366. background: #fde9e9;
  1367. color: #c84448
  1368. }
  1369.  
  1370. .blockMessage.blockMessage--error a {
  1371. color: inherit;
  1372. text-decoration: underline
  1373. }
  1374.  
  1375. .blockMessage--error.blockMessage--iconic:before {
  1376. color: #c84448
  1377. }
  1378.  
  1379. .blockStatus {
  1380. color: #aaa;
  1381. background: #2f3336;
  1382. }
  1383.  
  1384. .blockStatus-message:before {
  1385. color: #49a1d8
  1386. }
  1387.  
  1388. .blockLink {
  1389. color: #aaa;
  1390. text-decoration: none;
  1391. }
  1392.  
  1393. .blockLink.is-selected {
  1394. color: #6bb2df;
  1395. background: #34393c;
  1396. }
  1397.  
  1398. .blockLink:hover {
  1399. background: #34393c;
  1400. text-decoration: inherit
  1401. }
  1402.  
  1403. .blockLink-desc {
  1404. color: #818181;
  1405. }
  1406.  
  1407. .blockLinkSplitToggle {
  1408. text-decoration: none;
  1409. }
  1410.  
  1411. .blockLinkSplitToggle.is-selected {
  1412. color: #6bb2df;
  1413. background: #34393c
  1414. }
  1415.  
  1416. .blockLinkSplitToggle:hover {
  1417. background: #34393c;
  1418. text-decoration: inherit
  1419. }
  1420.  
  1421. .fixedMessageBar {
  1422. color: #969696;
  1423. background: #2b2f31
  1424. }
  1425.  
  1426. .fixedMessageBar-close {
  1427. color: inherit
  1428. }
  1429.  
  1430. .fixedMessageBar-close:hover {
  1431. text-decoration: none;
  1432. color: #afafaf
  1433. }
  1434.  
  1435. .button,a.button {
  1436. text-decoration: none;
  1437. color: #ffffff;
  1438. background: #16435e;
  1439. border-color: #131516
  1440. }
  1441.  
  1442. .button a,a.button a {
  1443. color: inherit;
  1444. border-color: #1f2224;
  1445. text-decoration: none
  1446. }
  1447.  
  1448. .button.button--primary, a.button.button--primary {
  1449. color: #f5f5f5;
  1450. background: #009688;
  1451. border-color: #2b2f31
  1452. }
  1453.  
  1454. .button.button--cta,a.button.button--cta {
  1455. color: #ffffff;
  1456. background: #16435e;
  1457. border-color: #131516
  1458. }
  1459.  
  1460. .button.button--cta:hover,a.button.button--cta:hover,.button.button--cta:active,a.button.button--cta:active,.button.button--cta:focus,a.button.button--cta:focus {
  1461. text-decoration: none;
  1462. color: #ffffff;
  1463. background: #3ba8da
  1464. }
  1465.  
  1466. .button.button--link,a.button.button--link {
  1467. background: #2b2f31;
  1468. color: #fff;
  1469. border-color: #aaa
  1470. }
  1471.  
  1472. .button.button--link:hover,a.button.button--link:hover,.button.button--link:active,a.button.button--link:active,.button.button--link:focus,a.button.button--link:focus {
  1473. text-decoration: none;
  1474. background: #34393c
  1475. }
  1476.  
  1477. .button.button--plain,a.button.button--plain {
  1478. background: none;
  1479. color: #fff
  1480. }
  1481.  
  1482. .button.button--plain:hover,a.button.button--plain:hover,.button.button--plain:active,a.button.button--plain:active,.button.button--plain:focus,a.button.button--plain:focus {
  1483. text-decoration: none;
  1484. background: none
  1485. }
  1486.  
  1487. .button.button--alt,a.button.button--alt {
  1488. background-color: #8cc3e6;
  1489. color: #fff;
  1490. }
  1491.  
  1492. .button.button--alt:hover,a.button.button--alt:hover,.button.button--alt:active,a.button.button--alt:active,.button.button--alt:focus,a.button.button--alt:focus {
  1493. background-color: #8cc3e6;
  1494. color: #fff
  1495. }
  1496.  
  1497. .button.is-disabled,a.button.is-disabled {
  1498. color: #4e4e4e;
  1499. background: #34393c;
  1500. }
  1501.  
  1502. .button.is-disabled:hover,a.button.is-disabled:hover,.button.is-disabled:active,a.button.is-disabled:active,.button.is-disabled:focus,a.button.is-disabled:focus {
  1503. background: #34393c !important
  1504. }
  1505.  
  1506. .button.button--scroll,a.button.button--scroll {
  1507. background: rgba(35,113,162,0.75);
  1508. }
  1509.  
  1510. .button.button--icon--bookmark.is-bookmarked .button-text:before,a.button.button--icon--bookmark.is-bookmarked .button-text:before {
  1511. color: #49a1d8
  1512. }
  1513.  
  1514. .button.button--provider--facebook,a.button.button--provider--facebook {
  1515. color: #fff;
  1516. background-color: #3b5998;
  1517. }
  1518.  
  1519. .button.button--provider--facebook:hover,a.button.button--provider--facebook:hover,.button.button--provider--facebook:active,a.button.button--provider--facebook:active,.button.button--provider--facebook:focus,a.button.button--provider--facebook:focus {
  1520. background-color: #466ab5
  1521. }
  1522.  
  1523. .button.button--provider--twitter,a.button.button--provider--twitter {
  1524. color: #fff;
  1525. background-color: #1da1f3;
  1526. }
  1527.  
  1528. .button.button--provider--twitter:hover,a.button.button--provider--twitter:hover,.button.button--provider--twitter:active,a.button.button--provider--twitter:active,.button.button--provider--twitter:focus,a.button.button--provider--twitter:focus {
  1529. background-color: #44b1f5
  1530. }
  1531.  
  1532. .button.button--provider--google,a.button.button--provider--google {
  1533. color: #444;
  1534. background-color: #fff;
  1535. }
  1536.  
  1537. .button.button--provider--google:hover,a.button.button--provider--google:hover,.button.button--provider--google:active,a.button.button--provider--google:active,.button.button--provider--google:focus,a.button.button--provider--google:focus {
  1538. background-color: #fff
  1539. }
  1540.  
  1541. .button.button--provider--github,a.button.button--provider--github {
  1542. color: #fff;
  1543. background-color: #666;
  1544. }
  1545.  
  1546. .button.button--provider--github:hover,a.button.button--provider--github:hover,.button.button--provider--github:active,a.button.button--provider--github:active,.button.button--provider--github:focus,a.button.button--provider--github:focus {
  1547. background-color: #7a7a7a
  1548. }
  1549.  
  1550. .button.button--provider--linkedin,a.button.button--provider--linkedin {
  1551. color: #fff;
  1552. background-color: #0077b5;
  1553. }
  1554.  
  1555. .button.button--provider--linkedin:hover,a.button.button--provider--linkedin:hover,.button.button--provider--linkedin:active,a.button.button--provider--linkedin:active,.button.button--provider--linkedin:focus,a.button.button--provider--linkedin:focus {
  1556. background-color: #0092de
  1557. }
  1558.  
  1559. .button.button--provider--microsoft,a.button.button--provider--microsoft {
  1560. color: #fff;
  1561. background-color: #00bcf2;
  1562. }
  1563.  
  1564. .button.button--provider--microsoft:hover,a.button.button--provider--microsoft:hover,.button.button--provider--microsoft:active,a.button.button--provider--microsoft:active,.button.button--provider--microsoft:focus,a.button.button--provider--microsoft:focus {
  1565. background-color: #1cccff
  1566. }
  1567.  
  1568. .button.button--provider--yahoo,a.button.button--provider--yahoo {
  1569. color: #fff;
  1570. background-color: #410093;
  1571. }
  1572.  
  1573. .button.button--provider--yahoo:hover,a.button.button--provider--yahoo:hover,.button.button--provider--yahoo:active,a.button.button--provider--yahoo:active,.button.button--provider--yahoo:focus,a.button.button--provider--yahoo:focus {
  1574. background-color: #5300bc
  1575. }
  1576.  
  1577. .button.button--splitTrigger button.button-text,a.button.button--splitTrigger button.button-text {
  1578. background: transparent;
  1579. color: inherit
  1580. }
  1581.  
  1582. .button.button--splitTrigger>.button-menu:after,a.button.button--splitTrigger>.button-menu:after {
  1583. unicode-bidi: isolate;
  1584. }
  1585.  
  1586. .toggleButton>span {
  1587. color: #4e4e4e;
  1588. background: #34393c;
  1589. }
  1590.  
  1591. .toggleButton>input:checked+span {
  1592. color: #ffffff;
  1593. background: #16435e;
  1594. }
  1595.  
  1596. .toggleButton>input:checked+span:not(.button--splitTrigger):hover,.toggleButton>input:checked+span.button--splitTrigger>.button-text:hover,.toggleButton>input:checked+span.button--splitTrigger>.button-menu:hover,.toggleButton>input:checked+span:not(.button--splitTrigger):focus,.toggleButton>input:checked+span.button--splitTrigger>.button-text:focus,.toggleButton>input:checked+span.button--splitTrigger>.button-menu:focus,.toggleButton>input:checked+span:not(.button--splitTrigger):active,.toggleButton>input:checked+span.button--splitTrigger>.button-text:active,.toggleButton>input:checked+span.button--splitTrigger>.button-menu:active {
  1597. background-color: #2a88c4
  1598. }
  1599.  
  1600. .memberHeader-main {
  1601. background: #2a313c;
  1602. border-bottom: none;
  1603. }
  1604.  
  1605. .memberHeader-separator {
  1606. border-top: 1px solid #131516;
  1607. }
  1608.  
  1609. .block-tabHeader .tabs-tab.is-active {
  1610. color: #fff;
  1611. background: #242729;
  1612. border-color: #131516;
  1613. }
  1614.  
  1615. .message-avatar-wrapper .avatar.avatar--m{
  1616. width: auto;
  1617. height: auto;
  1618. }
  1619.  
  1620. .avatar.avatar--separated {
  1621. border: 1px solid #131516;
  1622. }
  1623.  
  1624. .p-nav .focus-wrap-search {
  1625. padding-bottom: 0;
  1626. }
  1627.  
  1628. .focus-search {
  1629. background-color: #242729;
  1630. background-image: none;
  1631. color: #aaa;
  1632. }
  1633.  
  1634. .input {
  1635. color: #aaa;
  1636. background: #242729;
  1637. border-width: 1px;
  1638. border-color: #1e1f1f;
  1639. padding: 10px 8px;
  1640. }
  1641. .input::-webkit-input-placeholder {
  1642. color: rgba(170,170,170,0.7)
  1643. }
  1644.  
  1645. .input::-moz-placeholder {
  1646. color: rgba(170,170,170,0.7)
  1647. }
  1648.  
  1649. .input:-moz-placeholder {
  1650. color: rgba(170,170,170,0.7)
  1651. }
  1652.  
  1653. .input:-ms-input-placeholder {
  1654. color: rgba(170,170,170,0.7)
  1655. }
  1656.  
  1657. .input:focus,.input.is-focused {
  1658. outline: 0;
  1659. background: #1d1f21;
  1660. }
  1661.  
  1662. .input:focus::-webkit-input-placeholder,.input.is-focused::-webkit-input-placeholder {
  1663. color: rgba(170,170,170,0.5)
  1664. }
  1665.  
  1666. .input:focus::-moz-placeholder,.input.is-focused::-moz-placeholder {
  1667. color: rgba(170,170,170,0.5)
  1668. }
  1669.  
  1670. .input:focus:-moz-placeholder,.input.is-focused:-moz-placeholder {
  1671. color: rgba(170,170,170,0.5)
  1672. }
  1673.  
  1674. .input:focus:-ms-input-placeholder,.input.is-focused:-ms-input-placeholder {
  1675. color: rgba(170,170,170,0.5)
  1676. }
  1677.  
  1678. .input[readonly],.input.is-readonly {
  1679. color: #7c7c7c;
  1680. background: #2c3033
  1681. }
  1682.  
  1683. .input[disabled] {
  1684. color: #4e4e4e;
  1685. background: #34393c;
  1686. }
  1687.  
  1688. select.input[size],.input.input--select[size],select.input[multiple],.input.input--select[multiple] {
  1689. background-image: none !important;
  1690. }
  1691.  
  1692. .iconic>input:focus+i:before,.iconic>input:focus+i:after {
  1693. outline: Highlight solid 2px;
  1694. -moz-outline-radius: 5px
  1695. }
  1696.  
  1697. .formRow .iconic>i,.inputGroup .iconic>i,.inputChoices .iconic>i,.block-footer .iconic>i,.dataList-cell .iconic>i,.message-cell--extra .iconic>i,.formRow.dataList-cell--fa>a>i,.inputGroup.dataList-cell--fa>a>i,.inputChoices.dataList-cell--fa>a>i,.block-footer.dataList-cell--fa>a>i,.dataList-cell.dataList-cell--fa>a>i,.message-cell--extra.dataList-cell--fa>a>i,.formRow .iconic svg,.inputGroup .iconic svg,.inputChoices .iconic svg,.block-footer .iconic svg,.dataList-cell .iconic svg,.message-cell--extra .iconic svg,.formRow.dataList-cell--fa>a svg,.inputGroup.dataList-cell--fa>a svg,.inputChoices.dataList-cell--fa>a svg,.block-footer.dataList-cell--fa>a svg,.dataList-cell.dataList-cell--fa>a svg,.message-cell--extra.dataList-cell--fa>a svg {
  1698. color: #969696;
  1699. fill: currentColor
  1700. }
  1701.  
  1702. .formRow .iconic:hover>i,.inputGroup .iconic:hover>i,.inputChoices .iconic:hover>i,.block-footer .iconic:hover>i,.dataList-cell .iconic:hover>i,.message-cell--extra .iconic:hover>i,.formRow.dataList-cell--fa>a:hover>i,.inputGroup.dataList-cell--fa>a:hover>i,.inputChoices.dataList-cell--fa>a:hover>i,.block-footer.dataList-cell--fa>a:hover>i,.dataList-cell.dataList-cell--fa>a:hover>i,.message-cell--extra.dataList-cell--fa>a:hover>i,.formRow .iconic:hover svg,.inputGroup .iconic:hover svg,.inputChoices .iconic:hover svg,.block-footer .iconic:hover svg,.dataList-cell .iconic:hover svg,.message-cell--extra .iconic:hover svg,.formRow.dataList-cell--fa>a:hover svg,.inputGroup.dataList-cell--fa>a:hover svg,.inputChoices.dataList-cell--fa>a:hover svg,.block-footer.dataList-cell--fa>a:hover svg,.dataList-cell.dataList-cell--fa>a:hover svg,.message-cell--extra.dataList-cell--fa>a:hover svg {
  1703. color: #6bb2df;
  1704. fill: currentColor
  1705. }
  1706.  
  1707. .inputGroup.inputGroup--joined .inputGroup-text {
  1708. background: #242729;
  1709. }
  1710.  
  1711. .inputGroup.inputGroup--joined .inputGroup-text.inputGroup-text--disabled,.inputGroup.inputGroup--joined .inputGroup-text.is-disabled,.inputGroup.inputGroup--joined .inputGroup-text[disabled] {
  1712. color: #4e4e4e;
  1713. background: #34393c;
  1714. }
  1715.  
  1716. .inputNumber-button {
  1717. color: #969696;
  1718. }
  1719.  
  1720. .inputGroup.inputGroup--joined .inputNumber-button:hover,.inputGroup.inputGroup--joined .inputNumber-button:active,.inputGroup.inputGroup--joined .inputNumber-button:focus {
  1721. background-color: #96cef1;
  1722. color: #6bb2df
  1723. }
  1724.  
  1725. .input.input--number[readonly]~.inputNumber-button {
  1726. color: #7c7c7c;
  1727. background: #2c3033
  1728. }
  1729.  
  1730. .input.input--number[disabled]~.inputNumber-button {
  1731. color: #4e4e4e;
  1732. background: #34393c;
  1733. }
  1734.  
  1735. .inputDate .inputDate-icon {
  1736. color: #fff;
  1737. }
  1738.  
  1739. .inputUploadButton {
  1740. color: #969696;
  1741. }
  1742.  
  1743. .inputGroup.inputGroup--joined .inputUploadButton:hover,.inputGroup.inputGroup--joined .inputUploadButton:active,.inputGroup.inputGroup--joined .inputUploadButton:focus {
  1744. background-color: #96cef1;
  1745. color: #6bb2df
  1746. }
  1747.  
  1748. .inputChoices .inputChoices-label {
  1749. color: #818181
  1750. }
  1751.  
  1752. .inputChoices-heading {
  1753. color: #818181;
  1754. }
  1755.  
  1756. .inputChoices-explain {
  1757. color: #818181
  1758. }
  1759.  
  1760. .inputChoices-explain a {
  1761. color: inherit;
  1762. text-decoration: underline
  1763. }
  1764.  
  1765. .inputValidationError {
  1766. background: #fde9e9;
  1767. color: #c84448;
  1768. }
  1769.  
  1770. .inputValidationError a {
  1771. color: inherit;
  1772. text-decoration: underline
  1773. }
  1774.  
  1775. .formRow>dt {
  1776. background: #2f3336;
  1777. }
  1778.  
  1779. .formRow.formRow--fullWidth>dt,.menu .formRow>dt {
  1780. background: none;
  1781. }
  1782.  
  1783. .formRow .formRow-error {
  1784. color: #84653d;
  1785. }
  1786.  
  1787. .formRow .formRow-explain {
  1788. color: #818181
  1789. }
  1790.  
  1791. .formRow .formRow-explain a {
  1792. color: inherit;
  1793. text-decoration: underline
  1794. }
  1795. .formRow .formRow-hint {
  1796. color: #818181
  1797. }
  1798.  
  1799. .formRow .formRow-hint a {
  1800. color: inherit;
  1801. text-decoration: underline
  1802. }
  1803.  
  1804. .formRow .formRow-hint .formRow-hint-featured {
  1805. color: #49a1d8
  1806. }
  1807.  
  1808. .formSubmitRow-bar {
  1809. background: rgba(52,57,60,0.9);
  1810. }
  1811.  
  1812. .badge,.badgeContainer:after {
  1813. color: #ffffff;
  1814. background: #16435e;
  1815. }
  1816.  
  1817. .badge.badge--highlighted,.badgeContainer.badgeContainer--highlighted:after {
  1818. color: #ffffff;
  1819. background: #16435e;
  1820. }
  1821.  
  1822. .tooltip.tooltip--basic a {
  1823. color: inherit;
  1824. text-decoration: underline
  1825. }
  1826.  
  1827. .tooltip.tooltip--selectToQuote a {
  1828. color: inherit;
  1829. text-decoration: none
  1830. }
  1831.  
  1832. .tooltip.tooltip--selectToQuote a:hover {
  1833. text-decoration: underline
  1834. }
  1835.  
  1836. .tooltip--basic .tooltip-content {
  1837. color: #fff;
  1838. background: #16435e;
  1839. }
  1840.  
  1841. .tooltip--member .tooltip-content{
  1842. color: #aaa;
  1843. background: #2b2f31;
  1844. border: 1px solid #575a5c;
  1845. }
  1846.  
  1847. .tooltip--member.tooltip--top .tooltip-arrow {
  1848. border-top-color: #575a5c;
  1849. }
  1850.  
  1851. .tooltip--member.tooltip--top .tooltip-arrow:after {
  1852. border-top-color: #2b2f31;
  1853. }
  1854.  
  1855. .tooltip--member.tooltip--bottom .tooltip-arrow {
  1856. border-bottom-color: #8c8c8c;
  1857. }
  1858.  
  1859. .tooltip--member.tooltip--bottom .tooltip-arrow:after {
  1860. border-bottom-color: #1f2224;
  1861. }
  1862.  
  1863. .tooltip--preview .tooltip-content,
  1864. .tooltip--bookmark .tooltip-content,
  1865. .tooltip--share .tooltip-content,
  1866. .tooltip--reaction .tooltip-content {
  1867. color: #aaa;
  1868. background: #2b2f31;
  1869. }
  1870.  
  1871. .tooltip--preview .tooltip-content-inner .tooltip-content-cover {
  1872. background: transparent;
  1873. background: linear-gradient(to bottom, rgba(43,47,49,0) 160px, #2b2f31 200px)
  1874. }
  1875.  
  1876. .memberTooltip-header {
  1877. background: #1f2224!important;
  1878. border-bottom: 1px solid #131516!important;
  1879. }
  1880.  
  1881. .memberTooltip-separator {
  1882. border-top: none!important;
  1883. }
  1884.  
  1885. .memberTooltip-name {
  1886. font-size: 20px!important;
  1887. color: #cbcbcb!important;
  1888. }
  1889. .memberTooltip-name a:hover {
  1890. text-decoration: none;
  1891. color: #fff;
  1892. }
  1893.  
  1894. .userBanner.userBanner--blue {
  1895. background: #204fb9;
  1896. border-color: #3564cf;
  1897. }
  1898.  
  1899. .menu-arrow {
  1900. border: none;
  1901. }
  1902.  
  1903. .menu-linkRow {
  1904. background: inherit;
  1905. }
  1906.  
  1907. .menu-content {
  1908. color: #aaa;
  1909. background: #2b2f31;
  1910. border-top: 0;
  1911. /* border: 1px solid #818181; */
  1912. }
  1913.  
  1914. .menu-separator {
  1915. border-top: 1px solid #131516;
  1916. margin-top: 1px!important;
  1917. }
  1918.  
  1919. .menu-header {
  1920. text-decoration: none;
  1921. color: #fff;
  1922. background: #16435e;
  1923. border-bottom: none
  1924. }
  1925.  
  1926. .menu-header a {
  1927. color: inherit;
  1928. text-decoration: none
  1929. }
  1930.  
  1931. .menu-header a:hover {
  1932. text-decoration: underline
  1933. }
  1934.  
  1935. .menu-header .menu-desc {
  1936. color: rgba(255,255,255,0.7)
  1937. }
  1938.  
  1939. .menu-header .menu-desc a {
  1940. color: inherit;
  1941. text-decoration: underline
  1942. }
  1943. .menu-tabHeader {
  1944. text-decoration: none;
  1945. color: #fff;
  1946. background: #16435e;
  1947. }
  1948.  
  1949. .menu-tabHeader .tabs-tab:hover {
  1950. color: #6bb2df
  1951. }
  1952.  
  1953. .menu-tabHeader .tabs-tab.is-active {
  1954. color: inherit;
  1955. }
  1956.  
  1957. .menu-tabHeader .hScroller-action {
  1958. color: #fff
  1959. }
  1960.  
  1961. .menu-tabHeader .hScroller-action:hover {
  1962. color: #6bb2df
  1963. }
  1964.  
  1965. .menu-tabHeader .hScroller-action.hScroller-action--start {
  1966. background: #16435e;
  1967. background: linear-gradient(to right, #16435e 66%, rgba(35,113,162,0) 100%)
  1968. }
  1969.  
  1970. .menu-tabHeader .hScroller-action.hScroller-action--end {
  1971. background: #16435e;
  1972. background: linear-gradient(to right, rgba(35,113,162,0) 0%, #16435e 33%)
  1973. }
  1974.  
  1975. .menu-row.menu-row--alt {
  1976. color: #aaa;
  1977. background: #23272a
  1978. }
  1979.  
  1980. .menu-row.menu-row--highlighted {
  1981. color: #aaa;
  1982. background: #34393c
  1983. }
  1984.  
  1985. .menu-row.menu-row--clickable:hover {
  1986. background: #34393c
  1987. }
  1988.  
  1989. .menu-row.menu-row--separated+.menu-row {
  1990. border-top: 1px solid #131516;
  1991. }
  1992.  
  1993. .menu-linkRow {
  1994. color: #aaa;
  1995. text-decoration: none
  1996. }
  1997.  
  1998. .menu-linkRow.menu-linkRow--alt {
  1999. color: #aaa;
  2000. background: #2f3336
  2001. }
  2002.  
  2003. .menu-linkRow.is-selected,.menu-linkRow:hover,.menu-linkRow:focus {
  2004. color: #6bb2df;
  2005. text-decoration: none;
  2006. background: #34393c;
  2007. }
  2008.  
  2009. .menu-linkRow.is-selected:focus,.menu-linkRow:hover:focus,.menu-linkRow:focus:focus {
  2010. outline: 0
  2011. }
  2012.  
  2013. .menu-linkRow:hover i[aria-hidden=true]:after {
  2014. color: #6bb2df
  2015. }
  2016.  
  2017. .menu-linkRow-hint {
  2018. color: #818181;
  2019. }
  2020.  
  2021. .menu-footer {
  2022. color: #969696;
  2023. background: #2f3336;
  2024. border-top: 1px solid #131516;
  2025. }
  2026.  
  2027. .menu .block .block-container {
  2028. color: inherit;
  2029. background: none;
  2030. border-color: #202020;
  2031. }
  2032.  
  2033. .menu {
  2034. box-shadow: 0 5px 30px 0 rgb(0 0 0 / 25%), rgb(0 0 0 / 15%) 0px 3px 5px!important;
  2035. border: 1px solid #131516;
  2036. }
  2037.  
  2038. .offCanvasMenu .offCanvasMenu-closer {
  2039. text-decoration: none;
  2040. }
  2041.  
  2042. .offCanvasMenu .offCanvasMenu-closer:hover {
  2043. text-decoration: none
  2044. }
  2045.  
  2046. .offCanvasMenu-backdrop {
  2047. background: rgba(0,0,0,0.25);
  2048. }
  2049.  
  2050. .offCanvasMenu-header a {
  2051. color: inherit;
  2052. text-decoration: none
  2053. }
  2054.  
  2055. .offCanvasMenu-header a:hover {
  2056. text-decoration: underline
  2057. }
  2058.  
  2059. .offCanvasMenu-link {
  2060. text-decoration: inherit
  2061. }
  2062.  
  2063. .offCanvasMenu-link:hover {
  2064. text-decoration: inherit
  2065. }
  2066.  
  2067. .offCanvasMenu-link.offCanvasMenu-link--splitToggle {
  2068. text-decoration: inherit
  2069. }
  2070.  
  2071. .offCanvasMenu-linkHolder.is-selected a {
  2072. color: inherit
  2073. }
  2074.  
  2075. .offCanvasMenu-linkHolder .offCanvasMenu-link:hover {
  2076. background: none
  2077. }
  2078.  
  2079. .offCanvasMenu--blocks .offCanvasMenu-content {
  2080. background: #131516;
  2081. background-attachment: fixed;
  2082. background-size: cover;
  2083. color: #aaa
  2084. }
  2085.  
  2086. .offCanvasMenu--blocks .offCanvasMenu-header {
  2087. color: #49a1d8;
  2088. background: #34393c;
  2089. }
  2090.  
  2091. .offCanvasMenu--nav .offCanvasMenu-content {
  2092. color: #aaa;
  2093. background: #2b2f31;
  2094. }
  2095.  
  2096. .offCanvasMenu--nav .offCanvasMenu-content a {
  2097. color: inherit
  2098. }
  2099.  
  2100. .offCanvasMenu--nav .offCanvasMenu-header {
  2101. background: rgba(19,21,22,0.15);
  2102. }
  2103.  
  2104. .offCanvasMenu--nav .offCanvasMenu-linkHolder {
  2105. text-decoration: none
  2106. }
  2107.  
  2108. .offCanvasMenu--nav .offCanvasMenu-linkHolder:hover {
  2109. background: rgba(19,21,22,0.09)
  2110. }
  2111.  
  2112. .offCanvasMenu--nav .offCanvasMenu-linkHolder.is-selected {
  2113. color: #fff;
  2114. background: #34393c
  2115. }
  2116.  
  2117. .offCanvasMenu--nav .offCanvasMenu-subList {
  2118. background: rgba(19,21,22,0.15)
  2119. }
  2120.  
  2121. .offCanvasMenu--nav .offCanvasMenu-subList .offCanvasMenu-link:hover {
  2122. text-decoration: none;
  2123. background: rgba(19,21,22,0.15)
  2124. }
  2125.  
  2126. .offCanvasMenu--nav .offCanvasMenu-installBanner {
  2127. background: rgba(19,21,22,0.15);
  2128. }
  2129.  
  2130. .tabs-tab {
  2131. color: inherit;
  2132. text-decoration: none;
  2133. }
  2134.  
  2135. .tabs-tab:hover {
  2136. text-decoration: none
  2137. }
  2138.  
  2139. .tabs-extra a {
  2140. color: inherit;
  2141. text-decoration: none;
  2142. }
  2143.  
  2144. .tabs--standalone {
  2145. color: #aaa;
  2146. background: #2b2f31;
  2147. border: 1px solid #131516;
  2148. }
  2149.  
  2150. .tabs--standalone .tabs-tab:hover {
  2151. color: #ffffff
  2152. }
  2153.  
  2154. .tabs--standalone .tabs-tab.is-active {
  2155. color: #ffffff;
  2156. background: #16435e;
  2157. border-color: transparent;
  2158. }
  2159.  
  2160. .tabs--standalone .hScroller-action {
  2161. color: #aaa
  2162. }
  2163.  
  2164. .tabs--standalone .hScroller-action:hover {
  2165. color: #fff
  2166. }
  2167.  
  2168. .tabs--standalone .hScroller-action.hScroller-action--start {
  2169. background: #2b2f31;
  2170. background: linear-gradient(to right, #2b2f31 66%, rgba(43,47,49,0) 100%)
  2171. }
  2172.  
  2173. .tabs--standalone .hScroller-action.hScroller-action--end {
  2174. background: #2b2f31;
  2175. background: linear-gradient(to right, rgba(43,47,49,0) 0%, #2b2f31 33%)
  2176. }
  2177.  
  2178. .overlay-container {
  2179. background: rgba(19,21,22,0.4);
  2180. }
  2181.  
  2182. .overlay {
  2183. background: #131516;
  2184. background-attachment: fixed;
  2185. background-size: cover;
  2186. color: #aaa;
  2187. border: 1px solid #575a5c;
  2188. outline: none
  2189. }
  2190.  
  2191. .overlay-title {
  2192. color: #fff;
  2193. background: #16435e;
  2194. border-bottom: 1px solid #575a5c;
  2195. }
  2196. .overlay-content .block-row.block-row--separated+.block-row {
  2197. border-top: 1px solid #575a5c;
  2198. }
  2199.  
  2200. .globalAction-bar {
  2201. background: #49a1d8;
  2202. }
  2203.  
  2204. .globalAction-block i {
  2205. background-color: #49a1d8;
  2206. }
  2207.  
  2208. .avatar img {
  2209. background-color: #2b2f31
  2210. }
  2211.  
  2212. .avatar.avatar--default.avatar--default--dynamic,
  2213. .avatar.avatar--default.avatar--default--text {
  2214. text-decoration: none !important;
  2215. }
  2216.  
  2217. .avatar.avatar--default.avatar--default--text {
  2218. width: 96px;
  2219. max-width: 100%;
  2220. height: auto;
  2221. color: #818181 !important;
  2222. background: #404345 !important
  2223. }
  2224.  
  2225. .avatar.avatar--default.avatar--default--text.avatar--s {
  2226. width: 48px;
  2227. height: 48px;
  2228. }
  2229.  
  2230. .avatar.avatar--default.avatar--default--text.avatar--xxs,
  2231. .menu-row .avatar.avatar--default.avatar--default--text,
  2232. .p-body-sidebar .avatar.avatar--default.avatar--default--text {
  2233. width: 24px;
  2234. height: 24px;
  2235. }
  2236.  
  2237. .avatar.avatar--default.avatar--default--image {
  2238. background-color: #2b2f31;
  2239. background-image: url();
  2240. background-size: cover
  2241. }
  2242.  
  2243. .avatar:hover {
  2244. text-decoration: none
  2245. }
  2246.  
  2247. .avatar-update {
  2248. background: #000;
  2249. background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.3) 100%);
  2250. }
  2251.  
  2252. .avatar-update a {
  2253. color: inherit;
  2254. text-decoration: none
  2255. }
  2256.  
  2257. .avatar-update a:hover {
  2258. text-decoration: underline
  2259. }
  2260.  
  2261. .avatar-update a {
  2262. text-shadow: 0 0 2px rgba(0,0,0,0.6);
  2263. color: #fff
  2264. }
  2265.  
  2266. .avatar-update a:hover {
  2267. text-decoration: none
  2268. }
  2269.  
  2270. .avatarWrapper-update {
  2271. color: #fff;
  2272. text-decoration: none;
  2273. }
  2274.  
  2275. .avatarWrapper-update:before {
  2276. background: #000;
  2277. background: linear-gradient(to bottom, rgba(0,0,0,0) 60%, rgba(0,0,0,0.9) 100%);
  2278. }
  2279.  
  2280. .avatarWrapper-update:hover {
  2281. color: #fff;
  2282. text-decoration: none
  2283. }
  2284.  
  2285. .dataList-row:hover:not(.dataList-row--noHover):not(.dataList-row--header):not(.is-spHovered),.is-spActive .dataList-row.is-spChecked {
  2286. background: rgba(52,57,60,0.5)
  2287. }
  2288.  
  2289. .is-spActive .dataList-row.is-spHovered {
  2290. background: rgba(52,57,60,0.75)
  2291. }
  2292.  
  2293. .is-spActive .dataList-row:not(.dataList-row--noHover):not(.dataList-row--header):not(.is-spChecked) * {
  2294. color: #818181
  2295. }
  2296.  
  2297. .dataList-row.dataList-row--header .dataList-cell a {
  2298. color: inherit;
  2299. text-decoration: underline
  2300. }
  2301.  
  2302. .dataList-row.dataList-row--subSection .dataList-cell {
  2303. color: #fff;
  2304. background: #16435e;
  2305. }
  2306.  
  2307. .dataList-row.dataList-row--subSection .dataList-cell a {
  2308. color: inherit
  2309. }
  2310.  
  2311. .dataList-row.dataList-row--subSection:hover:not(.dataList-row--noHover) .dataList-cell {
  2312. background: #16435e
  2313. }
  2314.  
  2315. .dataList-row.dataList-row--custom .dataList-cell--link a {
  2316. color: red
  2317. }
  2318.  
  2319. .dataList-row.dataList-row--parentCustom .dataList-cell--link a {
  2320. color: orange
  2321. }
  2322.  
  2323. .dataList-row.dataList-row--disabled .dataList-cell--link a {
  2324. color: #818181;
  2325. }
  2326.  
  2327. .dataList-cell.dataList-cell--alt,.dataList-cell.dataList-cell--action {
  2328. background: #2f3336
  2329. }
  2330.  
  2331. .dataList-cell.dataList-cell--highlighted {
  2332. background: #34393c
  2333. }
  2334.  
  2335. .dataList-cell.dataList-cell--action,.dataList-cell.dataList-cell--link {
  2336. text-decoration: none
  2337. }
  2338.  
  2339. .dataList-cell.dataList-cell--action.dataList-cell--alt:hover,.dataList-cell.dataList-cell--link.dataList-cell--alt:hover,.dataList-cell.dataList-cell--action.dataList-cell--action:hover,.dataList-cell.dataList-cell--link.dataList-cell--action:hover {
  2340. background: #34393c
  2341. }
  2342.  
  2343. .dataList-cell.dataList-cell--action a,.dataList-cell.dataList-cell--link a,.dataList-cell.dataList-cell--action label,.dataList-cell.dataList-cell--link label,.dataList-cell.dataList-cell--action .dataList-blockLink,.dataList-cell.dataList-cell--link .dataList-blockLink {
  2344. text-decoration: none;
  2345. }
  2346.  
  2347. .dataList-cell.dataList-cell--attachment {
  2348. background: center / cover #2f3336 no-repeat;
  2349. }
  2350.  
  2351. .dataList-cell.dataList-cell--hint,.dataList-row--subSection .dataList-cell.dataList-cell--hint {
  2352. color: #818181
  2353. }
  2354. .dataList-cell .is-match {
  2355. text-decoration: underline;
  2356. color: red
  2357. }
  2358.  
  2359. .dataList-hint,.dataList-subRow {
  2360. color: #818181;
  2361. }
  2362.  
  2363. .dataList-row--footer .dataList-cell {
  2364. color: #969696;
  2365. background: #2f3336;
  2366. }
  2367.  
  2368. .dataList--responsive .dataList-cell[data-cell-label]:before {
  2369. word-break: normal;
  2370. }
  2371.  
  2372. .filterBlock {
  2373. color: #aaa;
  2374. background: #2b2f31;
  2375. }
  2376.  
  2377. .quickFilter .js-filterClear {
  2378. color: #969696
  2379. }
  2380.  
  2381. .filterBar-filterToggle {
  2382. text-decoration: none;
  2383. color: inherit;
  2384. }
  2385.  
  2386. .filterBar-filterToggle:hover {
  2387. text-decoration: none
  2388. }
  2389.  
  2390. .filterBar-menuTrigger {
  2391. text-decoration: none;
  2392. }
  2393.  
  2394. .contentRow.is-deleted .contentRow-header,.contentRow.is-deleted .contentRow-title {
  2395. text-decoration: line-through
  2396. }
  2397.  
  2398. .contentRow-figureIcon {
  2399. color: #49a1d8
  2400. }
  2401.  
  2402. .contentRow-muted {
  2403. color: #818181
  2404. }
  2405.  
  2406. .contentRow-fader {
  2407. background: transparent;
  2408. background: linear-gradient(to bottom, rgba(43,47,49,0) 0%, #2b2f31 80%)
  2409. }
  2410.  
  2411. .contentRow-minor {
  2412. color: #818181
  2413. }
  2414.  
  2415. .contentRow-minor.contentRow-minor--hideLinks a {
  2416. color: inherit;
  2417. text-decoration: none
  2418. }
  2419.  
  2420. .contentRow-minor.contentRow-minor--hideLinks a:hover {
  2421. text-decoration: underline
  2422. }
  2423.  
  2424. .contentRow-extra.contentRow-extra--small {
  2425. color: #818181
  2426. }
  2427.  
  2428. .contentRow-extra.contentRow-extra--normal {
  2429. color: #818181
  2430. }
  2431.  
  2432. .contentRow-extra.contentRow-extra--large {
  2433. color: #818181
  2434. }
  2435.  
  2436. .contentRow-extra.contentRow-extra--larger {
  2437. color: #818181
  2438. }
  2439.  
  2440. .contentRow-extra.contentRow-extra--largest {
  2441. color: #818181
  2442. }
  2443.  
  2444. .pageNav-jump {
  2445. background: linear-gradient(0deg, #34393c, #2d3134);
  2446. color: #aaa;
  2447. background: #2f3336;
  2448. }
  2449.  
  2450. .pageNav-jump, .pageNav-page {
  2451. border: 1px solid #131516;
  2452. border-color: #131516;
  2453. }
  2454.  
  2455. .pageNav-jump:hover,.pageNav-jump:active {
  2456. text-decoration: none;
  2457. color: #ffffff;
  2458. background: #16435e;
  2459. }
  2460.  
  2461. .pageNav-page {
  2462. background: linear-gradient(0deg, #34393c, #2d3134);
  2463. color: #aaa;
  2464. background: #2f3336;
  2465. }
  2466.  
  2467. .pageNav-page:not(:first-child) {
  2468. border-left-color: #131516;
  2469. }
  2470.  
  2471. .pageNav-page:hover,.pageNav-page:active {
  2472. text-decoration: none;
  2473. color: #ffffff;
  2474. background: #16435e;
  2475. }
  2476.  
  2477. .pageNav-page>a {
  2478. text-decoration: none;
  2479. color: inherit
  2480. }
  2481.  
  2482. .pageNav-page.pageNav-page--current {
  2483. color: #ffffff;
  2484. background: #16435e;
  2485. border-color: #131516;
  2486. }
  2487.  
  2488. .pageNavSimple-el.pageNavSimple-el--current {
  2489. color: #49a1d8;
  2490. background: #2b2f31;
  2491. }
  2492.  
  2493. .pageNavSimple-el.pageNavSimple-el--current:hover,.pageNavSimple-el.pageNavSimple-el--current:active {
  2494. background: #323739;
  2495. text-decoration: none
  2496. }
  2497.  
  2498. .pageNavSimple-el.pageNavSimple-el--prev,.pageNavSimple-el.pageNavSimple-el--next {
  2499. background: linear-gradient(0deg, #34393c, #2d3134);
  2500. color: #fff;
  2501. }
  2502.  
  2503. .pageNavSimple-el.pageNavSimple-el--prev:hover,.pageNavSimple-el.pageNavSimple-el--next:hover,.pageNavSimple-el.pageNavSimple-el--prev:active,.pageNavSimple-el.pageNavSimple-el--next:active {
  2504. background: #3b4144;
  2505. text-decoration: none
  2506. }
  2507.  
  2508. .pageNavSimple-el.pageNavSimple-el--first,.pageNavSimple-el.pageNavSimple-el--last {
  2509. color: rgba(255,255,255,0.6)
  2510. }
  2511.  
  2512. .pageNavSimple-el.pageNavSimple-el--first:hover,.pageNavSimple-el.pageNavSimple-el--last:hover,.pageNavSimple-el.pageNavSimple-el--first:active,.pageNavSimple-el.pageNavSimple-el--last:active {
  2513. background: #3b4144;
  2514. color: #fff;
  2515. text-decoration: none
  2516. }
  2517.  
  2518. .pageNavSimple-el.is-disabled {
  2519. background: none;
  2520. color: #818181;
  2521. text-decoration: none;
  2522. }
  2523.  
  2524. .pageNavSimple-el.is-disabled:hover {
  2525. background: none;
  2526. color: #818181
  2527. }
  2528.  
  2529. .flashMessage {
  2530. color: #202020;
  2531. background: rgba(226,226,226,0.9);
  2532. }
  2533.  
  2534. .autoCompleteList {
  2535. color: #aaa;
  2536. background: #2b2f31;
  2537. }
  2538.  
  2539. .autoCompleteList li.is-selected {
  2540. background: #34393c
  2541. }
  2542.  
  2543. .tagItem {
  2544. color: #969696;
  2545. background: #2f3336;
  2546. border: 1px solid #131415;
  2547. }
  2548.  
  2549. a.tagItem:hover {
  2550. text-decoration: none;
  2551. color: #969696;
  2552. background: #2b2f31
  2553. }
  2554.  
  2555. .likesBar {
  2556. background: #2f3336;
  2557. border: 1px solid #383b3d;
  2558. border-left: 2px solid #49a1d8;
  2559. padding: 10px;
  2560. }
  2561.  
  2562. .likeIcon:before {
  2563. color: #49a1d8
  2564. }
  2565.  
  2566. .attachUploadList {
  2567. color: #888;
  2568. background: rgba(0,0,0,.14);
  2569. border: 1px solid #383b3d;
  2570. }
  2571.  
  2572. .bbCodeBlock-expandLink {
  2573. background: linear-gradient(to bottom, rgba(42,42,42,0) 0%, #1f2224 90%);
  2574. }
  2575.  
  2576. .bbCodeBlock-title {
  2577. padding: 8px 10px;
  2578. font-size: 12px;
  2579. color: #6e7c91;
  2580. background: #2a313c!important;
  2581. border-bottom: 1px solid #383b3d;
  2582. }
  2583.  
  2584. .bbCodeBlock {
  2585. background: #2f3336!important;
  2586. border: 1px solid #383b3d!important;
  2587. border-left: 2px solid #49a1d8!important;
  2588. }
  2589. .reactionsBar {
  2590. background: #2f3336;
  2591. }
  2592.  
  2593. .reactionSummary>li {
  2594. background: #2b2f31;
  2595. }
  2596.  
  2597. .reactionsBar .reactionSummary>li,.message-responseRow .reactionSummary>li {
  2598. background: #2f3336
  2599. }
  2600.  
  2601. .colorChip-inner {
  2602. background-color: transparent;
  2603. }
  2604.  
  2605. .bookmarkLink.bookmarkLink--highlightable.is-bookmarked {
  2606. color: #49a1d8
  2607. }
  2608.  
  2609. .bookmarkLink.bookmarkLink--highlightable.is-bookmarked:hover {
  2610. color: #49a1d8
  2611. }
  2612.  
  2613. .solutionIcon {
  2614. color: #818181;
  2615. }
  2616.  
  2617. a.solutionIcon {
  2618. color: #818181;
  2619. text-decoration: none
  2620. }
  2621.  
  2622. .solutionIcon.is-solution {
  2623. color: #63b265;
  2624. }
  2625.  
  2626. .actionBar-action.actionBar-action--inlineMod label {
  2627. color: #fff;
  2628. }
  2629.  
  2630. .actionBar-action.actionBar-action--mq.is-selected {
  2631. background-color: #34393c;
  2632. }
  2633.  
  2634. .actionBar-action.actionBar-action--postLink {
  2635. text-decoration: inherit !important;
  2636. color: inherit !important
  2637. }
  2638.  
  2639. .actionBar-action.actionBar-action--reaction:not(.has-reaction) .reaction-text {
  2640. color: inherit
  2641. }
  2642.  
  2643. .actionBar-action.actionBar-action--view {
  2644. background: #2b2f31;
  2645. color: #fff;
  2646. }
  2647.  
  2648. .actionBar-action.actionBar-action--view:hover,.actionBar-action.actionBar-action--view:active,.actionBar-action.actionBar-action--view:focus {
  2649. text-decoration: none;
  2650. background: #34393c
  2651. }
  2652.  
  2653. .actionBar-set.actionBar-set--internal a.actionBar-action {
  2654. color: #ddd;
  2655. }
  2656.  
  2657. .actionBar-set.actionBar-set--external .actionBar-action {
  2658. border-color: #575a5c;
  2659. }
  2660.  
  2661. .label.label--subtle {
  2662. color: #818181;
  2663. background: #2f3336;
  2664. }
  2665.  
  2666. a.label.label--subtle:hover,a:hover .label.label--subtle {
  2667. background: #383e41;
  2668. }
  2669.  
  2670. .label.label--primary {
  2671. color: #fff;
  2672. background: #34393c;
  2673. }
  2674.  
  2675. a.label.label--primary:hover,a:hover .label.label--primary {
  2676. background: #3e4347;
  2677. }
  2678.  
  2679. .label.label--accent {
  2680. color: #49a1d8;
  2681. background: #2b2f31;
  2682. }
  2683.  
  2684. a.label.label--accent:hover,a:hover .label.label--accent {
  2685. background: #34393c;
  2686. }
  2687.  
  2688. .label.label--red {
  2689. color: #fff;
  2690. background: #e20000;
  2691. }
  2692.  
  2693. a.label.label--red:hover,a:hover .label.label--red {
  2694. background: #f60000;
  2695. }
  2696.  
  2697. .label.label--green {
  2698. color: #fff;
  2699. background: #008000;
  2700. }
  2701.  
  2702. a.label.label--green:hover,a:hover .label.label--green {
  2703. background: #009400;
  2704. }
  2705.  
  2706. .label.label--olive {
  2707. color: #fff;
  2708. background: #808000;
  2709. }
  2710.  
  2711. a.label.label--olive:hover,a:hover .label.label--olive {
  2712. background: #949400;
  2713. }
  2714.  
  2715. .label.label--lightGreen {
  2716. color: #000;
  2717. background: #ccf9c8;
  2718. }
  2719.  
  2720. a.label.label--lightGreen:hover,a:hover .label.label--lightGreen {
  2721. background: #ddfbda;
  2722. }
  2723.  
  2724. .label.label--blue {
  2725. color: #fff;
  2726. background: #0008e3;
  2727. }
  2728.  
  2729. a.label.label--blue:hover,a:hover .label.label--blue {
  2730. background: #0009f7;
  2731. }
  2732.  
  2733. .label.label--royalBlue {
  2734. color: #fff;
  2735. background: #4169e1;
  2736. }
  2737.  
  2738. a.label.label--royalBlue:hover,a:hover .label.label--royalBlue {
  2739. background: #5377e4;
  2740. }
  2741.  
  2742. .label.label--skyBlue {
  2743. color: #fff;
  2744. background: #7cc3e0;
  2745. }
  2746.  
  2747. a.label.label--skyBlue:hover,a:hover .label.label--skyBlue {
  2748. background: #8ccbe4;
  2749. }
  2750.  
  2751. .label.label--gray {
  2752. color: #fff;
  2753. background: #808080;
  2754. }
  2755.  
  2756. a.label.label--gray:hover,a:hover .label.label--gray {
  2757. background: #8a8a8a;
  2758. }
  2759.  
  2760. .label.label--silver {
  2761. color: #000;
  2762. background: #c0c0c0;
  2763. }
  2764.  
  2765. a.label.label--silver:hover,a:hover .label.label--silver {
  2766. background: #cacaca;
  2767. }
  2768.  
  2769. .label.label--yellow {
  2770. color: #000;
  2771. background: #ffff91;
  2772. }
  2773.  
  2774. a.label.label--yellow:hover,a:hover .label.label--yellow {
  2775. background: #ffffa5;
  2776. }
  2777.  
  2778. .label.label--orange {
  2779. color: #000;
  2780. background: #ffcb00;
  2781. }
  2782.  
  2783. a.label.label--orange:hover,a:hover .label.label--orange {
  2784. background: #ffcf14;
  2785. }
  2786.  
  2787. .label.label--error {
  2788. color: #c84448;
  2789. background: #fde9e9;
  2790. }
  2791.  
  2792. a.label.label--error:hover,a:hover .label.label--error {
  2793. background: #fffcfc;
  2794. }
  2795.  
  2796. .reactionScore {
  2797. color: #969696;
  2798. background: #2f3336;
  2799. }
  2800.  
  2801. .reactionScore:hover {
  2802. background: #2b2f31
  2803. }
  2804.  
  2805. .reaction-text::after {
  2806. color: transparent;
  2807. }
  2808.  
  2809. .reaction--1 .reaction-text {
  2810. color: #fff
  2811. }
  2812.  
  2813. .reaction--2 .reaction-text {
  2814. color: #E81C27
  2815. }
  2816.  
  2817. .reaction--3 .reaction-text {
  2818. color: #FDCA47
  2819. }
  2820.  
  2821. .reaction--4 .reaction-text {
  2822. color: #FDCA47
  2823. }
  2824.  
  2825. .reaction--5 .reaction-text {
  2826. color: #FDCA47
  2827. }
  2828.  
  2829. .reaction--6 .reaction-text {
  2830. color: #FF4D4D
  2831. }
  2832.  
  2833. .bbMediaWrapper-fallback {
  2834. background: #2f3336;
  2835. }
  2836.  
  2837. .bbOembed .embedly-card {
  2838. background: white
  2839. }
  2840.  
  2841. .bbTable>table>thead>tr>th,.bbTable>table>tbody>tr>th {
  2842. background: #8cc3e6;
  2843. }
  2844.  
  2845. .bbTable>table>thead>tr>td,.bbTable>table>tbody>tr>td {
  2846. background: #2b2f31;
  2847. }
  2848.  
  2849. .bbWrapper .contentBox {
  2850. color: #aaa;
  2851. background: #2b2f31
  2852. }
  2853.  
  2854. .bbWrapper .accentBox {
  2855. color: #49a1d8;
  2856. background: #2b2f31;
  2857. }
  2858.  
  2859. .bbWrapper .accentBox a {
  2860. color: #49a1d8
  2861. }
  2862.  
  2863. .bbWrapper .highlightBox {
  2864. color: #aaa;
  2865. background: #34393c
  2866. }
  2867.  
  2868. .bbWrapper .imgBar {
  2869. color: #fff;
  2870. background-repeat: no-repeat;
  2871. background-size: cover
  2872. }
  2873.  
  2874. .blockLink.is-selected {
  2875. color: #6bb2df;
  2876. background: #34393c;
  2877. }
  2878.  
  2879. .blockLink:hover {
  2880. background: #34393c
  2881. }
  2882.  
  2883. .dataList-row {
  2884. background: #2b2f31
  2885. }
  2886.  
  2887. .dataListAltRows .dataList-row:nth-of-type(even) {
  2888. background: #2f3336
  2889. }
  2890.  
  2891. .dataList-row:hover:not(.dataList-row--noHover):not(.dataList-row--header):not(.is-spHovered),.is-spActive .dataList-row.is-spChecked {
  2892. background: #2f3336
  2893. }
  2894.  
  2895. .is-spActive .dataList-row.is-spHovered {
  2896. background: #2f3336
  2897. }
  2898.  
  2899. .dataList-cell.dataList-cell--alt,.dataList-cell.dataList-cell--action {
  2900. background: #2f3336
  2901. }
  2902.  
  2903. .dataList-cell.dataList-cell--action.dataList-cell--alt:hover,.dataList-cell.dataList-cell--link.dataList-cell--alt:hover,.dataList-cell.dataList-cell--action.dataList-cell--action:hover,.dataList-cell.dataList-cell--link.dataList-cell--action:hover {
  2904. background: #34393c
  2905. }
  2906.  
  2907. .contentRow-lesser {
  2908. color: #818181
  2909. }
  2910.  
  2911. .contentRow-header a,.contentRow-title a {
  2912. color: inherit
  2913. }
  2914.  
  2915. .contentRow-header a:hover,.contentRow-title a:hover {
  2916. color: #6bb2df
  2917. }
  2918.  
  2919. .inputGroup.inputGroup--joined .inputGroup-text {
  2920. color: #aaa;
  2921. background: #2f3336;
  2922. }
  2923.  
  2924. .inputGroup.inputGroup--joined .inputGroup-text:hover,.inputGroup.inputGroup--joined .inputGroup-text:active,.inputGroup.inputGroup--joined .inputGroup-text:focus {
  2925. background: #34393c
  2926. }
  2927.  
  2928. .inputGroup.inputGroup--joined .inputNumber-button:hover,.inputGroup.inputGroup--joined .inputNumber-button:active,.inputGroup.inputGroup--joined .inputNumber-button:focus {
  2929. background: #34393c
  2930. }
  2931.  
  2932. .focus-content {
  2933. background: #1f2224;
  2934. }
  2935.  
  2936. .p-breadcrumbs {
  2937. color: inherit;
  2938. background-color: #2b2f31;
  2939. background-image: none;
  2940. box-shadow: none;
  2941. }
  2942.  
  2943. .focus-width .p-body-inner {
  2944. padding-left: 0;
  2945. padding-right: 0;
  2946. }
  2947.  
  2948. .p-body-header {
  2949. color: #aaa;
  2950. background: #1f2224;
  2951. border: 1px solid #d8d8d8;
  2952. border-radius: 4px;
  2953. box-shadow: rgb(0 0 0 / 8%) 0px 1px 4px;
  2954. border-color: transparent;
  2955. margin-bottom: 0;
  2956. }
  2957.  
  2958. .p-body-main input[type="checkbox"],.p-body-main input[type="radio"] {
  2959. color: #969696
  2960. }
  2961.  
  2962. .p-body-main input[type="checkbox"]~span.iconic-label,.p-body-main input[type="radio"]~span.iconic-label {
  2963. color: #969696
  2964. }
  2965.  
  2966. .p-body-main input[type="checkbox"]:checked~span.iconic-label,.p-body-main input[type="radio"]:checked~span.iconic-label {
  2967. color: #aaa
  2968. }
  2969.  
  2970. .p-body-main input[type="checkbox"]:checked+i,.p-body-main input[type="radio"]:checked+i {
  2971. color: #6bb2df
  2972. }
  2973.  
  2974. .label.label--primary {
  2975. color: #8cc3e6;
  2976. background: #16435e;
  2977. }
  2978.  
  2979. a.label.label--primary:hover,a:hover .label.label--primary {
  2980. background: #419cd6;
  2981. }
  2982.  
  2983. .menu-tabHeader .tabs-tab:hover:not(.is-active) {
  2984. color: inherit;
  2985. background: #1a5478
  2986. }
  2987.  
  2988. .tabs--standalone .tabs-tab:hover:not(.is-active) {
  2989. background: #34393c
  2990. }
  2991.  
  2992. .button:hover,a.button:hover,.button:active,a.button:active,.button:focus,a.button:focus {
  2993. text-decoration: none;
  2994. color: #ffffff;
  2995. background: #2c8ecc
  2996. }
  2997.  
  2998. .button.button--primary:hover,a.button.button--primary:hover,.button.button--primary:active,a.button.button--primary:active,.button.button--primary:focus,a.button.button--primary:focus {
  2999. text-decoration: none;
  3000. color: #ffffff;
  3001. background: #2c8ecc
  3002. }
  3003.  
  3004. .button.button--link,a.button.button--link {
  3005. color: #aaa;
  3006. background: #2f3336;
  3007. border-color: #575a5c;
  3008. }
  3009.  
  3010. .button.button--link:hover,a.button.button--link:hover,.button.button--link:active,a.button.button--link:active,.button.button--link:focus,a.button.button--link:focus {
  3011. text-decoration: none;
  3012. background: #34393c
  3013. }
  3014.  
  3015. .avatar.avatar--productIconDefault {
  3016. color: #818181 !important;
  3017. background: #404345 !important;
  3018. }
  3019.  
  3020. .xfmgThumbnail.xfmgThumbnail--noThumb {
  3021. color: #aaa;
  3022. background: #2f3336
  3023. }
  3024.  
  3025. .xfmgThumbnail-icon {
  3026. color: #818181;
  3027. }
  3028.  
  3029. .avatar.avatar--resourceIconDefault {
  3030. color: #818181 !important;
  3031. background: #404345 !important;
  3032. }
  3033.  
  3034. .structItem {
  3035. border-top: 1px solid #131516;
  3036. }
  3037.  
  3038. .structItem-title {
  3039. font-size: 13px;
  3040. }
  3041.  
  3042. .structItem-minor {
  3043. font-size: 12px;
  3044. color: #9a9a9a;
  3045. }
  3046.  
  3047. .structItem-parts>li:nth-child(even) {
  3048. color: inherit;
  3049. }
  3050.  
  3051. .structItem ul.structItem-parts::after {
  3052. content: "⚡";
  3053. font-size: 12px;
  3054. color: #235f83;
  3055. opacity: 0.1;
  3056. }
  3057.  
  3058. .structItem.is-unread ul.structItem-parts::after {
  3059. opacity: 1;
  3060. }
  3061.  
  3062. .structItem.is-unread .structItem-title {
  3063. color: #bbb;
  3064. }
  3065.  
  3066. .fervexTime .badge {
  3067. color: #ffffff;
  3068. background: #383b3d;
  3069. padding: 6px 8px;
  3070. }
  3071.  
  3072. `);
  3073. }
  3074. }
  3075. }
  3076.  
  3077. function addMention() {
  3078. const chatInput = document.querySelector('input[name="shout"]');
  3079.  
  3080. function addAtSymbol(messageElement) {
  3081. const usernameElement = messageElement.querySelector('.username');
  3082. if (usernameElement) {
  3083. const username = usernameElement.textContent;
  3084. const atSymbol = document.createElement('ping');
  3085. atSymbol.className = 'at-symbol';
  3086. atSymbol.textContent = '@';
  3087. atSymbol.style.cursor = 'pointer';
  3088. atSymbol.style.marginLeft = '2px';
  3089. atSymbol.style.fontWeight = 'bold';
  3090. atSymbol.addEventListener('click', () => {
  3091. chatInput.value += `@${username} `;
  3092. chatInput.focus();
  3093. });
  3094. usernameElement.after(atSymbol);
  3095. }
  3096. }
  3097. const messages = document.querySelectorAll('.siropuShoutboxShouts li');
  3098. messages.forEach(addAtSymbol);
  3099. const shoutbox = document.querySelector('.siropuShoutboxShouts');
  3100. const observer = new MutationObserver((mutations) => {
  3101. mutations.forEach((mutation) => {
  3102. mutation.addedNodes.forEach((node) => {
  3103. if (node.nodeType === 1 && node.matches('li')) {
  3104. addAtSymbol(node);
  3105. }
  3106. });
  3107. });
  3108. });
  3109. observer.observe(shoutbox, {
  3110. childList: true
  3111. });
  3112. }
  3113.  
  3114. function correctToolbar() {
  3115. function adjustToolbarHeight() {
  3116. let toolbar = document.querySelector('.wysibb-toolbar');
  3117. if (toolbar) {
  3118. toolbar.style.maxHeight = '100px';
  3119. }
  3120. }
  3121. window.addEventListener('load', adjustToolbarHeight);
  3122. let observer = new MutationObserver(adjustToolbarHeight);
  3123. observer.observe(document.body, {
  3124. childList: true,
  3125. subtree: true
  3126. });
  3127. }
  3128. correctToolbar()
  3129. ferveX("#fervexConfMenu").on("mousedown", dragMouseDown);
  3130.  
  3131. function dragMouseDown(e) {
  3132. e.preventDefault();
  3133. var elmnt = ferveX("#fervexConf")[0];
  3134. var pos1 = 0,
  3135. pos2 = 0,
  3136. pos3 = 0,
  3137. pos4 = 0;
  3138. pos3 = e.clientX;
  3139. pos4 = e.clientY;
  3140. ferveX(document).on("mouseup", closeDragElement);
  3141. ferveX(document).on("mousemove", elementDrag);
  3142.  
  3143. function elementDrag(e) {
  3144. e.preventDefault();
  3145. pos1 = pos3 - e.clientX;
  3146. pos2 = pos4 - e.clientY;
  3147. pos3 = e.clientX;
  3148. pos4 = e.clientY;
  3149. var newRight = parseInt(ferveX(elmnt).css("right")) + pos1;
  3150. ferveX(elmnt).css("top", (elmnt.offsetTop - pos2) + "px");
  3151. ferveX(elmnt).css("right", newRight + "px");
  3152. }
  3153.  
  3154. function closeDragElement() {
  3155. ferveX(document).off("mouseup", closeDragElement);
  3156. ferveX(document).off("mousemove", elementDrag);
  3157. }
  3158. }
  3159. ferveX('.panel-menu-list').first().append('<li><a href="#" id="open_menu_reyggtools" rel="fervextip" title="Raccourci : CTRL+E">Paramètres ReYGGTools</a></li>');
  3160. var showMenu = 0;
  3161.  
  3162. function showMenuReYGGTools() {
  3163. if (showMenu) {
  3164. ferveX('#fervexConf').slideUp(500);
  3165. showMenu = 0;
  3166. } else {
  3167. ferveX('#fervexConf').slideDown(500);
  3168. showMenu = 1;
  3169. }
  3170. }
  3171. /* config */
  3172. document.addEventListener("keyup", (event) => {
  3173. // Handle Firefox's events during IME composition
  3174. if (event.isComposing || event.keyCode === 229) {
  3175. return;
  3176. }
  3177. // Ctrl+E
  3178. if (event.ctrlKey && event.keyCode === 69) {
  3179. showMenuReYGGTools();
  3180. }
  3181. });
  3182. ferveX('#open_menu_reyggtools').click(function(e) {
  3183. e.preventDefault();
  3184. showMenuReYGGTools();
  3185. });
  3186. ferveX('#close_menu_reyggtools').click(function(e) {
  3187. e.preventDefault();
  3188. showMenuReYGGTools();
  3189. });
  3190. ferveX('#close_menu_reyggtools').on('mouseenter', function(e) {
  3191. ferveX(this).addClass('bg-danger');
  3192. }).on('mouseleave', function(e) {
  3193. ferveX(this).removeClass('bg-danger');
  3194. });
  3195. ferveX(document).on('click', '.config-recherche-bas', function(e) {
  3196. setValue('fervex_recherche', 'classique', 365);
  3197. ferveX('.config-recherche-bas').removeClass('btn-primary').addClass('btn-success');
  3198. ferveX('.config-recherche-popup').removeClass('btn-success').addClass('btn-primary');
  3199. });
  3200. ferveX(document).on('click', '.config-recherche-popup', function(e) {
  3201. setValue('fervex_recherche', 'bulle', 365);
  3202. ferveX('.config-recherche-popup').removeClass('btn-primary').addClass('btn-success');
  3203. ferveX('.config-recherche-bas').removeClass('btn-success').addClass('btn-primary');
  3204. });
  3205. ferveX(document).on('click', '.config-recherche-date-desc', function(e) {
  3206. setValue('fervex_recherche_date', 'desc', 365);
  3207. ferveX('.config-recherche-date-desc').removeClass('btn-primary').addClass('btn-success');
  3208. ferveX('.config-recherche-date-asc').removeClass('btn-success').addClass('btn-primary');
  3209. });
  3210. ferveX(document).on('click', '.config-recherche-date-asc', function(e) {
  3211. setValue('fervex_recherche_date', 'asc', 365);
  3212. ferveX('.config-recherche-date-asc').removeClass('btn-primary').addClass('btn-success');
  3213. ferveX('.config-recherche-date-desc').removeClass('btn-success').addClass('btn-primary');
  3214. });
  3215. ferveX(document).on('click', '.config-darkmode-on', function(e) {
  3216. setValue('re_darkmode', 'on', 365);
  3217. ferveX('.config-darkmode-on').removeClass('btn-primary').addClass('btn-success');
  3218. ferveX('.config-darkmode-off').removeClass('btn-success').addClass('btn-primary');
  3219. ferveX('#config_darkmode').prop('checked', true);
  3220. });
  3221. ferveX(document).on('click', '.config-darkmode-off', function(e) {
  3222. setValue('re_darkmode', 'off', 365);
  3223. ferveX('.config-darkmode-off').removeClass('btn-primary').addClass('btn-success');
  3224. ferveX('.config-darkmode-on').removeClass('btn-success').addClass('btn-primary');
  3225. ferveX('#config_darkmode').prop('checked', false);
  3226. });
  3227. ferveX(document).on('click', '.config-scroll-on', function(e) {
  3228. setValue('re_scroll', 'on', 365);
  3229. ferveX('.config-scroll-on').removeClass('btn-primary').addClass('btn-success');
  3230. ferveX('.config-scroll-off').removeClass('btn-success').addClass('btn-primary');
  3231. ferveX('#config_scroll').prop('checked', true);
  3232. });
  3233. ferveX(document).on('click', '.config-scroll-off', function(e) {
  3234. setValue('re_scroll', 'off', 365);
  3235. ferveX('.config-scroll-off').removeClass('btn-primary').addClass('btn-success');
  3236. ferveX('.config-scroll-on').removeClass('btn-success').addClass('btn-primary');
  3237. ferveX('#config_scroll').prop('checked', false);
  3238. });
  3239. ferveX(document).on('click', '.config-sidebar-on', function(e) {
  3240. setValue('fervex_sidebar', 'on', 365);
  3241. ferveX('#cat').addClass('active');
  3242. ferveX('.config-sidebar-on').removeClass('btn-primary').addClass('btn-success');
  3243. ferveX('.config-sidebar-off').removeClass('btn-success').addClass('btn-primary');
  3244. ferveX('#config_sidebar').prop('checked', true);
  3245. });
  3246. ferveX(document).on('click', '.config-sidebar-off', function(e) {
  3247. setValue('fervex_sidebar', 'off', 365);
  3248. ferveX('#cat').removeClass('active');
  3249. ferveX('.config-sidebar-off').removeClass('btn-primary').addClass('btn-success');
  3250. ferveX('.config-sidebar-on').removeClass('btn-success').addClass('btn-primary');
  3251. ferveX('#config_sidebar').prop('checked', false);
  3252. });
  3253. ferveX(document).on('change', '#config_sidebar', function() {
  3254. if (ferveX(this).is(':checked')) {
  3255. setValue('fervex_sidebar', 'on', 365);
  3256. ferveX('#cat').addClass('active');
  3257. ferveX('.config-sidebar-on').removeClass('btn-primary').addClass('btn-success');
  3258. ferveX('.config-sidebar-off').removeClass('btn-success').addClass('btn-primary');
  3259. } else {
  3260. setValue('fervex_sidebar', 'off', 365);
  3261. ferveX('#cat').removeClass('active');
  3262. ferveX('.config-sidebar-off').removeClass('btn-primary').addClass('btn-success');
  3263. ferveX('.config-sidebar-on').removeClass('btn-success').addClass('btn-primary');
  3264. }
  3265. });
  3266. ferveX(document).on('change', '#config_darkmode', function() {
  3267. if (ferveX(this).is(':checked')) {
  3268. setValue('re_darkmode', 'on', 365);
  3269. ferveX('.config-darkmode-on').removeClass('btn-primary').addClass('btn-success');
  3270. ferveX('.config-darmode-off').removeClass('btn-success').addClass('btn-primary');
  3271. } else {
  3272. setValue('re_darkmode', 'off', 365);
  3273. ferveX('.config-darkmode-off').removeClass('btn-primary').addClass('btn-success');
  3274. ferveX('.config-darkmode-on').removeClass('btn-success').addClass('btn-primary');
  3275. }
  3276. });
  3277. ferveX(document).on('change', '#config_scroll', function() {
  3278. if (ferveX(this).is(':checked')) {
  3279. setValue('re_scroll', 'on', 365);
  3280. ferveX('.config-scroll-on').removeClass('btn-primary').addClass('btn-success');
  3281. ferveX('.config-scroll-off').removeClass('btn-success').addClass('btn-primary');
  3282. } else {
  3283. setValue('re_scroll', 'off', 365);
  3284. ferveX('.config-scroll-off').removeClass('btn-primary').addClass('btn-success');
  3285. ferveX('.config-scroll-on').removeClass('btn-success').addClass('btn-primary');
  3286. }
  3287. });
  3288. ferveX(document).on('click', '.config-notifs-on', function(e) {
  3289. setValue('fervex_notifs', 'on', 365);
  3290. ferveX('#top_panel a[href="' + BASE_URL + '/user/notifications"]').parent().show();
  3291. ferveX('.config-notifs-on').removeClass('btn-primary').addClass('btn-success');
  3292. ferveX('.config-notifs-off').removeClass('btn-success').addClass('btn-primary');
  3293. ferveX('#config_notifs').prop('checked', true);
  3294. });
  3295. ferveX(document).on('click', '.config-notifs-off', function(e) {
  3296. setValue('fervex_notifs', 'off', 365);
  3297. ferveX('#top_panel a[href="' + BASE_URL + '/user/notifications"]').parent().hide();
  3298. ferveX('.config-notifs-off').removeClass('btn-primary').addClass('btn-success');
  3299. ferveX('.config-notifs-on').removeClass('btn-success').addClass('btn-primary');
  3300. ferveX('#config_notifs').prop('checked', false);
  3301. });
  3302. ferveX(document).on('change', '#config_notifs', function() {
  3303. if (ferveX(this).is(':checked')) {
  3304. setValue('fervex_notifs', 'on', 365);
  3305. ferveX('#top_panel a[href="' + BASE_URL + '/user/notifications"]').parent().show();
  3306. ferveX('.config-notifs-on').removeClass('btn-primary').addClass('btn-success');
  3307. ferveX('.config-notifs-off').removeClass('btn-success').addClass('btn-primary');
  3308. } else {
  3309. setValue('fervex_notifs', 'off', 365);
  3310. ferveX('#top_panel a[href="' + BASE_URL + '/user/notifications"]').parent().hide();
  3311. ferveX('.config-notifs-off').removeClass('btn-primary').addClass('btn-success');
  3312. ferveX('.config-notifs-on').removeClass('btn-success').addClass('btn-primary');
  3313. }
  3314. });
  3315. ferveX(document).on('click', '.config-notifs-total-on', function(e) {
  3316. setValue('fervex_notifs_total', 'on', 365);
  3317. ferveX('.bulle+.bulle').show();
  3318. ferveX('.config-notifs-total-on').removeClass('btn-primary').addClass('btn-success');
  3319. ferveX('.config-notifs-total-off').removeClass('btn-success').addClass('btn-primary');
  3320. ferveX('#config_notifs_total').prop('checked', true);
  3321. });
  3322. ferveX(document).on('click', '.config-notifs-total-off', function(e) {
  3323. setValue('fervex_notifs_total', 'off', 365);
  3324. ferveX('.bulle+.bulle').hide();
  3325. ferveX('.config-notifs-total-off').removeClass('btn-primary').addClass('btn-success');
  3326. ferveX('.config-notifs-total-on').removeClass('btn-success').addClass('btn-primary');
  3327. ferveX('#config_notifs_total').prop('checked', false);
  3328. });
  3329. ferveX(document).on('change', '#config_notifs_total', function() {
  3330. if (ferveX(this).is(':checked')) {
  3331. setValue('fervex_notifs_total', 'on', 365);
  3332. ferveX('.bulle+.bulle').show();
  3333. ferveX('.config-notifs-total-on').removeClass('btn-primary').addClass('btn-success');
  3334. ferveX('.config-notifs-total-off').removeClass('btn-success').addClass('btn-primary');
  3335. } else {
  3336. setValue('fervex_notifs_total', 'off', 365);
  3337. ferveX('.bulle+.bulle').hide();
  3338. ferveX('.config-notifs-total-off').removeClass('btn-primary').addClass('btn-success');
  3339. ferveX('.config-notifs-total-on').removeClass('btn-success').addClass('btn-primary');
  3340. }
  3341. });
  3342. ferveX(document).on('click', '.config-preview-on', function(e) {
  3343. setValue('fervex_preview', 'on', 365);
  3344. addPreview();
  3345. ferveX('.config-preview-on').removeClass('btn-primary').addClass('btn-success');
  3346. ferveX('.config-preview-off').removeClass('btn-success').addClass('btn-primary');
  3347. ferveX('#config_preview').prop('checked', true);
  3348. });
  3349. ferveX(document).on('click', '.config-preview-off', function(e) {
  3350. setValue('fervex_preview', 'off', 365);
  3351. removePreview();
  3352. ferveX("a[id^='torrent_name'], a[href^='" + BASE_URL + "/torrent/']").unbind('mouseenter mouseleave');
  3353. ferveX('.config-preview-off').removeClass('btn-primary').addClass('btn-success');
  3354. ferveX('.config-preview-on').removeClass('btn-success').addClass('btn-primary');
  3355. ferveX('#config_preview').prop('checked', false);
  3356. });
  3357. ferveX(document).on('change', '#config_preview', function() {
  3358. if (ferveX(this).is(':checked')) {
  3359. setValue('fervex_preview', 'on', 365);
  3360. setTimeout(function() {
  3361. addPreview();
  3362. }, 600);
  3363. ferveX('.config-preview-on').removeClass('btn-primary').addClass('btn-success');
  3364. ferveX('.config-preview-off').removeClass('btn-success').addClass('btn-primary');
  3365. } else {
  3366. setValue('fervex_preview', 'off', 365);
  3367. removePreview();
  3368. ferveX('.config-preview-off').removeClass('btn-primary').addClass('btn-success');
  3369. ferveX('.config-preview-on').removeClass('btn-success').addClass('btn-primary');
  3370. }
  3371. });
  3372. ferveX(document).on('click', '.config-preview2-on', function(e) {
  3373. setValue('fervex_preview2', 'on', 365);
  3374. getPreview();
  3375. ferveX('.config-preview2-on').removeClass('btn-primary').addClass('btn-success');
  3376. ferveX('.config-preview2-off').removeClass('btn-success').addClass('btn-primary');
  3377. ferveX('#config_preview2').prop('checked', true);
  3378. });
  3379. ferveX(document).on('click', '.config-preview2-off', function(e) {
  3380. setValue('fervex_preview2', 'off', 365);
  3381. ferveX('.config-preview2-off').removeClass('btn-primary').addClass('btn-success');
  3382. ferveX('.config-preview2-on').removeClass('btn-success').addClass('btn-primary');
  3383. ferveX('#config_preview2').prop('checked', false);
  3384. });
  3385. ferveX(document).on('change', '#config_preview2', function() {
  3386. if (ferveX(this).is(':checked')) {
  3387. setValue('fervex_preview2', 'on', 365);
  3388. getPreview();
  3389. ferveX('.config-preview2-on').removeClass('btn-primary').addClass('btn-success');
  3390. ferveX('.config-preview2-off').removeClass('btn-success').addClass('btn-primary');
  3391. } else {
  3392. setValue('fervex_preview2', 'off', 365);
  3393. ferveX('.config-preview2-off').removeClass('btn-primary').addClass('btn-success');
  3394. ferveX('.config-preview2-on').removeClass('btn-success').addClass('btn-primary');
  3395. }
  3396. });
  3397. ferveX(document).on('input', '.tempo_preview', function() {
  3398. removePreview();
  3399. var newDelai = ferveX('.tempo_preview').val();
  3400. ferveX('.tempo_preview').val(ferveX('.tempo_preview').val());
  3401. ferveX('.tempo_preview_value').html(newDelai);
  3402. setValue('fervex_preview_delai', newDelai, 365);
  3403. addPreview();
  3404. });
  3405. ferveX(document).on('input', '.height_preview', function() {
  3406. removePreview();
  3407. var newHeight = ferveX('.height_preview').val();
  3408. ferveX('.height_preview').val(ferveX('.height_preview').val());
  3409. ferveX('.height_preview_value').html(newHeight);
  3410. setValue('fervex_preview_height', newHeight, 365);
  3411. addPreview();
  3412. });
  3413. var reDarkmode = getValue('re_darkmode');
  3414. if (reDarkmode == "on") {
  3415. TheDarkSide();
  3416. ferveX('.config-darkmode-on').toggleClass('btn-primary btn-success');
  3417. ferveX('#config_darkmode').prop('checked', true);
  3418. } else {
  3419. ferveX('.config-darkmode-off').toggleClass('btn-primary btn-success');
  3420. ferveX('#config_darkmode').prop('checked', false);
  3421. }
  3422. var reScroll = getValue('re_scroll');
  3423. if (reScroll == "on") {
  3424. ferveX('.config-scroll-on').toggleClass('btn-primary btn-success');
  3425. ferveX('#config_scroll').prop('checked', true);
  3426. } else {
  3427. ferveX('.config-scroll-off').toggleClass('btn-primary btn-success');
  3428. ferveX('#config_scroll').prop('checked', false);
  3429. }
  3430. var fervexSearch = getValue('fervex_recherche');
  3431. if (fervexSearch == "bulle") {
  3432. ferveX('.fervexTools').toggleClass('fervexTools1 fervexTools2');
  3433. ferveX('.config-recherche-popup').toggleClass('btn-primary btn-success');
  3434. } else {
  3435. ferveX('.config-recherche-bas').toggleClass('btn-primary btn-success');
  3436. }
  3437. var fervexSearchDate = getValue('fervex_recherche_date');
  3438. if (fervexSearchDate == null || fervexSearchDate == "desc") {
  3439. ferveX('<input>').attr({
  3440. name: 'order',
  3441. type: 'hidden',
  3442. value: 'desc'
  3443. }).appendTo("form[action='" + BASE_URL + "/engine/search']");
  3444. ferveX('<input>').attr({
  3445. name: 'sort',
  3446. type: 'hidden',
  3447. value: 'publish_date'
  3448. }).appendTo("form[action='" + BASE_URL + "/engine/search']");
  3449. ferveX('.config-recherche-date-desc').toggleClass('btn-primary btn-success');
  3450. } else if (fervexSearchDate == "asc") {
  3451. ferveX('<input>').attr({
  3452. name: 'order',
  3453. type: 'hidden',
  3454. value: 'asc'
  3455. }).appendTo("form[action='" + BASE_URL + "/engine/search']");
  3456. ferveX('<input>').attr({
  3457. name: 'sort',
  3458. type: 'hidden',
  3459. value: 'publish_date'
  3460. }).appendTo("form[action='" + BASE_URL + "/engine/search']");
  3461. ferveX('.config-recherche-date-asc').toggleClass('btn-primary btn-success');
  3462. }
  3463. /* sidebar */
  3464. var fervexSidebar = getValue('fervex_sidebar');
  3465. if (fervexSidebar == "on") {
  3466. ferveX('.config-sidebar-on').toggleClass('btn-primary btn-success');
  3467. ferveX('#config_sidebar').prop('checked', true);
  3468. } else {
  3469. ferveX('.config-sidebar-off').toggleClass('btn-primary btn-success');
  3470. ferveX('#config_sidebar').prop('checked', false);
  3471. }
  3472. /* notifs reçues */
  3473. var fervexNotifsNb = ferveX('.bulle:first-child').text();
  3474. if (fervexNotifsNb == 0) {
  3475. ferveX('.bulle:first-child').hide();
  3476. var fervexNotifs = getValue('fervex_notifs');
  3477. if (fervexNotifs == "off") {
  3478. ferveX('#top_panel a[href="' + BASE_URL + '/user/notifications"]').parent().hide();
  3479. ferveX('.config-notifs-off').toggleClass('btn-primary btn-success');
  3480. ferveX('#config_notifs').prop('checked', false);
  3481. } else {
  3482. ferveX('.config-notifs-on').toggleClass('btn-primary btn-success');
  3483. ferveX('#config_notifs').prop('checked', true);
  3484. }
  3485. }
  3486. /* notifs total */
  3487. var fervexNotifsTotal = getValue('fervex_notifs_total');
  3488. if (fervexNotifsTotal == "off") {
  3489. ferveX('.bulle+.bulle').hide();
  3490. ferveX('.config-notifs-total-off').toggleClass('btn-primary btn-success');
  3491. ferveX('#config_notifs_total').prop('checked', false);
  3492. } else {
  3493. ferveX('.config-notifs-total-on').toggleClass('btn-primary btn-success');
  3494. ferveX('#config_notifs_total').prop('checked', true);
  3495. }
  3496. /* preview des images torrents au survol */
  3497. var fervexPreview = getValue('fervex_preview');
  3498. if (fervexPreview == null || fervexPreview == "on") {
  3499. setTimeout(function() {
  3500. addPreview();
  3501. }, 600);
  3502. ferveX('.config-preview-on').toggleClass('btn-primary btn-success');
  3503. ferveX('#config_preview').prop('checked', true);
  3504. } else {
  3505. ferveX('.config-preview-off').toggleClass('btn-primary btn-success');
  3506. ferveX('#config_preview').prop('checked', false);
  3507. }
  3508. /* preview des images torrents dans la table (experimental) */
  3509. var fervexPreview2 = getValue('fervex_preview2');
  3510. if (fervexPreview2 == "on") {
  3511. setTimeout(function() {
  3512. getPreview();
  3513. }, 600);
  3514. ferveX('.config-preview2-on').toggleClass('btn-primary btn-success');
  3515. ferveX('#config_preview2').prop('checked', true);
  3516. } else {
  3517. ferveX('.config-preview2-off').toggleClass('btn-primary btn-success');
  3518. ferveX('#config_preview2').prop('checked', false);
  3519. }
  3520. ferveX('#config_preview2').on('change', function() {
  3521. if (ferveX(this).is(':checked')) {
  3522. getPreview();
  3523. ferveX('.config-preview-on').toggleClass('btn-primary btn-success');
  3524. setValue('fervex_preview2', 'on', 365);
  3525. } else {
  3526. removePreview();
  3527. ferveX('.config-preview-off').toggleClass('btn-primary btn-success');
  3528. setValue('fervex_preview2', 'off', 365);
  3529. }
  3530. });
  3531. /* fallback des previews pour les torrents ajoutés dynamiquement */
  3532. ferveX('td[id^=display-more]').click(function(e) {
  3533. var fervexPreview = getValue('fervex_preview');
  3534. if (fervexPreview == null || fervexPreview == "on") {
  3535. setTimeout(function() {
  3536. removePreview();
  3537. addPreview();
  3538. }, 800);
  3539. }
  3540. var fervexPreview2 = getValue('fervex_preview2');
  3541. if (fervexPreview2 == "on") {
  3542. setTimeout(function() {
  3543. getPreview();
  3544. }, 800);
  3545. }
  3546. });
  3547.  
  3548. function addPreview() {
  3549. // Décalage horizontal et vertical
  3550. var xOffset = 20;
  3551. var yOffset = 15;
  3552. // Hauteur fixe de l'image
  3553. var imageHeight;
  3554. var fervexImageHeight = getValue('fervex_preview_height');
  3555. if (fervexImageHeight == null) {
  3556. imageHeight = 300;
  3557. } else {
  3558. imageHeight = fervexImageHeight;
  3559. }
  3560. // compteur
  3561. var compteur;
  3562. var delai;
  3563. ferveX("a[id^='torrent_name'], a[href^='" + BASE_URL + "/torrent/']").on("mouseenter", function(e) {
  3564. ferveX("#preview").remove();
  3565. var href = ferveX(this).attr('href');
  3566. delai = (getValue('fervex_preview_delai') !== null) ? getValue('fervex_preview_delai') : 400;
  3567. compteur = setTimeout(function() {
  3568. ferveX.get(href, function(data, status) {
  3569. var targetSection = ferveX(data).find('#send-comment').prev('.content');
  3570. if (targetSection.length === 0) {
  3571. targetSection = ferveX(data).find('.content').eq(1);
  3572. }
  3573. var imgSrc = targetSection.find('img:first').attr('src');
  3574. // Créer une nouvelle instance d'image
  3575. var image = new Image();
  3576. // Attacher un gestionnaire d'événement pour détecter quand l'image est chargée
  3577. image.onload = function() {
  3578. var imageRatio = image.height / image.width;
  3579. if (imageRatio < 0.38) {
  3580. image = targetSection.find('img:eq(1)')[0];
  3581. imgSrc = image.src;
  3582. }
  3583. if (typeof imgSrc !== 'undefined' && imgSrc.match("^http")) {
  3584. var previewHtml = "<div id='preview' style='position:absolute;z-index:9999;border:1px solid #000;box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.7);display:none'><img src='" + imgSrc + "' alt='Image preview' style='max-height:" + imageHeight + "px'></div>";
  3585. ferveX("body").append(previewHtml);
  3586. var mouseY = e.pageY - ferveX(window).scrollTop(); // Coordonnée Y du curseur par rapport à la fenêtre visible
  3587. var totalHeight = mouseY + yOffset + imageHeight;
  3588. var windowHeight = ferveX(window).height();
  3589. var availableSpace = windowHeight - mouseY - yOffset;
  3590. if (totalHeight > windowHeight && availableSpace < imageHeight) {
  3591. // Le curseur est en bas de l'écran et l'espace disponible en haut est insuffisant pour l'image
  3592. ferveX("#preview")
  3593. .css("top", (e.pageY - yOffset - imageHeight) + "px")
  3594. .css("bottom", "auto")
  3595. .css("left", (e.pageX + xOffset) + "px");
  3596. } else {
  3597. // Le curseur est en haut de l'écran ou l'espace disponible en haut est suffisant pour l'image
  3598. ferveX("#preview")
  3599. .css("top", (e.pageY + yOffset + 8) + "px")
  3600. .css("bottom", "auto")
  3601. .css("left", (e.pageX + xOffset + 6) + "px");
  3602. }
  3603. ferveX("#preview").fadeIn("fast");
  3604. }
  3605. };
  3606. // Charger l'image
  3607. image.src = imgSrc;
  3608. }, 'html');
  3609. }, delai);
  3610. }).on("mouseleave", function(e) {
  3611. clearTimeout(compteur);
  3612. ferveX("#preview").remove();
  3613. });
  3614. ferveX("a[id^='torrent_name'], a[href^='" + BASE_URL + "/torrent/']").on("mousemove", function(e) {
  3615. var mouseY = e.pageY - ferveX(window).scrollTop(); // Coordonnée Y du curseur par rapport à la fenêtre visible
  3616. var totalHeight = mouseY + yOffset + imageHeight;
  3617. var windowHeight = ferveX(window).height();
  3618. var availableSpace = windowHeight - mouseY - yOffset;
  3619. if (totalHeight > windowHeight && availableSpace < imageHeight) {
  3620. // Le curseur est en bas de l'écran et l'espace disponible en haut est insuffisant pour l'image
  3621. ferveX("#preview")
  3622. .css("top", (e.pageY - yOffset - imageHeight) + "px")
  3623. .css("bottom", "auto")
  3624. .css("left", (e.pageX + xOffset) + "px");
  3625. } else {
  3626. // Le curseur est en haut de l'écran ou l'espace disponible en haut est suffisant pour l'image
  3627. ferveX("#preview")
  3628. .css("top", (e.pageY + yOffset + 8) + "px")
  3629. .css("bottom", "auto")
  3630. .css("left", (e.pageX + xOffset + 6) + "px");
  3631. }
  3632. });
  3633. ferveX("a[id^='torrent_name'], a[href^='" + BASE_URL + "/torrent/']").on("mouseout", function(e) {
  3634. ferveX("#preview").remove();
  3635. });
  3636. }
  3637. /* retrait de l'image de preview en cliquant dessus */
  3638. ferveX(document).on("click", "#preview", function(e) {
  3639. ferveX("#preview").remove();
  3640. });
  3641. /* retrait de l'image de preview en appuyant sur échap */
  3642. ferveX(document).keyup(function(e) {
  3643. if (e.key === "Escape") {
  3644. ferveX("#preview").remove();
  3645. }
  3646. });
  3647.  
  3648. function removePreview() {
  3649. ferveX("a[id^='torrent_name'], a[href^='" + BASE_URL + "/torrent/']").off("mouseenter").off("mouseleave");
  3650. }
  3651.  
  3652. function getPreview() {
  3653. if (url.indexOf("/forum/") == -1) {
  3654. ferveX("a[id^='torrent_name'], a[href^='" + BASE_URL + "/torrent/']").not('.image-preview').each(function() {
  3655. var that = ferveX(this);
  3656. var href = that.attr('href');
  3657. ferveX.get(href, function(data, status) {
  3658. var targetSection = ferveX(data).find('#send-comment').prev('.content');
  3659. if (targetSection.length === 0) {
  3660. targetSection = ferveX(data).find('.content').eq(1);
  3661. }
  3662. var imgSrc = targetSection.find('img:first').attr('src');
  3663. // Créer une nouvelle instance d'image
  3664. var image = new Image();
  3665. // Attacher un gestionnaire d'événement pour détecter quand l'image est chargée
  3666. image.onload = function() {
  3667. var imageRatio = image.height / image.width;
  3668. if (imageRatio < 0.38) {
  3669. image = targetSection.find('img:eq(1)')[0];
  3670. imgSrc = image.src;
  3671. }
  3672. if (typeof imgSrc !== 'undefined' && imgSrc.match("^http")) {
  3673. that.parent('td').prev().append('<img src="' + imgSrc + '" style="max-width:80px;height:auto;" class="image-preview">');
  3674. }
  3675. };
  3676. // Charger l'image
  3677. image.src = imgSrc;
  3678. });
  3679. });
  3680. }
  3681. }
  3682. /* Recherche dynamique site+fofo */
  3683. ferveX(document).bind("mouseup", function() {
  3684. var texteSelection = x.Selector.getSelected();
  3685. if ((texteSelection != '') && (fervexTemp != '1')) {
  3686. if (fervexSearch == 'bulle') {
  3687. ferveX('.fervexTools').css({
  3688. 'left': pageX + 5,
  3689. 'top': pageY - 50
  3690. }).fadeIn(200);
  3691. ferveX(".fervexTools a").html("<i class=\'" + iconeRecherche + "\'></i>");
  3692. } else {
  3693. ferveX('.fervexTools').css({
  3694. 'right': 10,
  3695. 'bottom': 6
  3696. }).fadeIn(200);
  3697. ferveX(".fervexTools a").html("<i class=\'" + iconeRecherche + "\'></i> Rechercher sur YGG");
  3698. }
  3699. ferveX(".fervexTools a").attr("href", BASE_URL + "/engine/search?name=" + texteSelection + "&do=search");
  3700. ferveX(".fervexTools a").attr("title", "Rechercher : " + texteSelection);
  3701. fervexTemp = '1';
  3702. } else {
  3703. ferveX('.fervexTools').fadeOut(200);
  3704. fervexTemp = '0';
  3705. }
  3706. /* actualisation position du curseur */
  3707. ferveX(document).on("mousedown", function(e) {
  3708. pageX = e.pageX;
  3709. pageY = e.pageY;
  3710. });
  3711. });
  3712. /* fervextip */
  3713. ferveX(document).on('mouseenter', '[rel=fervextip]', function(e) {
  3714. if (ferveX(this).attr('title') == "") {
  3715. ferveX(this).attr('title', ferveX('.tipBody').html());
  3716. ferveX(this).children('#fervextip').remove();
  3717. }
  3718. var tip = ferveX(this).attr('title');
  3719. ferveX(this).attr('title', '');
  3720. ferveX(this).append('<div id="fervextip"><div class="tipBody">' + tip + '</div></div>');
  3721. ferveX('#fervextip').css('top', e.clientY + 10);
  3722. ferveX('#fervextip').css('left', e.clientX + 20);
  3723. ferveX('#fervextip').fadeIn('500');
  3724. }).on("mousemove", '[rel=fervextip]', function(e) {
  3725. ferveX('#fervextip').css('top', e.clientY + 10);
  3726. ferveX('#fervextip').css('left', e.clientX + 20);
  3727. }).on("mouseleave", '[rel=fervextip]', function(e) {
  3728. ferveX(this).attr('title', ferveX('.tipBody').html());
  3729. ferveX(this).children('#fervextip').remove();
  3730. });
  3731. var rechercheF = '';
  3732. var rechercheU = '';
  3733. var baseUrl = '';
  3734. if (url.indexOf("/forum/") > -1) {
  3735. ferveX(document).ready(function() {
  3736. if (document.location.search === '') {
  3737. addMention();
  3738. }
  3739. ferveX('.p-nav .focus-wrap-nav ul.p-nav-list li').last().after('<li><div class="p-navEl"><a href="/user/account" class="p-navEl-link" data-nav-id="moncompte">Mon compte</a></div></li>');
  3740. ferveX('.p-nav .focus-wrap-nav ul.p-nav-list li').last().after('<li><div class="p-navEl"><a href="/user/messages" class="p-navEl-link" data-nav-id="messagerie">Messagerie</a></div></li>');
  3741. ferveX('.p-nav .focus-wrap-nav ul.p-nav-list li').last().after('<li><div class="p-navEl"><a href="/user/upload_torrent" class="p-navEl-link" data-nav-id="uploadtorrent">Upload torrent</a></div></li>');
  3742. ferveX('.p-nav .focus-wrap-nav ul.p-nav-list li').last().after('<li><div class="p-navEl"><a href="/engine/search_users?nickname=" class="p-navEl-link" data-nav-id="chercheCopain" id="chercheCopain" title="Recherche un utilisateur sur YGG"></a></div></li>');
  3743. ferveX('.p-nav .focus-wrap-nav ul.p-nav-list li').last().after('<li><div class="p-navEl"><a href="" class="p-navEl-link" data-nav-id="voirfavoris" id="voirfavoris" title="Afficher ses favoris enregistrés"></a></div></li>');
  3744. ferveX("body").prepend('<div class="fervexTime d-flex align-items-center justify-content-center"><span class="badge">FR : <span id="hfr"></span> ↔ QC : <span id="hqc"></span></span></div>');
  3745. ferveX('.block-outer-opposite').first().before('<div class="block-outer-main"><a href="" class="button--link button ajout-favoris" title="Ajouter aux Favoris"><i class="fa fa-bookmark"></i> En Favoris</a></div>')
  3746. /* Favoris */
  3747. ferveX(".ajout-favoris").click(function(e) {
  3748. e.preventDefault();
  3749. const that = ferveX(this);
  3750. const currentDate = new Date();
  3751. const temps = currentDate.getTime()
  3752. const favTitre = ferveX("h1.p-title-value").text();
  3753. const favUrl = ferveX(location).attr('href');
  3754. localStorage.setItem('FAV_' + temps + '_titre', favTitre);
  3755. localStorage.setItem('FAV_' + temps + '_lien', favUrl);
  3756. that.text('Ajouté !');
  3757. setTimeout(function() {
  3758. that.remove();
  3759. }, 800);
  3760. });
  3761. ferveX('#voirfavoris').click(function(e) {
  3762. e.preventDefault();
  3763. if (!ferveX(".fervexpop-styles").length) {
  3764. const modalStyles = `
  3765. <style class="fervexpop-styles">
  3766. .fervexpop-overlay {
  3767. display: none;
  3768. position: fixed;
  3769. z-index: 1000;
  3770. left: 0;
  3771. top: 0;
  3772. width: 100%;
  3773. height: 100%;
  3774. background-color: rgba(0, 0, 0, 0.5);
  3775. }
  3776. .fervexpop {
  3777. position: fixed;
  3778. top: -100%;
  3779. left: 50%;
  3780. transform: translate(-50%, 0);
  3781. color: #aaa;
  3782. background-color: #22282f;
  3783. width: 100%;
  3784. max-width: 680px;
  3785. box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.6);
  3786. }
  3787. .fervexpop a {
  3788. color: #aaa;
  3789. }
  3790. .fervexpop-content {
  3791. padding: 20px;
  3792. }
  3793. .fervexpop-content .fa{
  3794. color: #e74c3c;
  3795. }
  3796. .fervexpop-close {
  3797. float: right;
  3798. font-size: 28px;
  3799. font-weight: bold;
  3800. cursor: pointer;
  3801. }
  3802. .fervexpop-close:hover {
  3803. color: #FFF;
  3804. }
  3805. </style>
  3806. `;
  3807. ferveX("head").append(modalStyles);
  3808. }
  3809. const favListe = [];
  3810. for (const key in localStorage) {
  3811. if (key.startsWith('FAV_') && key.endsWith('_titre')) {
  3812. const titre = localStorage[key];
  3813. const lienKey = key.replace('_titre', '_lien');
  3814. const lien = localStorage[lienKey];
  3815. if (lien) {
  3816. favListe.push(`
  3817. <li>
  3818. <a href="${lien}">${titre}</a>
  3819. &nbsp; <a href="#" class="del-favoris" data-titre-key="${key}" data-lien-key="${lienKey}"><i class="fa fa-trash"></i></a>
  3820. </li>
  3821. `);
  3822. }
  3823. }
  3824. }
  3825. const modalContent = `
  3826. <div class="fervexpop-overlay">
  3827. <div class="fervexpop">
  3828. <div class="fervexpop-content">
  3829. <span class="fervexpop-close">&times;</span>
  3830. <h2>Mes Favoris</h2>
  3831. <ul>${favListe.join("")}</ul>
  3832. </div>
  3833. </div>
  3834. </div>
  3835. `;
  3836. ferveX("body").append(modalContent);
  3837. ferveX(".fervexpop-overlay").fadeIn(300, function() {
  3838. ferveX(".fervexpop").animate({
  3839. top: "20%"
  3840. }, 300);
  3841. });
  3842. if (favListe.length === 0) {
  3843. ferveX(".fervexpop ul").html("Pas de favoris");
  3844. }
  3845. ferveX(".del-favoris").click(function(event) {
  3846. event.preventDefault();
  3847. localStorage.removeItem(ferveX(this).data("titre-key"));
  3848. localStorage.removeItem(ferveX(this).data("lien-key"));
  3849. ferveX(this).parent().remove();
  3850. if (ferveX(".fervexpop ul").children().length === 0) {
  3851. ferveX(".fervexpop ul").html("Plus de favoris");
  3852. }
  3853. });
  3854. ferveX(".fervexpop-close").click(function() {
  3855. ferveX(".fervexpop-overlay").fadeOut(300, function() {
  3856. ferveX(this).remove();
  3857. });
  3858. });
  3859. });
  3860. /* Horloge */
  3861. horloge("#hfr", "Europe/Paris");
  3862. horloge("#hqc", "America/Montreal");
  3863.  
  3864. function horloge(elementSelector, timeZone = "UTC", locale = "fr-FR") {
  3865. const actualiser = () => {
  3866. const dateElement = document.querySelector(elementSelector);
  3867. const currentDate = new Date();
  3868. dateElement.innerText = currentDate.toLocaleTimeString(locale, {
  3869. timeZone
  3870. });
  3871. };
  3872. actualiser();
  3873. setInterval(actualiser, 1000);
  3874. }
  3875. /* Recherche copain */
  3876. ferveX('#chercheCopain').click(function(e) {
  3877. e.preventDefault();
  3878. var s = prompt('Recherche un utilisateur sur YGG :', '');
  3879. //if (!(!s || s=='')) {window.location = '/engine/search_users?nickname='+s+'&do=search'};
  3880. //if (!(!s || s=='')) {window.open(window.location.protocol+'//'+window.location.host+'/engine/search_users?nickname='+s+'&do=search')};
  3881. if (!(!s || s == '')) {
  3882. ferveX('<a href="' + window.location.protocol + '//' + window.location.host + '/engine/search_users?nickname=' + s + '&do=search" target="blank"></a>')[0].click();
  3883. };
  3884. });
  3885. // Mes demandes d'upload
  3886. var demandesUpload = ferveX('<button>', {
  3887. id: 'demandesUpload',
  3888. class: 'button button--icon button--icon--search',
  3889. text: ""
  3890. });
  3891. var demandesUploadContent = "<span class='button-text'>Demandes d'upload où j'ai réagi</span>";
  3892. var username = ferveX('.avatar').next('.p-navgroup-linkText').first().text();
  3893. demandesUpload.on('click', function() {
  3894. ferveX.get("/forum/index.php?search/&type=post", function(pageSource) {
  3895. var xfTokenElement = ferveX('input[name="_xfToken"]', pageSource);
  3896. if (xfTokenElement.length > 0) {
  3897. var xfTokenValue = xfTokenElement.val();
  3898. var form = ferveX('<form>', {
  3899. action: "/forum/index.php?search/search",
  3900. method: "POST"
  3901. });
  3902. form.append('<input type="hidden" name="c[users]" value="' + username + '">');
  3903. form.append('<input type="hidden" name="c[nodes][]" value="123">');
  3904. form.append('<input type="hidden" name="c[child_nodes]" value="1">');
  3905. form.append('<input type="hidden" name="search_type" value="post">');
  3906. form.append('<input type="hidden" name="grouped" value="1">');
  3907. form.append('<input type="hidden" name="_xfToken" value="' + xfTokenValue + '">');
  3908. ferveX('body').append(form);
  3909. form.submit();
  3910. }
  3911. });
  3912. });
  3913. ferveX('.p-title-pageAction').append(demandesUpload);
  3914. ferveX('#demandesUpload').append(demandesUploadContent);
  3915. // ajout d'un filtre pour nos créations de post uniquement
  3916. if (url.indexOf("/index.php?search/") > -1) {
  3917. var demandesUploadUser = ferveX('<button>', {
  3918. id: 'demandesUploadUser',
  3919. class: 'button button--icon button--icon--search',
  3920. text: ""
  3921. });
  3922. }
  3923. var demandesUploadUserContent = "<span class='button-text'>Filtrer uniquement mes demandes</span>";
  3924. ferveX('.p-body-header .p-title').append(demandesUploadUser);
  3925. ferveX('#demandesUploadUser').append(demandesUploadUserContent);
  3926.  
  3927. function getLastPageNumberdemandesUpload() {
  3928. var lastPageLink = ferveX('.pageNav-main li.pageNav-page:last-child a');
  3929. return lastPageLink.length ? parseInt(lastPageLink.text()) : 1;
  3930. }
  3931.  
  3932. function getElementsFromPagedemandesUpload(pageNumber) {
  3933. var url = window.location.href + '&page=' + pageNumber;
  3934. var response = ferveX.ajax({
  3935. url: url,
  3936. type: 'GET',
  3937. async: false,
  3938. }).responseText;
  3939. var doc = ferveX.parseHTML(response);
  3940. return ferveX(doc).find('.block-row[data-author="' + username + '"]');
  3941. }
  3942. ferveX('#demandesUploadUser').on("click", function(e) {
  3943. var lastPage = getLastPageNumberdemandesUpload();
  3944. var allElements = [];
  3945. for (var i = 1; i <= lastPage; i++) {
  3946. var elementsFromPage = getElementsFromPagedemandesUpload(i);
  3947. allElements = allElements.concat(Array.from(elementsFromPage));
  3948. }
  3949. var filteredElements = allElements.filter(function(element) {
  3950. return element.getAttribute('data-author') === username;
  3951. });
  3952. var resultList = ferveX('.block-body');
  3953. resultList.empty();
  3954. ferveX.each(filteredElements, function(_, element) {
  3955. resultList.append(element);
  3956. });
  3957. var pagination = ferveX('.pageNavWrapper');
  3958. if (pagination.length) {
  3959. pagination.remove();
  3960. }
  3961. });
  3962. /* affichage du nb messages qu'on a écrits par post */
  3963. if (ferveX('body').data('template') === "whats_new_posts" || ferveX('body').data('template') === "forum_view") {
  3964. ferveX('.structItem').each(function() {
  3965. var title = ferveX(this).find('.structItem-title');
  3966. var liste = ferveX(this).find('.structItem-statuses');
  3967. if (!liste.length) {
  3968. title.before("<ul class='structItem-statuses'></ul>")
  3969. }
  3970. liste = ferveX(this).find('.structItem-statuses');
  3971. var structItemCellMetaElement = ferveX(this).find('.structItem-cell--meta');
  3972. if (structItemCellMetaElement.length) {
  3973. var structItemCellMeta = structItemCellMetaElement.attr('title');
  3974. if (structItemCellMeta.includes('Premier message apprécié:')) {
  3975. var messageCount2 = parseInt(structItemCellMeta.split(':')[1].trim());
  3976. if (messageCount2 !== 0) {
  3977. var messageText2 = 'Le premier message<br>a reçu ' + messageCount2 + ' j\'aime !';
  3978. var messageElement2 = ferveX('<li style="font-size:12px; cursor: help" rel="fervextip" title="' + messageText2 + '">' + messageCount2 + ' 🎔 </li>');
  3979. liste.prepend(messageElement2);
  3980. }
  3981. }
  3982. }
  3983. var secondaryTitleElement = ferveX(this).find('.structItem-secondaryIcon');
  3984. if (secondaryTitleElement.length) {
  3985. var secondaryTitle = secondaryTitleElement.attr('title');
  3986. if (secondaryTitle.includes('Vous avez envoyé')) {
  3987. var messageCount = parseInt(secondaryTitle.match(/\d+/)[0]);
  3988. var messageText = (messageCount === 1) ? 'Vous avez écrit ' + messageCount + ' message' : 'Vous avez écrit ' + messageCount + ' messages';
  3989. var messageElement = ferveX('<li style="font-size:12px; cursor: help" rel="fervextip" title="' + messageText + '">' + messageCount + ' 🗨</li>');
  3990. liste.prepend(messageElement);
  3991. }
  3992. }
  3993. });
  3994. }
  3995. /* Création lien profil YGG */
  3996. ferveX(".message-userDetails .message-name .username").each(function() {
  3997. var userPseudo = ferveX.trim(ferveX(this).text());
  3998. var userSection = ferveX(this).closest(".message-user");
  3999. var userProfil, userInbox, userRatio, userUp, userUpOctet, userDown, userDownOctet, userDelta;
  4000. var urlSearch = BASE_URL + "/engine/search_users?nickname=" + encodeURIComponent(userPseudo);
  4001. // Requête pour charger le contenu HTML de la recherche user
  4002. fetch(urlSearch)
  4003. .then(response => response.text())
  4004. .then(responseText => {
  4005. var doc = ferveX(responseText);
  4006. var usersFound = ferveX(doc).find(".card-title");
  4007. usersFound.each(function() {
  4008. var userFound = ferveX(this).text().trim();
  4009. if (userFound === userPseudo) {
  4010. userProfil = ferveX(this).parent().prev().attr("href");
  4011. userUp = ferveX(this).parent().next().find(".pull-left strong").first().text();
  4012. userDown = ferveX(this).parent().next().find(".pull-left strong").eq(1).text();
  4013. if (!userUp || !userDown) {
  4014. return false;
  4015. }
  4016. userUpOctet = sizeStringToByteNumber(userUp);
  4017. userDownOctet = sizeStringToByteNumber(userDown);
  4018. userDelta = userUpOctet - userDownOctet;
  4019. userRatio = userUpOctet / userDownOctet;
  4020. return false;
  4021. }
  4022. });
  4023. if (userProfil) {
  4024. userSection.append(
  4025. '<div style="text-align:center; margin-top:12px; padding:5px 0; cursor: default;">' +
  4026. ' <div><i class="fa fa-user"></i> <a href="' + userProfil + '">Profil YGG</a></div>' +
  4027. ' <div style="padding: 5px 5px 0 5px;">' + (userUp ?
  4028. ' <span class="userBanner userBanner--green message-userBanner" style="display:inline-block;background:#28a745;border-color:#28a745;" rel="fervextip" title="Quantité envoyée"><i class="fa fa-upload"></i> ' + userUp.replace(/(\D+)$/, ' $1') + '</span>' : '') + (userDown ?
  4029. ' <span class="userBanner userBanner--red message-userBanner" style="display:inline-block;background:#dc3545;border-color:#dc3545;" rel="fervextip" title="Quantité téléchargée"><i class="fa fa-download"></i> ' + userDown.replace(/(\D+)$/, ' $1') + '</span>' : '') +
  4030. ' </div>' +
  4031. ' <div style="padding: 0 5px 5px 5px;">' + (userRatio ?
  4032. ' <span class="userBanner userBanner--blue message-userBanner" style="display:inline-block;background:#808ba0;border-color:#808ba0;" rel="fervextip" title="Téléchargement restant">Δ ' + (userDelta < 0 ? '<1 !' : formatOctets(userDelta).replace(/(\D+)$/, ' $1')) + '</span>' : '') + (userDelta ?
  4033. ' <span class="userBanner userBanner--white message-userBanner" style="display:inline-block;background:#ffffff;border-color:#ffffff;" rel="fervextip" title="Ratio"><i class="fa fa-balance-scale"></i> ' + userRatio.toFixed(3) + '</span>' : '') +
  4034. ' </div>' +
  4035. '</div>'
  4036. );
  4037. ferveX(this).attr("data-profilygg", userProfil);
  4038. }
  4039. })
  4040. });
  4041. ferveX(document).on('mouseenter', 'a[data-xf-init=member-tooltip]', function(e) {
  4042. var urlTemp = ferveX(this).attr('href');
  4043. var regex = /members\/([^\/.]+)/;
  4044. var match = urlTemp.match(regex);
  4045. if (match !== null) {
  4046. var userPseudo = match[1];
  4047. var userProfil;
  4048. var urlSearch = BASE_URL + "/engine/search_users?nickname=" + encodeURIComponent(userPseudo);
  4049. fetch(urlSearch)
  4050. .then(response => response.text())
  4051. .then(responseText => {
  4052. var doc = ferveX(responseText);
  4053. var usersFound = ferveX(doc).find(".card-title");
  4054. usersFound.each(function() {
  4055. var userFound = ferveX(this).text().trim();
  4056. if (userFound.toUpperCase() === userPseudo.toUpperCase()) {
  4057. userProfil = ferveX(this).parent().prev().attr("href");
  4058. return false;
  4059. }
  4060. });
  4061. if (userProfil) {
  4062. setTimeout(function() {
  4063. ferveX('.tooltip--member').each(function() {
  4064. if (ferveX(this).find('.buttonGroup .profil-ygg').length === 0) {
  4065. ferveX(this).find('.buttonGroup').append('<a href="' + userProfil + '" class="button--link button profil-ygg">Profil YGG</a>');
  4066. };
  4067. });
  4068. }, 1000);
  4069. }
  4070. })
  4071. }
  4072. })
  4073. if (url.indexOf("/forum/index.php?members/") > -1) {
  4074. var userPseudo = ferveX('.memberHeader-name .username').text().trim();
  4075. var userProfil;
  4076. var urlSearch = BASE_URL + "/engine/search_users?nickname=" + encodeURIComponent(userPseudo);
  4077. fetch(urlSearch)
  4078. .then(response => response.text())
  4079. .then(responseText => {
  4080. var doc = ferveX(responseText);
  4081. var usersFound = ferveX(doc).find(".card-title");
  4082. usersFound.each(function() {
  4083. var userFound = ferveX(this).text().trim();
  4084. if (userFound === userPseudo) {
  4085. userProfil = ferveX(this).parent().prev().attr("href");
  4086. return false;
  4087. }
  4088. });
  4089. if (userProfil) ferveX('.memberHeader-buttons').append('<a href="' + userProfil + '" class="button button--link">Profil YGG</a>');
  4090. })
  4091. };
  4092. });
  4093. } else {
  4094. ferveX(document).ready(function() {
  4095. /* Antipub */
  4096. if (ferveX('#top nav li.color').is(':contains("Regarder la télé")')) {
  4097. ferveX('#top nav li.color:contains("Regarder la télé")').remove();
  4098. ferveX('#top nav li.color').css("width", "12.5%");
  4099. }
  4100. if (ferveX('#cat ul li').is(':contains("Télécharger en illimité")')) {
  4101. ferveX('#cat ul li:contains("Télécharger en illimité")').remove();
  4102. }
  4103. if (ferveX('#cat ul li').is(':contains("Utiliser un VPN")')) {
  4104. ferveX('#cat ul li:contains("Utiliser un VPN")').remove();
  4105. }
  4106. ferveX('header a.donate').remove();
  4107. /* Fermeture Sidebar gauche */
  4108. var fervexSidebar = getValue('fervex_sidebar');
  4109. if (fervexSidebar == null || fervexSidebar == "off") {
  4110. if (ferveX('#cat').hasClass('active')) {
  4111. ferveX('.open').click();
  4112. }
  4113. } else {
  4114. if (!ferveX('#cat').hasClass('active')) {
  4115. ferveX('.open').click();
  4116. }
  4117. }
  4118. /* Agrandissement modal NFO */
  4119. if (ferveX('#nfoModal .modal-dialog').hasClass('modal-sm')) {
  4120. ferveX('#nfoModal .modal-dialog').toggleClass('modal-sm modal-lg');
  4121. }
  4122. /* Zupimages */
  4123. if (url.indexOf("/user/upload_torrent") > -1) {
  4124. ferveX('<div style="position:absolute;right:20px;top:-95px;" class="p-2 bg-light border"><iframe src="https://www.zupimages.net/api/index.php?background=transparent&amp;color=000000&amp;header=yes&amp;lastimage=yes" width="210" height="120" frameborder="no" scrolling="no"></iframe></div>').appendTo('#upload-torrent > div > div.row:nth-child(8)');
  4125. }
  4126. /* Sauvegarde Prez (édition) */
  4127. if (url.indexOf("/user/edit_torrent") > -1) {
  4128. /* titre torrent */
  4129. ferveX('#edit-torrent>div>div:nth-child(5)>div.col-md-2.field-label-responsive>label').after('<div style="margin-top: -5px;"><a href="" id="save-titre">Sauvegarder</a></div>');
  4130. ferveX("#save-titre").click(function(e) {
  4131. e.preventDefault();
  4132. var titreperso = ferveX("#edit-torrent input#name").val();
  4133. localStorage.setItem("titreperso", titreperso);
  4134. });
  4135. /* contenu prez */
  4136. ferveX('#edit-torrent>div>div:nth-child(6)>div.col-md-2.field-label-responsive>label').after('<button class="btn btn-secondary my-2" id="save-prez">Sauvegarder la prez</button>');
  4137. ferveX("#save-prez").click(function(e) {
  4138. e.preventDefault();
  4139. var prez = ferveX('.wysibb-text-editor').html();
  4140. localStorage.setItem('prezperso', prez);
  4141. });
  4142. }
  4143. /* Stockage Prez (création) */
  4144. if (url.indexOf("/user/upload_torrent") > -1) {
  4145. /* titre torrent */
  4146. if (localStorage.getItem("titreperso") !== null && localStorage.getItem("titreperso") !== "") {
  4147. ferveX('#upload-torrent>div>div:nth-child(8)>div.col-md-2.field-label-responsive>label').after('<div style="margin-top: -5px;"><a href="" id="save-titre">Sauvegarder</a> | <a href="" id="get-titre">Restaurer</a></div>');
  4148. } else {
  4149. ferveX('#upload-torrent>div>div:nth-child(8)>div.col-md-2.field-label-responsive>label').after('<div style="margin-top: -5px;"><a href="" id="save-titre">Sauvegarder</a></div>');
  4150. }
  4151. ferveX("#save-titre").click(function(e) {
  4152. e.preventDefault();
  4153. var titreperso = ferveX("#upload-torrent input#name").val();
  4154. localStorage.setItem("titreperso", titreperso);
  4155. });
  4156. ferveX("#get-titre").click(function(e) {
  4157. e.preventDefault();
  4158. var titreperso = localStorage.getItem("titreperso");
  4159. ferveX("#upload-torrent input#name").val(titreperso);
  4160. });
  4161. /* contenu prez */
  4162. if (localStorage.getItem("prezperso") !== null && localStorage.getItem("prezperso") !== "") {
  4163. ferveX('#upload-torrent button[type=submit]').after('<button class="btn btn-secondary mx-1" id="get-prez">Restaurer la prez sauvegardée</button>');
  4164. }
  4165. ferveX('#upload-torrent button[type=submit]').after('<button class="btn btn-secondary mx-1" id="save-prez">Sauvegarder la prez</button>');
  4166. ferveX("#save-prez").click(function(e) {
  4167. e.preventDefault();
  4168. var prez = ferveX('.wysibb-text-editor').html();
  4169. localStorage.setItem('prezperso', prez);
  4170. });
  4171. ferveX("#get-prez").click(function(e) {
  4172. e.preventDefault();
  4173. var prez = localStorage.getItem("prezperso");
  4174. ferveX(".wysibb-text-editor").html(prez);
  4175. });
  4176. }
  4177. /* Boutons de recherche */
  4178. ferveX('.search-criteria button.solo')
  4179. .after(' <a href="" class="recherche-fervex" id="recherche-seriesD" style="' + styleBoutonS + '"><img src="https://i.ibb.co/yh7pQYZ/serie.png" class="pr-1" style="padding-bottom: 2px;"> Séries (Date)</a>')
  4180. .after(' <a href="" class="recherche-fervex" id="recherche-seriesP" style="' + styleBoutonS + '"><img src="https://i.ibb.co/yh7pQYZ/serie.png" class="pr-1" style="padding-bottom: 2px;"> Séries (Poids)</a>')
  4181. .after(' <a href="" class="recherche-fervex" id="recherche-filmD" style="' + styleBoutonF + '"><img src="https://i.ibb.co/pQ6ksRg/film.png" class="pr-1" style="padding-bottom: 2px;"> Films (Date)</a>')
  4182. .after(' <a href="" class="recherche-fervex" id="recherche-filmP" style="' + styleBoutonF + '"><img src="https://i.ibb.co/pQ6ksRg/film.png" class="pr-1" style="padding-bottom: 2px;"> Films (Poids)</a>')
  4183. .after('<a href="" class="recherche-fervex w65" rel="fervextip" id="recherche-ok" style="' + styleBouton + '" title="Ajouter les guillemets automatiquement !"><i class="ico_quote-left"></i> <i class="ico_quote-right"></i></a>');
  4184. ferveX('#recherche-ok').after(' <div style="width:100%;height:10px;display:block"> </div>');
  4185. ferveX('.search-criteria button.solo').css({
  4186. "display": "inline-block",
  4187. "font-size": "16px"
  4188. });
  4189. ferveX('.search-criteria .alone').css('text-align', 'center');
  4190. ferveX(".bulle").css({
  4191. "border-radius": "16px",
  4192. "min-width": "16px",
  4193. "width": "auto",
  4194. "padding": "0 5px"
  4195. });
  4196. ferveX('.recherche-fervex, .search-criteria button.solo').hover(function() {
  4197. ferveX(this).addClass('butonFervexHover');
  4198. }, function() {
  4199. ferveX(this).removeClass('butonFervexHover');
  4200. });
  4201. var rechercheGuillemet = false;
  4202. ferveX('#recherche-ok').click(function(e) {
  4203. e.preventDefault();
  4204. if (rechercheGuillemet) {
  4205. var temp = ferveX(".search-criteria input[name='name']").val().replace(/"/g, '');
  4206. ferveX(".search-criteria input[name='name']").val(temp);
  4207. ferveX(this).css('background', '#4e5c6f');
  4208. rechercheGuillemet = false;
  4209. } else {
  4210. var temp = ferveX(".search-criteria input[name='name']").val().replace(/"/g, ' ').trim();
  4211. if (temp != '') {
  4212. temp = temp.split(" ").join("\" \"");
  4213. ferveX(".search-criteria input[name='name']").val('"' + temp + '"');
  4214. ferveX(this).css('background', '#30353c');
  4215. rechercheGuillemet = true;
  4216. }
  4217. }
  4218. });
  4219. if (url.indexOf("/engine/search") > -1) {
  4220. let recherchePrecedente = new URLSearchParams(document.location.search.substring(1));
  4221. let recherchePrecedenteValeur = recherchePrecedente.get("name");
  4222. if (recherchePrecedenteValeur != null) {
  4223. ferveX(".search-criteria input[name='name']").val(recherchePrecedenteValeur);
  4224. }
  4225. }
  4226. ferveX('#recherche-filmP').click(function(e) {
  4227. e.preventDefault();
  4228. rechercheF = ferveX(".search-criteria input[name='name']").val();
  4229. rechercheU = ferveX(".search-criteria input[name='uploader']").val();
  4230. window.location = baseUrl + 'search?name=' + rechercheF + '&description=&file=&uploader=' + rechercheU + '&category=2145&sub_category=2183&do=search&order=desc&sort=size';
  4231. });
  4232. ferveX('#recherche-filmD').click(function(e) {
  4233. e.preventDefault();
  4234. rechercheF = ferveX(".search-criteria input[name='name']").val();
  4235. rechercheU = ferveX(".search-criteria input[name='uploader']").val();
  4236. window.location = baseUrl + 'search?name=' + rechercheF + '&description=&file=&uploader=' + rechercheU + '&category=2145&sub_category=2183&do=search&order=desc&sort=publish_date';
  4237. });
  4238. ferveX('#recherche-seriesP').click(function(e) {
  4239. e.preventDefault();
  4240. rechercheF = ferveX(".search-criteria input[name='name']").val();
  4241. rechercheU = ferveX(".search-criteria input[name='uploader']").val();
  4242. window.location = baseUrl + 'search?name=' + rechercheF + '&description=&file=&uploader=' + rechercheU + '&category=2145&sub_category=2184&do=search&order=desc&sort=size';
  4243. });
  4244. ferveX('#recherche-seriesD').click(function(e) {
  4245. e.preventDefault();
  4246. rechercheF = ferveX(".search-criteria input[name='name']").val();
  4247. rechercheU = ferveX(".search-criteria input[name='uploader']").val();
  4248. window.location = baseUrl + 'search?name=' + rechercheF + '&description=&file=&uploader=' + rechercheU + '&category=2145&sub_category=2184&do=search&order=desc&sort=publish_date';
  4249. });
  4250. /* bouton DL torrent */
  4251. function gettorrent() {
  4252. ferveX('a[id^=get_nfo]').not('.ico-dl').each(function() {
  4253. var that = ferveX(this);
  4254. that.parent('td').css("white-space", "nowrap");
  4255. var torrent = that.attr('target');
  4256. var href = that.parent('td').prev().find('a').attr('href');
  4257. that.before('<a href="/engine/download_torrent?id=' + torrent + '" rel="fervextip" title="Télécharger le torrent" class="py-1 pr-2 mr-2 fervexDL" style="border-right:1px solid #ccc;"><span class="ico_download text-primary"></span></a>');
  4258. that.before('<a href="#" data-refresh="' + href + '" rel="fervextip" title="Stats du torrent en temps réel" class="py-1 pr-2 mr-2 fervexRefresh" style="border-right:1px solid #ccc;"><span class="ico_refresh text-success"></span></a>');
  4259. that.addClass('ico-dl');
  4260. var link = ferveX('<span>', {
  4261. 'data-lastcom': href,
  4262. rel: 'fervextip',
  4263. title: 'Afficher les derniers commentaires',
  4264. class: 'fervexLastCom',
  4265. style: 'cursor:pointer'
  4266. });
  4267. that.parent('td').next().wrapInner(link);
  4268. });
  4269. ferveX('.fervexDL span, .fervexRefresh span, .fervexLastCom').hover(function() {
  4270. ferveX(this).addClass('text-danger');
  4271. }, function() {
  4272. ferveX(this).removeClass('text-danger');
  4273. });
  4274. ferveX("[data-lastcom]").on("click", function(e) {
  4275. e.preventDefault();
  4276. var that = ferveX(this);
  4277. var href = that.data("lastcom");
  4278. ferveX.get(href, function(data, status) {
  4279. var comms = ferveX(data).find("#comm").html();
  4280. ferveX('body').prepend('<div class="modal fade" id="lastComModal" tabindex="-1" role="dialog" aria-labelledby="lastComModalLabel" aria-hidden="true">' +
  4281. ' <div class="modal-dialog modal-lg" role="document">' +
  4282. ' <div class="modal-content">' +
  4283. ' <div class="modal-header border-dark">' +
  4284. ' <h5 class="modal-title pr-3" id="lastComModalLabel">Derniers commentaires du torrent</h5>' +
  4285. ' <button type="button" class="close text-light" data-dismiss="modal" aria-label="Close">' +
  4286. ' <span aria-hidden="true">&times;</span>' +
  4287. ' </button>' +
  4288. ' </div>' +
  4289. ' <div class="modal-body p-0">' +
  4290. ' <div>' + comms + '</div>' +
  4291. ' </div>' +
  4292. ' </div>' +
  4293. ' </div>' +
  4294. '</div>');
  4295. const lastComModal = new bootstrap.Modal(document.getElementById('lastComModal'));
  4296. lastComModal.show();
  4297. });
  4298. });
  4299. ferveX("a[data-refresh]").on("click", function(e) {
  4300. e.preventDefault();
  4301. var that = ferveX(this);
  4302. that.find('span').addClass("ico_spin");
  4303. var href = that.data("refresh");
  4304. ferveX.get(href, function(data, status) {
  4305. var stats = (ferveX(data).find("#register").length > 0) ? 1 : 0;
  4306. var hashTorrent = ferveX(data).find("#informationsContainer > div > table > tbody > tr:nth-child(5) > td:nth-child(2)").text();
  4307. var random = Math.random().toString(36).slice(2);
  4308. var getStats = 'https://yggland.fr/FAQ-Tutos/info-torrent.php?hash=' + hashTorrent + '&seeders&leechers&completed&random';
  4309. ferveX('#statsModal').remove();
  4310. ferveX.get(getStats, function(data2, status) {
  4311. var statsTorrent = data2.split('|');
  4312. ferveX('body').prepend('<div class="modal fade" id="statsModal" tabindex="-1" role="dialog" aria-labelledby="statsModalLabel" aria-hidden="true">' +
  4313. ' <div class="modal-dialog" style="max-width: fit-content" role="document">' +
  4314. ' <div class="modal-content">' +
  4315. ' <div class="modal-header border-dark">' +
  4316. ' <h5 class="modal-title pr-3" id="statsModalLabel">Stats torrent en temps réel</h5>' +
  4317. ' <button type="button" class="close text-light" data-dismiss="modal" aria-label="Close">' +
  4318. ' <span aria-hidden="true">&times;</span>' +
  4319. ' </button>' +
  4320. ' </div>' +
  4321. ' <div class="modal-body p-0">' +
  4322. ' <table class="table table-bordered dark bg-dark text-light text-center m-0">' +
  4323. ' <tbody>' +
  4324. ' <tr>' +
  4325. ' <td class="border-black" width="115">Seeders</th>' +
  4326. ' <td class="border-black" width="115">Leechers</th>' +
  4327. ' <td class="border-black" width="115">Complétés</th>' +
  4328. ' </tr>' +
  4329. ' <tr>' +
  4330. ' <td class="border-black text-success text-bold">' + statsTorrent[0] + '</td>' +
  4331. ' <td class="border-black text-danger text-bold">' + statsTorrent[1] + '</td>' +
  4332. ' <td class="border-black text-light text-bold">' + statsTorrent[2] + '</td>' +
  4333. ' </tr>' +
  4334. ' </tbody>' +
  4335. ' </table>' +
  4336. ' </div>' +
  4337. ' </div>' +
  4338. ' </div>' +
  4339. '</div>');
  4340. const statsModal = new bootstrap.Modal(document.getElementById('statsModal'));
  4341. statsModal.show();
  4342. that.find('span').removeClass("ico_spin");
  4343. });
  4344. });
  4345. });
  4346. }
  4347. if (url.indexOf("/engine/search") > -1) {
  4348. gettorrent();
  4349. } else {
  4350. setTimeout(gettorrent, 800);
  4351. }
  4352. ferveX('td[id^=display-more]').click(function(e) {
  4353. setTimeout(gettorrent, 800);
  4354. });
  4355.  
  4356. function InfiniteScroll(nb) {
  4357. let currentPage = 0;
  4358. let loading = false;
  4359. let table;
  4360.  
  4361. function loadMoreTorrents() {
  4362. if (loading) return;
  4363. loading = true;
  4364. currentPage += nb;
  4365. let url = document.location.href;
  4366. GM.xmlHttpRequest({
  4367. method: "GET",
  4368. url: nb === 50 ? `${url}&page=${currentPage}` : `${url}?page=${currentPage}`,
  4369. headers: {
  4370. "Cookie": document.cookie
  4371. },
  4372. onload: function(response) {
  4373. let parser = new DOMParser();
  4374. let temp = parser.parseFromString(response.responseText, "text/html");
  4375. let torrents = temp.querySelectorAll('div.table-responsive.results table tr');
  4376. if (torrents && torrents.length > 0) {
  4377. appendTorrents(torrents);
  4378. } else {
  4379. ferveX(window).off('scroll', handleScroll);
  4380. }
  4381. loading = false;
  4382. },
  4383. onerror: function() {
  4384. console.error('Failed to load more torrents.');
  4385. loading = false;
  4386. }
  4387. });
  4388. }
  4389.  
  4390. function initializeDataTable() {
  4391. table = ferveX('.results .table').DataTable({
  4392. dom: "<'row'<'col-12 text-center mt-3'f>>" +
  4393. "<'row'<'col-12'tr>>" +
  4394. "<'row'<'col-12 text-center my-3'i>>",
  4395. stateSave: false,
  4396. autoWidth: false,
  4397. order: [],
  4398. ordering: false,
  4399. paging: false,
  4400. language: {
  4401. processing: "Traitement en cours...",
  4402. search: "",
  4403. searchPlaceholder: "Filtrer la page en cours",
  4404. lengthMenu: "_MENU_ torrents par page",
  4405. info: "_END_ torrents affichés ",
  4406. infoEmpty: "Aucun torrent",
  4407. infoFiltered: "(filtrés sur _MAX_ torrents de la page)",
  4408. infoPostFix: "",
  4409. loadingRecords: "Chargement...",
  4410. zeroRecords: "Aucun torrent à afficher",
  4411. emptyTable: "Aucune donnée disponible",
  4412. paginate: {
  4413. first: "Premier",
  4414. previous: "<i class='fas fa-chevron-left'></i>",
  4415. next: "<i class='fas fa-chevron-right'></i>",
  4416. last: "Dernier"
  4417. },
  4418. aria: {
  4419. sortAscending: ": activer pour trier la colonne par ordre croissant",
  4420. sortDescending: ": activer pour trier la colonne par ordre décroissant"
  4421. },
  4422. select: {
  4423. rows: {
  4424. _: "%d lignes sélectionnées",
  4425. 0: "Aucune ligne sélectionnée",
  4426. 1: "1 ligne sélectionnée"
  4427. }
  4428. },
  4429. buttons: {
  4430. colvis: 'Colonnes',
  4431. copy: 'Copier',
  4432. print: 'Imprimer'
  4433. }
  4434. }
  4435. });
  4436. }
  4437.  
  4438. function appendTorrents(torrents) {
  4439. const rows = [];
  4440. torrents.forEach((torrent, index) => {
  4441. if (index > 0) { // Ignorer le premier élément
  4442. const rowHtml = torrent.outerHTML;
  4443. const rowNode = ferveX(rowHtml)[0];
  4444. rows.push(rowNode);
  4445. }
  4446. });
  4447. if (table) {
  4448. table.rows.add(rows).draw();
  4449. }
  4450. attachClickHandlers();
  4451. }
  4452.  
  4453. function handleScroll() {
  4454. const scrollTop = ferveX(window).scrollTop();
  4455. const windowHeight = ferveX(window).height();
  4456. const documentHeight = ferveX(document).height();
  4457. const scrollPercentage = scrollTop / (documentHeight - windowHeight);
  4458. if (scrollPercentage >= 0.75) {
  4459. loadMoreTorrents();
  4460. }
  4461. }
  4462.  
  4463. function attachClickHandlers() {
  4464. var fervexPreview = getValue('fervex_preview');
  4465. if (fervexPreview == null || fervexPreview == "on") {
  4466. setTimeout(function() {
  4467. removePreview();
  4468. addPreview();
  4469. }, 800);
  4470. }
  4471. var fervexPreview2 = getValue('fervex_preview2');
  4472. if (fervexPreview2 == "on") {
  4473. setTimeout(function() {
  4474. getPreview();
  4475. }, 800);
  4476. }
  4477. setTimeout(gettorrent, 300);
  4478. //initializeDataTable()
  4479. }
  4480. ferveX(window).on('scroll', handleScroll);
  4481. loadMoreTorrents();
  4482. initializeDataTable();
  4483. attachClickHandlers();
  4484. }
  4485. if (url.indexOf("/search") > -1 && scroll) {
  4486. InfiniteScroll(50);
  4487. } else if (url.indexOf("/torrents/exclus") > -1 && scroll) {
  4488. InfiniteScroll(25);
  4489. }
  4490. /* notif */
  4491. if (url.indexOf("/user/notifications") > -1) {
  4492. var notifNonLues = parseInt(ferveX('#top_panel [data-balloon="Notifications non lues"]').text());
  4493. var rows = ferveX("table.notifications tr");
  4494. var rowCount = rows.length;
  4495. for (var i = 0; i < rowCount; i++) {
  4496. var row = ferveX(rows[i]);
  4497. var td1 = row.find('td:first-child()');
  4498. var td2 = td1.next();
  4499. var td3 = td2.next();
  4500. var hrefuser = td2.find('strong').eq(0).text();
  4501. var hreftorrent = td2.find('strong').eq(1).text();
  4502. var hrefstatus = td2.find('font').eq(0).text();
  4503. var hrefpending = td2.find('font').eq(1).text();
  4504. var link = row.attr("onclick");
  4505. var hrefval = link.substring(link.indexOf("'") + 1, link.lastIndexOf("'"));
  4506. var replacementHtml = '';
  4507. if (hreftorrent.length) {
  4508. replacementHtml = '<b>' + hrefuser + '</b> a commenté <a href="' + hrefval + '" class="text-primary"><b>' + hreftorrent + '</b></a>';
  4509. td3
  4510. .prepend('<i class="ico_eye text-primary get-notif mr-1" style="cursor:pointer" data-url="' + hrefval + '"></i> ')
  4511. .addClass("text-nowrap");
  4512. } else if (hrefstatus.length) {
  4513. var typepending = (hrefstatus === "approuvé") ? "success" : (hrefstatus === "supprimé") ? "danger" : "warning";
  4514. replacementHtml = '<b>' + hrefuser + '</b><br><span class="text-' + typepending + '">' + hrefstatus + '</span> par la TP &rarr; <a href="' + hrefval + '" class="text-' + typepending + '"><b>' + hrefpending + '</b></a>';
  4515. } else {
  4516. replacementHtml = '<a href="' + hrefval + '" class="text-primary"><b>' + td2.html() + '</b></a>';
  4517. }
  4518. if (replacementHtml) {
  4519. td2.html(replacementHtml);
  4520. }
  4521. row
  4522. .prop("onclick", null)
  4523. .removeAttr("onclick")
  4524. .off("click")
  4525. .css('cursor', 'default');
  4526. if (i < notifNonLues) {
  4527. td1.append(' ⚡');
  4528. }
  4529. }
  4530. ferveX(".get-notif").on("click", function(e) {
  4531. e.preventDefault();
  4532. var that = ferveX(this);
  4533. var href = that.data("url");
  4534. ferveX.get(href, function(data, status) {
  4535. var comm = ferveX(data).find("#focusedComment").html();
  4536. ferveX('body').prepend('<div class="modal fade" id="getNotifModal" tabindex="-1" role="dialog" aria-labelledby="getNotifModalLabel" aria-hidden="true">' +
  4537. ' <div class="modal-dialog modal-lg" style="max-width:800px!important" role="document">' +
  4538. ' <div class="modal-content">' +
  4539. ' <div class="modal-header border-dark">' +
  4540. ' <h5 class="modal-title pr-3" id="getNotifModalLabel">Commentaire reçu</h5>' +
  4541. ' <button type="button" class="close text-light" data-dismiss="modal" aria-label="Close">' +
  4542. ' <span aria-hidden="true">&times;</span>' +
  4543. ' </button>' +
  4544. ' </div>' +
  4545. ' <div class="modal-body p-0">' +
  4546. ' <div>' + comm + '</div>' +
  4547. ' </div>' +
  4548. ' </div>' +
  4549. ' </div>' +
  4550. '</div>');
  4551. const NotifModal = new bootstrap.Modal(document.getElementById('getNotifModal'));
  4552. NotifModal.show();
  4553. });
  4554. });
  4555. ferveX('.get-notif').hover(function() {
  4556. ferveX(this).addClass('text-danger');
  4557. }, function() {
  4558. ferveX(this).removeClass('text-danger');
  4559. });
  4560. }
  4561. if (url.indexOf("/engine/search") > -1 || url.indexOf("/torrents/exclus") > -1 || url.indexOf("/user/my_torrents") > -1) {
  4562. if (!scroll) {
  4563. var table = ferveX('.results .table').DataTable({
  4564. dom: "<'row'<'col-12 text-center mt-3'f>>" +
  4565. "<'row'<'col-12'tr>>" +
  4566. "<'row'<'col-12 text-center my-3'i>>",
  4567. stateSave: false,
  4568. autoWidth: false,
  4569. order: [],
  4570. ordering: false,
  4571. paging: false,
  4572. language: {
  4573. processing: "Traitement en cours...",
  4574. search: "",
  4575. searchPlaceholder: "Filtrer la page en cours",
  4576. lengthMenu: "_MENU_ torrents par page",
  4577. info: "_END_ torrents affichés ",
  4578. infoEmpty: "Aucun torrent",
  4579. infoFiltered: "(filtrés sur _MAX_ torrents de la page)",
  4580. infoPostFix: "",
  4581. loadingRecords: "Chargement...",
  4582. zeroRecords: "Aucun torrent à afficher",
  4583. emptyTable: "Aucune donnée disponible",
  4584. paginate: {
  4585. first: "Premier",
  4586. previous: "<i class='fas fa-chevron-left'></i>",
  4587. next: "<i class='fas fa-chevron-right'></i>",
  4588. last: "Dernier"
  4589. },
  4590. aria: {
  4591. sortAscending: ": activer pour trier la colonne par ordre croissant",
  4592. sortDescending: ": activer pour trier la colonne par ordre décroissant"
  4593. },
  4594. select: {
  4595. rows: {
  4596. _: "%d lignes sélectionnées",
  4597. 0: "Aucune ligne sélectionnée",
  4598. 1: "1 ligne sélectionnée"
  4599. }
  4600. },
  4601. buttons: {
  4602. colvis: 'Colonnes',
  4603. copy: 'Copier',
  4604. print: 'Imprimer'
  4605. }
  4606. }
  4607. });
  4608. }
  4609. }
  4610. /* filtrage Downloads */
  4611. if (url.indexOf("/user/downloads") > -1) {
  4612. ferveX('<div class="text-center pt-2"><label><input type="search" class="form-control form-control-sm" id="rechercheDL" placeholder="Filtrer les torrents"></label></div>').insertAfter("#middle main .inbox");
  4613. ferveX("#rechercheDL").on("keyup", function() {
  4614. var value = ferveX(this).val().toLowerCase();
  4615. ferveX("#middle main .inbox tr").filter(function() {
  4616. ferveX(this).toggle(ferveX(this).find("td:eq(1)").text().toLowerCase().indexOf(value) > -1)
  4617. });
  4618. });
  4619. }
  4620. /* test torrent via le hash */
  4621. if (url.indexOf("/torrent/") > -1) {
  4622. var hashtorrent = ferveX("#informationsContainer > div > table > tbody > tr:nth-child(5) > td:nth-child(2)").text();
  4623. ferveX("#informationsContainer > div > table > tbody > tr:nth-child(5) > td:nth-child(2)").append('<a href="https://yggland.fr/FAQ-Tutos/test-torrent-tracker-ygg.php?hash=' + hashtorrent + '" class="btn btn-success ml-2" target="_blank" style="padding: 2px 6px">Tester</a>');
  4624. }
  4625. /* Correction liens sur le profil */
  4626. if (url.indexOf('/user/account') > -1) {
  4627. var username = ferveX('.detail-account tbody tr:first-child td:nth-child(2) strong').text().trim();
  4628. var urlTorrents = '/engine/search?name=&description=&file=&uploader=' + username + '&category=all&sub_category=&do=search';
  4629. var profile = ferveX('.card-footer a').attr('href');
  4630. var urlComments = profile + '?action=show_comments';
  4631. ferveX('.detail-account tbody tr:nth-child(4) a').attr('href', urlTorrents);
  4632. ferveX('.detail-account tbody tr:nth-child(5) a').attr('href', urlComments);
  4633. }
  4634. /* Seed a zéro dans ses propres torrents */
  4635. if (url.indexOf('/user/my_torrents') > -1) {
  4636. async function getAllTableData() {
  4637. let allTableData = [];
  4638. let currentPage = 0;
  4639. let totalNumberOfPages = 0;
  4640. const lastPaginationLink = ferveX('ul.pagination li:last-child a');
  4641. if (lastPaginationLink.attr('data-ci-pagination-page')) {
  4642. totalNumberOfPages = parseInt(lastPaginationLink.attr('data-ci-pagination-page'));
  4643. }
  4644. console.log('Total number of pages:', totalNumberOfPages);
  4645. while (true) {
  4646. let pageData = await getTableData(currentPage);
  4647. if (pageData.length === 0) {
  4648. break;
  4649. }
  4650. allTableData = allTableData.concat(pageData);
  4651. currentPage++;
  4652. updateProgressBar(currentPage, totalNumberOfPages);
  4653. }
  4654. return allTableData;
  4655. }
  4656. async function getTableData(pageNumber) {
  4657. let url = `${BASE_URL}/user/my_torrents?page=${pageNumber * 50}`;
  4658. let response = await ferveX.ajax({
  4659. url
  4660. });
  4661. let tempDiv = ferveX('<div>');
  4662. tempDiv.html(response);
  4663. let tableRows = tempDiv.find('.results table tbody tr');
  4664. return tableRows.toArray();
  4665. }
  4666.  
  4667. function filterRowsWithZero(data) {
  4668. return data.filter(row => {
  4669. let avantDerniereColonne = row.cells[row.cells.length - 3];
  4670. return avantDerniereColonne.textContent.trim() === "0";
  4671. });
  4672. }
  4673.  
  4674. function displayFilteredTable(filteredData) {
  4675. ferveX('.table-responsive.results').remove();
  4676. let newTableHTML = '<table class="table">';
  4677. newTableHTML += '<thead>';
  4678. newTableHTML += '<tr>';
  4679. newTableHTML += '<th class="no">Type</th>';
  4680. newTableHTML += '<th class="no">Nom</th>';
  4681. newTableHTML += '<th class="no">NFO</th>';
  4682. newTableHTML += '<th class="no">Comm.</th>';
  4683. newTableHTML += '<th class="no">Age</th>';
  4684. newTableHTML += '<th class="no">Taille</th>';
  4685. newTableHTML += '<th class="no">Compl.</th>';
  4686. newTableHTML += '<th class="no">Seed</th>';
  4687. newTableHTML += '<th class="no">Leech</th>';
  4688. newTableHTML += '<th class="no"></th>';
  4689. newTableHTML += '</tr>';
  4690. newTableHTML += '</thead>';
  4691. newTableHTML += '<tbody>';
  4692. filteredData.forEach(row => {
  4693. newTableHTML += '<tr torrent-id="' + ferveX(row).attr('torrent-id') + '">';
  4694. ferveX(row).children('td').each(function() {
  4695. newTableHTML += '<td>' + ferveX(this).html() + '</td>';
  4696. });
  4697. newTableHTML += '</tr>';
  4698. });
  4699. newTableHTML += '</tbody>';
  4700. newTableHTML += '</table>';
  4701. ferveX('<div class="table-responsive results" style="width: 100%">').html(newTableHTML).insertAfter('#btnFilter');
  4702. ferveX('#btnFilter').replaceWith('<h2 class="mb-3">' + filteredData.length + ' Torrent(s) sans Seed :</h2>');
  4703. }
  4704. ferveX('.table-responsive.results').before('<button class="btn btn-success p-1 mb-3" id="btnFilter" style="text-transform:none">Filtrer torrents sans Seed</button>');
  4705.  
  4706. function updateProgressBar(currentPage, totalNumberOfPages) {
  4707. const progressPercentage = Math.floor((currentPage / totalNumberOfPages) * 100);
  4708. const progressBar = ferveX('#progressBar .progress-bar');
  4709. progressBar.css('width', progressPercentage + '%');
  4710. progressBar.text(progressPercentage + '%');
  4711. }
  4712. ferveX('#btnFilter').on('click', async function() {
  4713. try {
  4714. ferveX('#progressBar').remove();
  4715. ferveX('.table-responsive.results')
  4716. .before('<div class="progress mb-3" id="progressBar" style="height: 22px;">' +
  4717. '<div class="progress-bar d-flex flex-column justify-content-center h-100" role="progress-bar" style="width: 0%;font-size:0.9rem" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>' +
  4718. '</div>');
  4719. const allData = await getAllTableData();
  4720. const filteredData = filterRowsWithZero(allData);
  4721. const totalNumberOfPages = Math.ceil(allData.length / 50);
  4722. displayFilteredTable(filteredData);
  4723. ferveX('ul.pagination').parent('section').parent().parent('section').remove();
  4724. updateProgressBar(totalNumberOfPages, totalNumberOfPages);
  4725. gettorrent();
  4726. var fervexPreview = getValue('fervex_preview');
  4727. if (fervexPreview == null || fervexPreview == 'on') {
  4728. setTimeout(function() {
  4729. removePreview();
  4730. addPreview();
  4731. }, 400);
  4732. }
  4733. ferveX(document).on('click', 'a#remove', function() {
  4734. var self = this;
  4735. var conf = confirm("Confirmez-vous la suppression de ce torrent ?");
  4736. if (conf) {
  4737. var tr = self.closest('tr');
  4738. var t_id = tr.getAttribute('torrent-id');
  4739. var xhr = new XMLHttpRequest();
  4740. xhr.open('POST', BASE_URL + '/user/remove_torrent', true);
  4741. xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  4742. xhr.onreadystatechange = function() {
  4743. if (xhr.readyState === 4) {
  4744. if (xhr.status === 200) {
  4745. tr.style.transition = 'opacity 0.5s ease';
  4746. tr.style.opacity = '0';
  4747. setTimeout(function() {
  4748. tr.style.display = 'none';
  4749. }, 500);
  4750. } else {
  4751. alert(xhr.responseText);
  4752. }
  4753. }
  4754. };
  4755. xhr.send('id=' + encodeURIComponent(t_id));
  4756. }
  4757. });
  4758. ferveX('#progressBar').remove();
  4759. } catch (error) {
  4760. console.error('Une erreur s\'est produite:', error);
  4761. }
  4762. });
  4763. }
  4764. });
  4765. }
  4766. });