From 302e04bb12ae865def4b3781c377f36283a4b618 Mon Sep 17 00:00:00 2001 From: Attila Kerekes <439392+keriati@users.noreply.github.com> Date: Sat, 4 Feb 2023 19:34:49 +0000 Subject: [PATCH] fix: Update jquery, jquery-ui (#1113) --- package-lock.json | 8 +- package.json | 2 +- public/js/app.js | 2 +- public/js/jquery-3.6.0.min.js | 2 - public/js/jquery-ui.min.js | 13 - public/js/jquery.min.js | 2 + public/mix-manifest.json | 2 +- resources/assets/js/jquery-ui.min.js | 7 +- resources/views/layouts/app.blade.php | 3 +- resources/views/layouts/users.blade.php | 6 +- storage/app/supportedapps.json | 2 +- webpack.mix.js | 2 +- yarn.lock | 339 ++++++++++++++++-------- 13 files changed, 241 insertions(+), 149 deletions(-) delete mode 100644 public/js/jquery-3.6.0.min.js delete mode 100644 public/js/jquery-ui.min.js create mode 100644 public/js/jquery.min.js diff --git a/package-lock.json b/package-lock.json index b6439725..84361247 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^4.2.1", - "jquery": "^3.6.1", + "jquery": "^3.6.3", "laravel-mix": "^6.0.49", "prettier": "^2.8.1", "sass": "^1.56.1", @@ -6300,9 +6300,9 @@ } }, "node_modules/jquery": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", - "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz", + "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==", "dev": true }, "node_modules/js-sdsl": { diff --git a/package.json b/package.json index 252a75f7..3dc0bc25 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^4.2.1", - "jquery": "^3.6.1", + "jquery": "^3.6.3", "laravel-mix": "^6.0.49", "prettier": "^2.8.1", "sass": "^1.56.1", diff --git a/public/js/app.js b/public/js/app.js index 58bbe139..02fd934c 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}!function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var n=this._events=this._events||{},i=n[t]=n[t]||[];return-1==i.indexOf(e)&&i.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var n=this._onceEvents=this._onceEvents||{};return(n[t]=n[t]||{})[e]=!0,this}},e.off=function(t,e){var n=this._events&&this._events[t];if(n&&n.length){var i=n.indexOf(e);return-1!=i&&n.splice(i,1),this}},e.emitEvent=function(t,e){var n=this._events&&this._events[t];if(n&&n.length){var i=0,o=n[i];e=e||[];for(var s=this._onceEvents&&this._onceEvents[t];o;){var r=s&&s[o];r&&(this.off(t,o),delete s[o]),o.apply(this,e),o=n[i+=r?0:1]}return this}},t})),function(t,e){"function"==typeof define&&define.amd?define("unipointer/unipointer",["ev-emitter/ev-emitter"],(function(n){return e(t,n)})):"object"==("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=e(t,require("ev-emitter")):t.Unipointer=e(t,t.EvEmitter)}(window,(function(t,e){function n(){}var i=n.prototype=Object.create(e.prototype);i.bindStartEvent=function(t){this._bindStartEvent(t,!0)},i.unbindStartEvent=function(t){this._bindStartEvent(t,!1)},i._bindStartEvent=function(e,n){var i=(n=void 0===n||!!n)?"addEventListener":"removeEventListener";t.navigator.pointerEnabled?e[i]("pointerdown",this):t.navigator.msPointerEnabled?e[i]("MSPointerDown",this):(e[i]("mousedown",this),e[i]("touchstart",this))},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.getTouch=function(t){for(var e=0;e.5;var o=this.colorGrid[e.toUpperCase()];this.updateCursor(o),this.setTexts(),this.setBackgrounds(),n||this.emitEvent("change",[e,t.hue,t.sat,t.lum])}},u.setTexts=function(){if(this.setTextElems)for(var t=0;t0&&i.attr("value",n)}$(".message-container").length&&setTimeout((function(){$(".message-container").fadeOut()}),3500),$("#upload").change((function(){!function(t){if(t.files&&t.files[0]){var e=new FileReader;e.onload=function(t){$("#appimage img").attr("src",t.target.result)},e.readAsDataURL(t.files[0])}}(this)})),$("#sortable").sortable({stop:function(){var e=$("#sortable").sortable("toArray",{attribute:"data-id"});$.post("".concat(t,"order"),{order:e})}}),$("#sortable").sortable("disable"),$("#main").on("mouseenter","#sortable.ui-sortable-disabled .item",(function(){$(this).siblings(".tooltip").addClass("active"),$(".refresh",this).addClass("active")})).on("mouseleave",".item",(function(){$(this).siblings(".tooltip").removeClass("active"),$(".refresh",this).removeClass("active")})),$("#config-buttons").on("mouseenter","a",(function(){$(".tooltip",this).addClass("active")})).on("mouseleave","a",(function(){$(".tooltip",this).removeClass("active")})),$(".searchform > form").on("submit",(function(t){"tiles"===$("#search-container select[name=provider]").val()&&t.preventDefault()})),$("#search-container").on("input","input[name=q]",(function(){var t=this.value,e=$("#sortable").children(".item-container");"tiles"===$("#search-container select[name=provider]").val()&&t.length>0?(e.hide(),e.filter((function(){return $(this).data("name").toLowerCase().includes(t.toLowerCase())})).show()):e.show()})).on("change","select[name=provider]",(function(){var t=$("#sortable").children(".item-container");if("tiles"===$(this).val()){$("#search-container button").hide();var e=$("#search-container input[name=q]").val();e.length>0?(t.hide(),t.filter((function(){return $(this).data("name").toLowerCase().includes(e.toLowerCase())})).show()):t.show()}else $("#search-container button").show(),t.show()})),$("#app").on("click","#config-button",(function(t){t.preventDefault();var e=$("#app"),n=e.hasClass("header");e.toggleClass("header"),n?($(".add-item").hide(),$(".item-edit").hide(),$("#app").removeClass("sidebar"),$("#sortable .tooltip").css("display",""),$("#sortable").sortable("disable")):($("#sortable .tooltip").css("display","none"),$("#sortable").sortable("enable"),setTimeout((function(){$(".add-item").fadeIn(),$(".item-edit").fadeIn()}),350))})).on("click","#add-item, #pin-item",(function(t){t.preventDefault(),$("#app").toggleClass("sidebar")})).on("click",".close-sidenav",(function(t){t.preventDefault(),$("#app").removeClass("sidebar")})).on("click","#test_config",(function(e){e.preventDefault();var i=$("#create input[name=url]").val(),o=$('#sapconfig input[name="config[override_url]"]').val();"string"==typeof o&&""!==o&&(i=o);var s={};s.url=i,$(".config-item").each((function(){var t=$(this).data("config");s[t]=$(this).val()})),s.id=$("form[data-item-id]").data("item-id"),s.password&&s.password===n&&(s.password=""),$.post("".concat(t,"test_config"),{data:s}).done((function(t){alert(t)})).fail((function(t){alert("Something went wrong: ".concat(t.responseText.substring(0,100)))}))})),$("#pinlist").on("click","a",(function(e){e.preventDefault();var n=$(this),i=n.data("id"),o=n.data("tag");$.get("".concat(t,"items/pintoggle/").concat(i,"/true/").concat(o),(function(t){var e=$(t).filter("#sortable").html();$("#sortable").html(e),n.toggleClass("active")}))})),$("#itemform").on("submit",(function(){var t=$('input[name="config[password]"]').first();t.length>0&&t.attr("value")===n&&t.attr("value","")}))}));var focusSearch=function(t){var e=document.querySelector('input[name="q"]');e&&(t.preventDefault(),e.focus())},openFirstNonHiddenItem=function(t){if(t.target===document.querySelector('input[name="q"]')&&"tiles"===document.querySelector("#search-container select[name=provider]").value){var e=document.querySelector('#sortable section.item-container:not([style="display: none;"]) a');"href"in e&&(t.preventDefault(),window.open(e.href))}},KEY_BINDINGS={"/":focusSearch,Enter:openFirstNonHiddenItem};document.addEventListener("keydown",(function(t){try{t.key in KEY_BINDINGS&&KEY_BINDINGS[t.key](t)}catch(t){}}));var EXPORT_FILE_NAME="HeimdallExport.json",EXPORT_API_URL="api/item";function triggerFileDownload(t,e){var n=document.createElement("a"),i=new Blob([e],{type:"text/plain"});n.href=URL.createObjectURL(i),n.download=EXPORT_FILE_NAME,n.click()}var exportItems=function(t){t.preventDefault(),fetch(EXPORT_API_URL).then((function(t){return 200!==t.status&&window.alert("An error occurred while exporting..."),t.json()})).then((function(t){var e=JSON.stringify(t,null,2);triggerFileDownload(EXPORT_FILE_NAME,e)}))},exportButton=document.querySelector("#item-export");exportButton&&exportButton.addEventListener("click",exportItems);var IMPORT_API_URL="api/item",APP_LOAD_URL="appload",updateStatus=function(t){var e,n=t.item,i=t.errors;console.log(n,i),e=0===i.length?'
  • Imported: '.concat(n.title,"
  • "):'
  • Failed: '.concat(n.title," - ").concat(i[0],"
  • "),document.querySelector(".import-status").innerHTML+=e};function clearStatus(){document.querySelector(".import-status").innerHTML=""}var postToApi=function(t,e){return fetch(IMPORT_API_URL,{method:"POST",cache:"no-cache",redirect:"follow",headers:{"Content-Type":"application/json","X-CSRF-TOKEN":e},body:JSON.stringify(t)})},getCSRFToken=function(){return document.querySelector('input[name="_token"]').value},mergeItemWithAppDetails=function(t,e){return{pinned:1,tags:[0],appid:t.appid,title:t.title,colour:t.colour,url:t.url,appdescription:t.appdescription?t.appdescription:e.description,website:e.website,icon:e.iconview,config:t.description?JSON.parse(t.description):null}},fetchAppDetails=function(t){return null===t||"null"===t?Promise.resolve({}):fetch(APP_LOAD_URL,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({app:t})}).then((function(t){return t.json()}))},importItems=function(t){t.forEach((function(t){var e=[];fetchAppDetails(t.appid).catch((function(){return e.push(new Error("Failed to find app id: ".concat(t.appid)))})).then((function(e){var n=mergeItemWithAppDetails(t,e),i=getCSRFToken();return postToApi(n,i)})).catch((function(){return e.push(new Error("Failed to create item: ".concat(t.title)))})).finally((function(){updateStatus({item:t,errors:e})}))}))},readJSON=function(t){return new Promise((function(e,n){try{var i=new FileReader;i.onload=function(t){var n=t.target.result;e(JSON.parse(n))},i.readAsText(t)}catch(t){n(new Error("Unable to read file"))}}))},openFileForImport=function(t){return clearStatus(),readJSON(t).catch((function(t){console.error(t)})).then(importItems)},fileInput=document.querySelector("input[name='import']"),importButtons=document.querySelectorAll(".import-button");fileInput&&importButtons&&(importButtons.forEach((function(t){t.addEventListener("click",(function(){var t=fileInput.files[0];t&&openFileForImport(t)}))})),fileInput.addEventListener("change",openFileForImport,!1));var REFRESH_INTERVAL_SMALL=5e3,REFRESH_INTERVAL_BIG=3e4,QUEUE_PROCESSING_INTERVAL=1e3,CONTAINER_SELECTOR=".livestats-container";function createQueue(){var t=[],e=!1;return document.addEventListener("visibilitychange",(function(){e=document.hidden})),setInterval((function(){0!==t.length&&!0!==e&&t.shift()()}),QUEUE_PROCESSING_INTERVAL),t}function getContainers(){return document.querySelectorAll(CONTAINER_SELECTOR)}function getQueueInterval(t,e){return t?REFRESH_INTERVAL_BIG:e?REFRESH_INTERVAL_SMALL:REFRESH_INTERVAL_BIG}function createUpdateJob(t,e){var n=t.getAttribute("data-id"),i="1"===t.getAttribute("data-dataonly");return function(){return fetch("get_stats/".concat(n)).then((function(t){if(t.ok)return t.json();throw new Error("Network response was not ok: ".concat(t.status))})).then((function(n){t.innerHTML=n.html;var o="active"===n.status;e&&setTimeout((function(){e.push(createUpdateJob(t,e))}),getQueueInterval(i,o))})).catch((function(t){console.error(t)}))}}var livestatContainers=getContainers();if(livestatContainers.length>0){var myQueue=createQueue();livestatContainers.forEach((function(t){createUpdateJob(t,myQueue)()}))} +function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}((function(t){"use strict";t.ui=t.ui||{},t.ui.version="1.13.2";var e,i,s,n,o,r,a,h,l,c,u=0,p=Array.prototype.hasOwnProperty,f=Array.prototype.slice;function d(t,e,i){return[parseFloat(t[0])*(l.test(t[0])?e/100:1),parseFloat(t[1])*(l.test(t[1])?i/100:1)]}function m(e,i){return parseInt(t.css(e,i),10)||0}function g(t){return null!=t&&t===t.window}t.cleanData=(e=t.cleanData,function(i){for(var s,n,o=0;null!=(n=i[o]);o++)(s=t._data(n,"events"))&&s.remove&&t(n).triggerHandler("remove");e(i)}),t.widget=function(e,i,s){var n,o,r,a={},h=e.split(".")[0],l=h+"-"+(e=e.split(".")[1]);return s||(s=i,i=t.Widget),Array.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr.pseudos[l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){if(!this||!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),(r=new i).options=t.widget.extend({},r.options),t.each(s,(function(t,e){function s(){return i.prototype[t].apply(this,arguments)}function n(e){return i.prototype[t].apply(this,e)}a[t]="function"==typeof e?function(){var t,i=this._super,o=this._superApply;return this._super=s,this._superApply=n,t=e.apply(this,arguments),this._super=i,this._superApply=o,t}:e})),o.prototype=t.widget.extend(r,{widgetEventPrefix:n&&r.widgetEventPrefix||e},a,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,(function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)})),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=f.call(arguments,1),o=0,r=n.length;o",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=u++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,(function(t,i){e._removeClass(i,t)})),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,r=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(r={},e=(s=e.split(".")).shift(),s.length){for(n=r[e]=t.widget.extend({},this.options[e]),o=0;o
    "),n=s.children()[0];return t("body").append(s),e=n.offsetWidth,s.css("overflow","scroll"),e===(n=n.offsetWidth)&&(n=s[0].clientWidth),s.remove(),i=e-n},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y");i="scroll"===i||"auto"===i&&e.widths(n(r),n(f))?d.important="horizontal":d.important="vertical",e.using.call(this,t,d)}),a.offset(t.extend(E,{using:r}))}))},t.ui.position={fit:{left:function(t,e){var i=e.within,n=i.isWindow?i.scrollLeft:i.offset.left,o=i.width,r=t.left-e.collisionPosition.marginLeft,a=n-r,h=r+e.collisionWidth-o-n;e.collisionWidth>o?0o?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]}))},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]);t(e.target).closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(r=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((r-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,r=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(r=this.originalPageY)),{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each((function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))}))},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,(function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))}))},drag:function(e,i,s){t.each(s.sortables,(function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,(function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,n=(this===o||!this._intersectsWith(this.containerCache)||!t.contains(o.element[0],this.element[0]))&&n}))),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,(function(){this.refreshPositions()})),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,(function(){this.refreshPositions()})))}))}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body");s=s.options;n.css("cursor")&&(s._cursor=n.css("cursor")),n.css("cursor",s.cursor)},stop:function(e,i,s){(s=s.options)._cursor&&t("body").css("cursor",s._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){i=t(i.helper),s=s.options,i.css("opacity")&&(s._opacity=i.css("opacity")),i.css("opacity",s.opacity)},stop:function(e,i,s){(s=s.options)._opacity&&t(i.helper).css("opacity",s._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,r=s.scrollParentNotHidden[0],a=s.document[0];r!==a&&"HTML"!==r.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+r.offsetHeight-e.pageY *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+r.cursor+" !important; }").appendTo(o)),r.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",r.zIndex)),r.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",r.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;0<=n;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!r.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(e),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?l&&c:o",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,o){i&&!n.forcePlaceholderSize||(o.height()&&(!n.forcePlaceholderSize||"tbody"!==s&&"tr"!==s)||o.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),o.width()||o.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(n.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),n.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each((function(){t(" ",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)}))},_contactContainers:function(e){for(var i,s,n,o,r,a,h,l,c,u=null,p=null,f=this.containers.length-1;0<=f;f--)t.contains(this.currentItem[0],this.containers[f].element[0])||(this._intersectsWith(this.containers[f].containerCache)?u&&t.contains(this.containers[f].element[0],u.element[0])||(u=this.containers[f],p=f):this.containers[f].containerCache.over&&(this.containers[f]._trigger("out",e,this._uiHash(this)),this.containers[f].containerCache.over=0));if(u)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(s=1e4,n=null,o=(l=u.floating||this._isFloating(this.currentItem))?"left":"top",r=l?"width":"height",c=l?"pageX":"pageY",i=this.items.length-1;0<=i;i--)t.contains(this.containers[p].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(a=this.items[i].item.offset()[o],h=!1,e[c]-a>this.items[i][r]/2&&(h=!0),Math.abs(e[c]-a)this.containment[2]&&(s=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(n=this.containment[3]+this.offset.click.top)),i.grid&&(e=this.originalPageY+Math.round((n-this.originalPageY)/i.grid[1])*i.grid[1],n=!this.containment||e-this.offset.click.top>=this.containment[1]&&e-this.offset.click.top<=this.containment[3]?e:e-this.offset.click.top>=this.containment[1]?e-i.grid[1]:e+i.grid[1],e=this.originalPageX+Math.round((s-this.originalPageX)/i.grid[0])*i.grid[0],s=!this.containment||e-this.offset.click.left>=this.containment[0]&&e-this.offset.click.left<=this.containment[2]?e:e-this.offset.click.left>=this.containment[0]?e-i.grid[0]:e+i.grid[0])),{top:n-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():r?0:o.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():r?0:o.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay((function(){n===this.counter&&this.refreshPositions(!s)}))},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}for(this.fromOutside&&!e&&s.push((function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))})),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push((function(t){this._trigger("update",t,this._uiHash())})),this!==this.currentContainer&&(e||(s.push((function(t){this._trigger("remove",t,this._uiHash())})),s.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(e){this._delay((function(){t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]))||this.collapseAll(e)}))},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(e){var i,s;this.previousFilter||e.clientX===this.lastMousePosition.x&&e.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:e.clientX,y:e.clientY},i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget),i[0]===s[0]&&(s.is(".ui-state-active")||(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))))},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),e.children().each((function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()}))},_keydown:function(e){var i,s,n,o=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:i=this.previousFilter||"",n=o=!1,s=96<=e.keyCode&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),s===i?n=!0:s=i+s,i=this._filterMenuItems(s),(i=n&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i).length||(s=String.fromCharCode(e.keyCode),i=this._filterMenuItems(s)),i.length?(this.focus(e,i),this.previousFilter=s,this.filterTimer=this._delay((function(){delete this.previousFilter}),1e3)):delete this.previousFilter}o&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s=this,n=this.options.icons.submenu,o=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),i=o.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each((function(){var e=t(this),i=e.prev(),o=t("").data("ui-menu-submenu-caret",!0);s._addClass(o,"ui-menu-icon","ui-icon "+n),i.attr("aria-haspopup","true").prepend(o),e.attr("aria-labelledby",i.attr("id"))})),this._addClass(i,"ui-menu","ui-widget ui-widget-content ui-front"),(e=o.add(this.element).find(this.options.items)).not(".ui-menu-item").each((function(){var e=t(this);s._isDivider(e)&&s._addClass(e,"ui-menu-divider","ui-widget-content")})),o=(i=e.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay((function(){this._close()}),this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n;this._hasScroll()&&(s=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,n=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,i=e.offset().top-this.activeMenu.offset().top-s-n,s=this.activeMenu.scrollTop(),n=this.activeMenu.height(),e=e.outerHeight(),i<0?this.activeMenu.scrollTop(s+i):n",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var e,i,s,n="textarea"===(o=this.element[0].nodeName.toLowerCase()),o="input"===o;this.isMultiLine=n||!o&&this._isContentEditable(this.element),this.valueMethod=this.element[n||o?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))i=s=e=!0;else{i=s=e=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}}},keypress:function(s){if(e)return e=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||s.preventDefault());if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){if(s)return s=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=t("
      ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(e,i){var s,n;if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",(function(){t(e.target).trigger(e.originalEvent)}));n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),(s=i.item.attr("aria-label")||n.value)&&String.prototype.trim.call(s).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay((function(){this.liveRegion.html(t("
      ").text(s))}),100))},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay((function(){this.previous=n,this.selectedItem=s}))),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return(e=(e=e&&(e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)))&&e[0]?e:this.element.closest(".ui-front, dialog")).length?e:this.document[0].body},_initSource:function(){var e,i,s=this;Array.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay((function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;e&&(i||s)||(this.selectedItem=null,this.search(null,t))}),this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
      ").text(i.label)).appendTo(e)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=new RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,(function(t){return s.test(t.label||t.value||t)}))}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(i))}),100))}}),t.ui.autocomplete})),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},s=i[t]=i[t]||[];return-1==s.indexOf(e)&&s.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var s=i.indexOf(e);return-1!=s&&i.splice(s,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var s=0,n=i[s];e=e||[];for(var o=this._onceEvents&&this._onceEvents[t];n;){var r=o&&o[n];r&&(this.off(t,n),delete o[n]),n.apply(this,e),n=i[s+=r?0:1]}return this}},t})),function(t,e){"function"==typeof define&&define.amd?define("unipointer/unipointer",["ev-emitter/ev-emitter"],(function(i){return e(t,i)})):"object"==("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=e(t,require("ev-emitter")):t.Unipointer=e(t,t.EvEmitter)}(window,(function(t,e){function i(){}var s=i.prototype=Object.create(e.prototype);s.bindStartEvent=function(t){this._bindStartEvent(t,!0)},s.unbindStartEvent=function(t){this._bindStartEvent(t,!1)},s._bindStartEvent=function(e,i){var s=(i=void 0===i||!!i)?"addEventListener":"removeEventListener";t.navigator.pointerEnabled?e[s]("pointerdown",this):t.navigator.msPointerEnabled?e[s]("MSPointerDown",this):(e[s]("mousedown",this),e[s]("touchstart",this))},s.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},s.getTouch=function(t){for(var e=0;e.5;var n=this.colorGrid[e.toUpperCase()];this.updateCursor(n),this.setTexts(),this.setBackgrounds(),i||this.emitEvent("change",[e,t.hue,t.sat,t.lum])}},l.setTexts=function(){if(this.setTextElems)for(var t=0;t0&&s.attr("value",i)}$(".message-container").length&&setTimeout((function(){$(".message-container").fadeOut()}),3500),$("#upload").change((function(){!function(t){if(t.files&&t.files[0]){var e=new FileReader;e.onload=function(t){$("#appimage img").attr("src",t.target.result)},e.readAsDataURL(t.files[0])}}(this)})),$("#sortable").sortable({stop:function(){var e=$("#sortable").sortable("toArray",{attribute:"data-id"});$.post("".concat(t,"order"),{order:e})}}),$("#sortable").sortable("disable"),$("#main").on("mouseenter","#sortable.ui-sortable-disabled .item",(function(){$(this).siblings(".tooltip").addClass("active"),$(".refresh",this).addClass("active")})).on("mouseleave",".item",(function(){$(this).siblings(".tooltip").removeClass("active"),$(".refresh",this).removeClass("active")})),$("#config-buttons").on("mouseenter","a",(function(){$(".tooltip",this).addClass("active")})).on("mouseleave","a",(function(){$(".tooltip",this).removeClass("active")})),$(".searchform > form").on("submit",(function(t){"tiles"===$("#search-container select[name=provider]").val()&&t.preventDefault()})),$("#search-container").on("input","input[name=q]",(function(){var t=this.value,e=$("#sortable").children(".item-container");"tiles"===$("#search-container select[name=provider]").val()&&t.length>0?(e.hide(),e.filter((function(){return $(this).data("name").toLowerCase().includes(t.toLowerCase())})).show()):e.show()})).on("change","select[name=provider]",(function(){var t=$("#sortable").children(".item-container");if("tiles"===$(this).val()){$("#search-container button").hide();var e=$("#search-container input[name=q]").val();e.length>0?(t.hide(),t.filter((function(){return $(this).data("name").toLowerCase().includes(e.toLowerCase())})).show()):t.show()}else $("#search-container button").show(),t.show()})),$("#app").on("click","#config-button",(function(t){t.preventDefault();var e=$("#app"),i=e.hasClass("header");e.toggleClass("header"),i?($(".add-item").hide(),$(".item-edit").hide(),$("#app").removeClass("sidebar"),$("#sortable .tooltip").css("display",""),$("#sortable").sortable("disable")):($("#sortable .tooltip").css("display","none"),$("#sortable").sortable("enable"),setTimeout((function(){$(".add-item").fadeIn(),$(".item-edit").fadeIn()}),350))})).on("click","#add-item, #pin-item",(function(t){t.preventDefault(),$("#app").toggleClass("sidebar")})).on("click",".close-sidenav",(function(t){t.preventDefault(),$("#app").removeClass("sidebar")})).on("click","#test_config",(function(e){e.preventDefault();var s=$("#create input[name=url]").val(),n=$('#sapconfig input[name="config[override_url]"]').val();"string"==typeof n&&""!==n&&(s=n);var o={};o.url=s,$(".config-item").each((function(){var t=$(this).data("config");o[t]=$(this).val()})),o.id=$("form[data-item-id]").data("item-id"),o.password&&o.password===i&&(o.password=""),$.post("".concat(t,"test_config"),{data:o}).done((function(t){alert(t)})).fail((function(t){alert("Something went wrong: ".concat(t.responseText.substring(0,100)))}))})),$("#pinlist").on("click","a",(function(e){e.preventDefault();var i=$(this),s=i.data("id"),n=i.data("tag");$.get("".concat(t,"items/pintoggle/").concat(s,"/true/").concat(n),(function(t){var e=$(t).filter("#sortable").html();$("#sortable").html(e),i.toggleClass("active")}))})),$("#itemform").on("submit",(function(){var t=$('input[name="config[password]"]').first();t.length>0&&t.attr("value")===i&&t.attr("value","")}))}));var focusSearch=function(t){var e=document.querySelector('input[name="q"]');e&&(t.preventDefault(),e.focus())},openFirstNonHiddenItem=function(t){if(t.target===document.querySelector('input[name="q"]')&&"tiles"===document.querySelector("#search-container select[name=provider]").value){var e=document.querySelector('#sortable section.item-container:not([style="display: none;"]) a');"href"in e&&(t.preventDefault(),window.open(e.href))}},KEY_BINDINGS={"/":focusSearch,Enter:openFirstNonHiddenItem};document.addEventListener("keydown",(function(t){try{t.key in KEY_BINDINGS&&KEY_BINDINGS[t.key](t)}catch(t){}}));var EXPORT_FILE_NAME="HeimdallExport.json",EXPORT_API_URL="api/item";function triggerFileDownload(t,e){var i=document.createElement("a"),s=new Blob([e],{type:"text/plain"});i.href=URL.createObjectURL(s),i.download=EXPORT_FILE_NAME,i.click()}var exportItems=function(t){t.preventDefault(),fetch(EXPORT_API_URL).then((function(t){return 200!==t.status&&window.alert("An error occurred while exporting..."),t.json()})).then((function(t){var e=JSON.stringify(t,null,2);triggerFileDownload(EXPORT_FILE_NAME,e)}))},exportButton=document.querySelector("#item-export");exportButton&&exportButton.addEventListener("click",exportItems);var IMPORT_API_URL="api/item",APP_LOAD_URL="appload",updateStatus=function(t){var e,i=t.item,s=t.errors;console.log(i,s),e=0===s.length?'
    • Imported: '.concat(i.title,"
    • "):'
    • Failed: '.concat(i.title," - ").concat(s[0],"
    • "),document.querySelector(".import-status").innerHTML+=e};function clearStatus(){document.querySelector(".import-status").innerHTML=""}var postToApi=function(t,e){return fetch(IMPORT_API_URL,{method:"POST",cache:"no-cache",redirect:"follow",headers:{"Content-Type":"application/json","X-CSRF-TOKEN":e},body:JSON.stringify(t)})},getCSRFToken=function(){return document.querySelector('input[name="_token"]').value},mergeItemWithAppDetails=function(t,e){return{pinned:1,tags:[0],appid:t.appid,title:t.title,colour:t.colour,url:t.url,appdescription:t.appdescription?t.appdescription:e.description,website:e.website,icon:e.iconview,config:t.description?JSON.parse(t.description):null}},fetchAppDetails=function(t){return null===t||"null"===t?Promise.resolve({}):fetch(APP_LOAD_URL,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({app:t})}).then((function(t){return t.json()}))},importItems=function(t){t.forEach((function(t){var e=[];fetchAppDetails(t.appid).catch((function(){return e.push(new Error("Failed to find app id: ".concat(t.appid)))})).then((function(e){var i=mergeItemWithAppDetails(t,e),s=getCSRFToken();return postToApi(i,s)})).catch((function(){return e.push(new Error("Failed to create item: ".concat(t.title)))})).finally((function(){updateStatus({item:t,errors:e})}))}))},readJSON=function(t){return new Promise((function(e,i){try{var s=new FileReader;s.onload=function(t){var i=t.target.result;e(JSON.parse(i))},s.readAsText(t)}catch(t){i(new Error("Unable to read file"))}}))},openFileForImport=function(t){return clearStatus(),readJSON(t).catch((function(t){console.error(t)})).then(importItems)},fileInput=document.querySelector("input[name='import']"),importButtons=document.querySelectorAll(".import-button");fileInput&&importButtons&&(importButtons.forEach((function(t){t.addEventListener("click",(function(){var t=fileInput.files[0];t&&openFileForImport(t)}))})),fileInput.addEventListener("change",openFileForImport,!1));var REFRESH_INTERVAL_SMALL=5e3,REFRESH_INTERVAL_BIG=3e4,QUEUE_PROCESSING_INTERVAL=1e3,CONTAINER_SELECTOR=".livestats-container";function createQueue(){var t=[],e=!1;return document.addEventListener("visibilitychange",(function(){e=document.hidden})),setInterval((function(){0!==t.length&&!0!==e&&t.shift()()}),QUEUE_PROCESSING_INTERVAL),t}function getContainers(){return document.querySelectorAll(CONTAINER_SELECTOR)}function getQueueInterval(t,e){return t?REFRESH_INTERVAL_BIG:e?REFRESH_INTERVAL_SMALL:REFRESH_INTERVAL_BIG}function createUpdateJob(t,e){var i=t.getAttribute("data-id"),s="1"===t.getAttribute("data-dataonly");return function(){return fetch("get_stats/".concat(i)).then((function(t){if(t.ok)return t.json();throw new Error("Network response was not ok: ".concat(t.status))})).then((function(i){t.innerHTML=i.html;var n="active"===i.status;e&&setTimeout((function(){e.push(createUpdateJob(t,e))}),getQueueInterval(s,n))})).catch((function(t){console.error(t)}))}}var livestatContainers=getContainers();if(livestatContainers.length>0){var myQueue=createQueue();livestatContainers.forEach((function(t){createUpdateJob(t,myQueue)()}))} diff --git a/public/js/jquery-3.6.0.min.js b/public/js/jquery-3.6.0.min.js deleted file mode 100644 index c4c6022f..00000000 --- a/public/js/jquery-3.6.0.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0
      "))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
      ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
      "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("

      ")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("

      ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n) -}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
      ").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("
      ").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n; -this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
        ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
        ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
        ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
        ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
        ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
        ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"").addClass(this._triggerClass).html(o?t("").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t(""),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s)) -}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?""+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"",l=j?"
        "+(Y?h:"")+(this._isInRange(t,r)?"":"")+(Y?"":h)+"
        ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="
        "}for(T+="
        "+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"
        "+"",P=u?"":"",w=0;7>w;w++)M=(w+c)%7,P+="";for(T+=P+"",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="",W=u?"":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+""}Z++,Z>11&&(Z=0,te++),T+="
        "+this._get(t,"weekHeader")+"=5?" class='ui-datepicker-week-end'":"")+">"+""+p[M]+"
        "+this._get(t,"calculateWeek")(A)+""+(F&&!_?" ":L?""+A.getDate()+"":""+A.getDate()+"")+"
        "+(X?"
        "+(U[0]>0&&C===U[1]-1?"
        ":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="
        ",y="";if(o||!m)y+=""+a[e]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=""}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="
        "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
        ").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())} -},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
        ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
        "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
        "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog -},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
        ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
        "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
        "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
        ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
        ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("
        ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("
        ").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
        ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("
        "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
        ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
        ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("
        ").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("
        ").attr("role","tooltip"),s=t("
        ").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip}); \ No newline at end of file diff --git a/public/js/jquery.min.js b/public/js/jquery.min.js new file mode 100644 index 00000000..b5329e9a --- /dev/null +++ b/public/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.3 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.3",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
        "],col:[2,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="
        ",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
        ",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var s=!1;t(document).on("mouseup",function(){s=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!s){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,n=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return n&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),s=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,s=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
        ").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),l=t.pageX,h=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(l=this.originalPageX),"x"===a.axis&&(h=this.originalPageY)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)l=s.snapElements[d].left-s.margins.left,h=l+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,l-g>_||m>h+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(l-_),r=g>=Math.abs(h-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(l-m),r=g>=Math.abs(h-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0 -}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+h>r&&l>s+h,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&l>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],l=[],h=this._connectWith();if(h&&e)for(s=h.length-1;s>=0;s--)for(o=t(h[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&l.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(l.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=l.length-1;s>=0;s--)l[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,l,h,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,h=r.length;h>s;s++)l=t(r[s]),l.data(this.widgetName+"-item",a),c.push({item:l,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t(" ",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,l,h,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(l=this.items[s].item.offset()[a],h=!1,e[u]-l>this.items[s][r]/2&&(h=!0),n>Math.abs(e[u]-l)&&(n=Math.abs(e[u]-l),o=this.items[s],this.direction=h?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.leftthis.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():l?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():l?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(w){"use strict";w.ui=w.ui||{};w.ui.version="1.13.2";var o,i=0,r=Array.prototype.hasOwnProperty,h=Array.prototype.slice;w.cleanData=(o=w.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=w._data(i,"events"))&&e.remove&&w(i).triggerHandler("remove");o(t)}),w.widget=function(t,i,e){var s,o,n,r={},h=t.split(".")[0],a=h+"-"+(t=t.split(".")[1]);return e||(e=i,i=w.Widget),Array.isArray(e)&&(e=w.extend.apply(null,[{}].concat(e))),w.expr.pseudos[a.toLowerCase()]=function(t){return!!w.data(t,a)},w[h]=w[h]||{},s=w[h][t],o=w[h][t]=function(t,e){if(!this||!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},w.extend(o,s,{version:e.version,_proto:w.extend({},e),_childConstructors:[]}),(n=new i).options=w.widget.extend({},n.options),w.each(e,function(e,s){function o(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}r[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=o,this._superApply=n,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),o.prototype=w.widget.extend(n,{widgetEventPrefix:s&&n.widgetEventPrefix||t},r,{constructor:o,namespace:h,widgetName:t,widgetFullName:a}),s?(w.each(s._childConstructors,function(t,e){var i=e.prototype;w.widget(i.namespace+"."+i.widgetName,o,e._proto)}),delete s._childConstructors):i._childConstructors.push(o),w.widget.bridge(t,o),o},w.widget.extend=function(t){for(var e,i,s=h.call(arguments,1),o=0,n=s.length;o",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=w(e||this.defaultElement||this)[0],this.element=w(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=w(),this.hoverable=w(),this.focusable=w(),this.classesElementLookup={},e!==this&&(w.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=w(e.style?e.ownerDocument:e.document||e),this.window=w(this.document[0].defaultView||this.document[0].parentWindow)),this.options=w.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:w.noop,_create:w.noop,_init:w.noop,destroy:function(){var i=this;this._destroy(),w.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:w.noop,widget:function(){return this.element},option:function(t,e){var i,s,o,n=t;if(0===arguments.length)return w.widget.extend({},this.options);if("string"==typeof t)if(n={},t=(i=t.split(".")).shift(),i.length){for(s=n[t]=w.widget.extend({},this.options[t]),o=0;o
        "),i=e.children()[0];return w("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(I(s),I(o))?n.important="horizontal":n.important="vertical",u.using.call(this,t,n)}),r.offset(w.extend(l,{using:t}))})},w.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,o=i.width,n=t.left-e.collisionPosition.marginLeft,r=s-n,h=n+e.collisionWidth-o-s;e.collisionWidth>o?0o?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),w.ui.plugin={add:function(t,e,i){var s,o=w.ui[t].prototype;for(s in i)o.plugins[s]=o.plugins[s]||[],o.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var o,n=t.plugins[e];if(n&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(o=0;o").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=w.ui.safeActiveElement(this.document[0]);w(t.target).closest(e).length||w.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),w.ui.ddmanager&&(w.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(n=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(r=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((r-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,r=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((n-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,n=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(n=this.originalPageX),"x"===s.axis&&(r=this.originalPageY)),{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:o?0:this.offset.scroll.top),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:o?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),w.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),w.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),w.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=w.extend({},t,{item:i.element});i.sortables=[],w(i.options.connectToSortable).each(function(){var t=w(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=w.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,w.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,o){w.each(o.sortables,function(){var t=!1,e=this;e.positionAbs=o.positionAbs,e.helperProportions=o.helperProportions,e.offset.click=o.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,w.each(o.sortables,function(){return this.positionAbs=o.positionAbs,this.helperProportions=o.helperProportions,this.offset.click=o.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&w.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,o._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=o.offset.click.top,e.offset.click.left=o.offset.click.left,e.offset.parent.left-=o.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=o.offset.parent.top-e.offset.parent.top,o._trigger("toSortable",i),o.dropped=e.element,w.each(o.sortables,function(){this.refreshPositions()}),o.currentItem=o.element,e.fromOutside=o),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(o._parent),o._refreshOffsets(i),s.position=o._generatePosition(i,!0),o._trigger("fromSortable",i),o.dropped=!1,w.each(o.sortables,function(){this.refreshPositions()}))})}}),w.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=w("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&w("body").css("cursor",i._cursor)}}),w.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=w(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&w(e.helper).css("opacity",i._opacity)}}),w.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,o=!1,n=i.scrollParentNotHidden[0],r=i.document[0];n!==r&&"HTML"!==n.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+n.offsetHeight-t.pageY *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+n.cursor+" !important; }").appendTo(o)),n.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",n.zIndex)),n.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",n.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return w.ui.ddmanager&&(w.ui.ddmanager.current=this),w.ui.ddmanager&&!n.dropBehaviour&&w.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?l&&c:n",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===o?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),w("",i.document[0]).appendTo(t)):"tr"===o?i._createTrPlaceholder(i.currentItem,t):"img"===o&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!n.forcePlaceholderSize||(e.height()&&(!n.forcePlaceholderSize||"tbody"!==o&&"tr"!==o)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=w(n.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),n.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){w(" ",i.document[0]).attr("colspan",w(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,o,n,r,h,a,l,c=null,u=null,p=this.containers.length-1;0<=p;p--)w.contains(this.currentItem[0],this.containers[p].element[0])||(this._intersectsWith(this.containers[p].containerCache)?c&&w.contains(this.containers[p].element[0],c.element[0])||(c=this.containers[p],u=p):this.containers[p].containerCache.over&&(this.containers[p]._trigger("out",t,this._uiHash(this)),this.containers[p].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,o=(a=c.floating||this._isFloating(this.currentItem))?"left":"top",n=a?"width":"height",l=a?"pageX":"pageY",e=this.items.length-1;0<=e;e--)w.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(r=this.items[e].item.offset()[o],h=!1,t[l]-r>this.items[e][n]/2&&(h=!0),Math.abs(t[l]-r)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():n?0:o.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:o.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var o=this.counter;this._delay(function(){o===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function o(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(o("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(o("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=w(t.target),i=w(w.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){w.contains(this.element[0],w.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=w(t.target).closest(".ui-menu-item"),i=w(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=w(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,o=!0;switch(t.keyCode){case w.ui.keyCode.PAGE_UP:this.previousPage(t);break;case w.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case w.ui.keyCode.HOME:this._move("first","first",t);break;case w.ui.keyCode.END:this._move("last","last",t);break;case w.ui.keyCode.UP:this.previous(t);break;case w.ui.keyCode.DOWN:this.next(t);break;case w.ui.keyCode.LEFT:this.collapse(t);break;case w.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case w.ui.keyCode.ENTER:case w.ui.keyCode.SPACE:this._activate(t);break;case w.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=o=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,o=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=w(this),e=t.prev(),i=w("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+o),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=w(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!w.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(w.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(w.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,o,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=o=i=!0;else{s=o=i=!1;var e=w.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=w.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(o)return o=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=w("
          ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){w(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(w("
          ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==w.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=w("
          ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||w.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?w(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,o=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(w.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){o.xhr&&o.xhr.abort(),o.xhr=w.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(w("
          ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),w.extend(w.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(w.ui.autocomplete.escapeRegex(e),"i");return w.grep(t,function(t){return i.test(t.label||t.value||t)})}}),w.widget("ui.autocomplete",w.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});w.ui.autocomplete}); \ No newline at end of file diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 2ef62e14..12a026cd 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -114,8 +114,7 @@
          - - + @yield('scripts') diff --git a/resources/views/layouts/users.blade.php b/resources/views/layouts/users.blade.php index 5ef75868..8b4f6077 100644 --- a/resources/views/layouts/users.blade.php +++ b/resources/views/layouts/users.blade.php @@ -55,10 +55,8 @@
        - - - - + + @yield('scripts') diff --git a/storage/app/supportedapps.json b/storage/app/supportedapps.json index 88db7f22..84daa8cf 100644 --- a/storage/app/supportedapps.json +++ b/storage/app/supportedapps.json @@ -1 +1 @@ -{"appcount":375,"apps":[{"appid":"666a52d2389b1864d0c376ef7d3a84e9cc54edb8","name":"Ackee","website":"https://github.com/electerious/Ackee","license":"MIT License","description":"Self-hosted, Node.js based analytics tool for those who care about privacy. Ackee runs on your own server, analyzes the traffic of your websites and provides useful statistics in a minimal interface.","enhanced":false,"tile_background":"light","icon":"ackee.png","sha":"d3683e09f5dba0a2c5acb3b4dcae055f6837d23d"},{"appid":"140902edbcc424c09736af28ab2de604c3bde936","name":"AdGuard Home","website":"https://github.com/AdguardTeam/AdGuardHome","license":"GNU General Public License v3.0 only","description":"AdGuard Home is a network-wide software for blocking ads & tracking. After you set it up, it'll cover ALL your home devices, and you don't need any client-side software for that.\r\n\r\nIt operates as a DNS server that re-routes tracking domains to a \"black hole,\" thus preventing your devices from connecting to those servers. It's based on software we use for our public AdGuard DNS servers -- both share a lot of common code.","enhanced":true,"tile_background":"light","icon":"adguardhome.png","sha":"ed488a0993be8bff0c59e9bf6fe4fbc2f21cffb7"},{"appid":"653caf8bdf55d6a99d77ceacd79f622353cd821a","name":"Adminer","website":"https://www.adminer.org","license":"Apache License 2.0","description":"Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consists of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch and MongoDB.","enhanced":false,"tile_background":"light","icon":"adminer.svg","sha":"28ab6a65c96ce05b9c6aaaa73c643a83b87ad1e5"},{"appid":"317f16f137fe0fd9eaf67dd6e203e50c0c1bf319","name":"Airsonic","website":"https://airsonic.github.io","license":"GNU General Public License v3.0 only","description":"Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work.","enhanced":false,"tile_background":"dark","icon":"airsonic.png","sha":"90ef61a0cbc5d319b74567ef9140b7fc2b9989cf"},{"appid":"4a1349c03398a3e66f6efdf6395fb689d80f83fa","name":"AlarmPI","website":"https://github.com/bkbilly/AlarmPI","license":"MIT License","description":"AlarmPI is a home security system based on Raspberry PI. It supports wired sensors (PIR, Magnetic etc.) and wireless through MQTT or Hikvision.","enhanced":true,"tile_background":"dark","icon":"alarmpi.png","sha":"3544696e4939997b7a5e0606f6aad8894ef0c7ec"},{"appid":"9fe84adc4eb8248be3322c8754a0cf6219d122d6","name":"Alertmanager","website":"https://prometheus.io/docs/alerting/alertmanager","license":"Apache License 2.0","description":"The Alertmanager handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integrations such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts.","enhanced":false,"tile_background":"light","icon":"alertmanager.png","sha":"0629cd8d336db48d0ab01a71c6ad765268ec380e"},{"appid":"65f59ec6b1ecd6170d5044474043cca9560a8071","name":"AMP","website":"https://cubecoders.com/AMP","license":"Proprietary","description":"AMP is short for Application Management Panel. It's our next-generation server administration software built for both users, and service providers. It supports both Windows and Linux based servers and allows you to manage all your game servers from a single web interface.","enhanced":false,"tile_background":"light","icon":"amp.png","sha":"89159941ccea20ed6ee72c5a7856db11e7ee9888"},{"appid":"7779bfb41003301f1b395c0691002423773d68c1","name":"ArchiSteamFarm","website":"https://github.com/JustArchiNET/ArchiSteamFarm","license":"Apache License 2.0","description":"ASF is a C# application with primary purpose of idling Steam cards from multiple accounts simultaneously.","enhanced":true,"tile_background":"dark","icon":"archisteamfarm.png","sha":"49b0730720e68243dd66babcacced16dd8ad972e"},{"appid":"b74f349cf434a529c0fe8589315b5956a4562097","name":"ArchiveBox","website":"https://github.com/pirate/ArchiveBox","license":"MIT License","description":"The open-source self-hosted web archive. ArchiveBox takes a list of website URLs you want to archive, and creates a local, static, browsable HTML clone of the content from those websites (it saves HTML, JS, media files, PDFs, images and more).","enhanced":false,"tile_background":"light","icon":"archivebox.png","sha":"abc85e04ddf5f4e5a125e209245cd4c1ae2bfcd6"},{"appid":"5eef559f19eadb9593bafbd3ca6155dc6721a0d7","name":"ArchiveTeam Warrior","website":"https://www.archiveteam.org/index.php?title=ArchiveTeam_Warrior","license":"The Unlicense","description":"The Archive Team Warrior is a virtual archiving appliance. You can run it to help with the ArchiveTeam archiving efforts. It will download sites and upload them to their archive.","enhanced":false,"tile_background":"light","icon":"archiveteamwarrior.png","sha":"5df88f7b81586ddb802d452c505b2fae619322c7"},{"appid":"88dc19bddba6e23ec39f978777b5adc5784ca27a","name":"Argo CD","website":"https://argoproj.github.io/cd/","license":"Apache License 2.0","description":"Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.","enhanced":false,"tile_background":"dark","icon":"argocd.svg","sha":"d040df83847e75a8192e26ec06730ecc9045de2d"},{"appid":"a0f88a6334b03ff11dc56d1b627f122ccacb75ce","name":"AriaNg","website":"https://github.com/mayswind/AriaNg","license":"MIT License","description":"AriaNg is a modern web frontend making aria2 easier to use. AriaNg is written in pure html & javascript, thus it does not need any compilers or runtime environment. You can just put AriaNg in your web server and open it in your browser. AriaNg uses responsive layout, and supports any desktop or mobile devices.","enhanced":true,"tile_background":"dark","icon":"ariang.png","sha":"4afaa53f32568ccfb9ce2b2a6391c306a3db27c6"},{"appid":"4950589b19623304e3adb649d9eee6a3bf70c35b","name":"Artifactory","website":"https://jfrog.com/open-source","license":"MIT License","description":"Universal Repository Manager, OSS version","enhanced":true,"tile_background":"light","icon":"artifactory.png","sha":"916d921471eedd75eb016f539642c4c8e2adbb3d"},{"appid":"fa8a2fb9dfd946ec30d5e6b2ee69e24f8a252c5b","name":"Asrock Rack IPMI","website":"https://www.asrockrack.com/support/faq.de.asp?id=28","license":"Commercial","description":"Asrock Rack IPMI is an embedded server management technology by Asrock Rack.","enhanced":false,"tile_background":"light","icon":"asrockrackipmi.png","sha":"5061c764360a91c7f2827e079bf2bbdfaa2a1d3c"},{"appid":"6c6defee55d3919ddcc6ca1985984e305e971cb7","name":"Asuswrt","website":"https://www.asus.com/Networking-IoT-Servers/WiFi-Routers/All-series/","license":"MIT License","description":"Asuswrt is the firmware and web UI included on all Asus routers.","enhanced":false,"tile_background":"dark","icon":"asuswrt.png","sha":"d538776111b86233926835cf75fd1c18ec33d583"},{"appid":"4432738a5981dde89b94b751a0179c2fdae7b7cf","name":"Atlantis","website":"http://runatlantis.io","license":"Apache License 2.0","description":"A self-hosted golang application that listens for Terraform pull request events via webhooks.","enhanced":false,"tile_background":"light","icon":"atlantis.png","sha":"e3eb6f6709ef144676584ace82d925d386ba65cd"},{"appid":"c7ec3e2f2d9be6a4d313d2451184b08ade93ce47","name":"Audiobookshelf","website":"https://audiobookshelf.org","license":"GNU General Public License v3.0 or later","description":"Audiobookshelf is a self-hosted audiobook server for managing and playing your audiobooks.","enhanced":false,"tile_background":"dark","icon":"audiobookshelf.svg","sha":"6c26d587a5c66a952b075836a1794e2c335e990f"},{"appid":"34088ce0402f28fca7286fc2d833c0d68b0d28cf","name":"authentik","website":"https://goauthentik.io","license":"GNU General Public License v3.0 or later","description":"authentik is an open-source Identity Provider focused on flexibility and versatility. You can use authentik in an existing environment to add support for new protocols, implement sign-up/recovery/etc. in your application so you don't have to deal with it, and many other things.","enhanced":false,"tile_background":"light","icon":"authentik.svg","sha":"a1a09a62a9f9cd82095680f2596cc0a518dd5e14"},{"appid":"e8354374b262e6f1055e7412d11f24a164a50f79","name":"AVM Fritzbox","website":"https://avm.de","license":"GNU General Public License v2.0 only","description":"\"The\" Fritzbox, stylised as FRITZ!Box, is a series of residential gateway devices produced by the German company AVM GmbH. \r\nFRITZ!OS is the FRITZ!Box operating system and can be easily controlled via your browser. User-friendly menus, easy-to-understand wizards, and the optional advanced mode come in handy in all scenarios.","enhanced":false,"tile_background":"light","icon":"avmfritzbox.png","sha":"579e7567d7da6719ad6a1553afaa9abc9bd3227b"},{"appid":"47bf44c0ec908654f16bacf131107a5aac3ae7b4","name":"AWX","website":"https://github.com/ansible/awx","license":"Apache License 2.0","description":"AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is the upstream project for Tower, a commercial derivative of AWX.","enhanced":true,"tile_background":"dark","icon":"awx.svg","sha":"c9f7c92c713616480b658cde82208b3a33ae35b6"},{"appid":"808ff47f28ddce2652860f5da59a4c62a7e285dd","name":"Bacula","website":"https://www.bacula.org","license":"GNU Affero General Public License v3.0","description":"Bacula is a set of Open Source, computer programs that permit you (or the system administrator) to manage backup, recovery, and verification of computer data across a network of computers of different kinds.","enhanced":false,"tile_background":"light","icon":"bacula.png","sha":"55e77ec8914dcc56b1954a21a042d74b986eee9b"},{"appid":"2577aa56d31c9817a26e412e90d419f70ebc6353","name":"Baikal","website":"https://sabre.io/baikal","license":"GNU General Public License v3.0 only","description":"Baïkal is a lightweight CalDAV+CardDAV server. It offers an extensive web interface with easy management of users, address books and calendars. It is fast and simple to install and only needs a basic php capable server. The data can be stored in a MySQL or a SQLite database.","enhanced":false,"tile_background":"dark","icon":"baikal.png","sha":"5c04abe04e7906f8aea36577f0d1504aa08152ce"},{"appid":"bee3525621cf0e6eba6a30360edb25c79689d869","name":"Barcode Buddy","website":"https://github.com/Forceu/barcodebuddy","license":"GNU Affero General Public License v3.0","description":"Pass barcodes to Barcode Buddy. If already in the Grocys system, it will consume/add/open the product there.\r\nIf an unknown barcode is passed, the product name will be looked up and a corresponding product can be chosen in the Web UI.\r\nTags can be saved — if a new product contains the tag in the name, the product will be already preselected in the drop-down list.","enhanced":false,"tile_background":"light","icon":"barcodebuddy.png","sha":"bfbb13c6f400b440f32d75b3439eb122b0057568"},{"appid":"c07ac2e365e175d304c1cd409bcfc288ff18594f","name":"Bastillion","website":"https://www.bastillion.io","license":"GNU Affero General Public License v3.0 or later","description":"Bastillion is an open-source web-based SSH console that centrally manages administrative access to systems. A bastion host for administrators with features that promote infrastructure security, including key management and auditing.","enhanced":false,"tile_background":"dark","icon":"bastillion.png","sha":"e6b5d880b2e0a35484d3abb9bd6ed4b4ecc54b12"},{"appid":"085f0b437f9bf9c98bb68b745c8dcf323a7e0499","name":"Bazarr","website":"https://github.com/morpheus65535/bazarr","license":"GNU General Public License v3.0 only","description":"Bazarr is a companion application to Sonarr and Radarr. It manage and download subtitles based on your requirements. You defined your preferences by TV show or movies and Bazarr take care of everything for you.","enhanced":true,"tile_background":"dark","icon":"bazarr.png","config":{"type":"apikey","stat1":{"name":"missing series","url":":url:/api/episodes/wanted?apikey=:apikey:","key":"total","filter":"none","updateOnChange":"No"},"stat2":{"name":"missing movies","url":":url:/api/movies/wanted?apikey=:apikey:","key":"total","filter":"none","updateOnChange":"No"}},"sha":"7926f807d914abf0d165c8c3b92d967c620761d5"},{"appid":"8a846dca305866d821748c007cf6b64adf00ea22","name":"Bitwarden","website":"https://bitwarden.com","license":"GNU Affero General Public License v3.0","description":"Open source password management solutions for individuals, teams, and business organizations.","enhanced":false,"tile_background":"dark","icon":"bitwarden.svg","sha":"2a67c1eb11412b228577c993cf217fc866c66f04"},{"appid":"2d90dc53a735b852b3dfe664c991d24183b9484c","name":"BlueIris NVR","website":"https://blueirissoftware.com/","license":"Proprietary","description":"Video Management Software\r\nUse up to 64 cameras (webcams, network IP cams, analog cards, or your Windows PC desktop). Capture JPEG snapshots or movies in standard MP4, AVI, advanced DVR, or Windows Media file formats.","enhanced":true,"tile_background":"light","icon":"blueirisnvr.png","sha":"23db63e5b275e3ef2327f2ef9535952868c13e75"},{"appid":"091d3909d7e0bde850659125a13712c0122a6493","name":"Booksonic","website":"https://booksonic.org","license":"GPL","description":"Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also available on other platforms that have apps for subsonic.","enhanced":false,"tile_background":"dark","icon":"booksonic.png","sha":"4f9c86324a6a46e403cf8ee7545e5adb0c8d43ee"},{"appid":"348c49dd03dddd418929316668d2e67bf2d9ae88","name":"Bookstack","website":"https://www.bookstackapp.com","license":"MIT License","description":"BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information.","enhanced":true,"tile_background":"dark","icon":"bookstack.svg","sha":"3535aa06c2c6f1b4bb4f4bd61ffc102a986adbf4"},{"appid":"c7d8a6d722a1ec9a16fae165177c418d4fd63175","name":"Box","website":"https://box.com","license":"Commercial","description":"The company focuses on cloud content management and file sharing service for businesses.","enhanced":false,"tile_background":"dark","icon":"box.png","sha":"999df093b5bc2368c14ae06be71312e8437cbe93"},{"appid":"36cf09d76e7173b82ef23504aae37c05784b0215","name":"Cabot","website":"https://cabotapp.com","license":"MIT License","description":"Self-hosted watchdog for your websites and infrastructure.","enhanced":true,"tile_background":"light","icon":"cabot.png","sha":"ea42b83ff12dbc91846bd4461d78bd29cf12c430"},{"appid":"d0404064982ed19f24e76ca261e1fbb4d821c2a6","name":"CalibreWeb","website":"https://github.com/janeczku/calibre-web","license":"GNU General Public License v3.0","description":"Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.","enhanced":false,"tile_background":"dark","icon":"calibreweb.png","sha":"7edd0c3312991eb5038a9b301993aa9da8c7c6f0"},{"appid":"c20407dc14e5be5b31ee70f357cec88347e14853","name":"Cannery","website":"https://gitea.bubbletea.dev/shibao/cannery","license":"GNU Affero General Public License v3.0 or later","description":"The self-hosted firearm tracker website.\r\n\r\nEasy to Use: Cannery lets you easily keep an eye on your ammo levels before and after range day\r\nSecure: Self-host your own instance, or use an instance from someone you trust. Your data stays with you, period\r\nSimple: Access from any internet-capable device","enhanced":false,"tile_background":"dark","icon":"cannery.svg","sha":"c05e723d431b7aef13deb1000bb640960721913c"},{"appid":"9f2e2dd8217d1186f9ad484d91e009227efa5897","name":"Cardigann","website":"https://github.com/cardigann/cardigann","license":"MIT License","description":"A proxy server for adding new indexers to Sonarr, SickRage and other media managers","enhanced":false,"tile_background":"light","icon":"cardigann.png","sha":"bc33a93d5c5bab98e8f85b05e438eaceb257ebbb"},{"appid":"86c6a58798da154166de71097263f9c40804d636","name":"ChangeDetection.io","website":"https://changedetection.io","license":"Apache License 2.0","description":"Self-hosted change monitoring of web pages.\r\n\r\nKnow when web pages change! Stay ontop of new information!\r\n\r\nLive your data-life pro-actively instead of re-actively, do not rely on manipulative social media for consuming important information.","enhanced":false,"tile_background":"dark","icon":"changedetectionio.png","sha":"a00d472d7cf5ce8af9229b37263dc9a932b34ab9"},{"appid":"c5490738886244f3795807b7cd537fe34df0c274","name":"Channels DVR","website":"https://getchannels.com/dvr/","license":"Commercial","description":"Channels DVR Server runs on your computer or NAS device at home. There's no cloud to worry about. Your recordings and shows will always be available. Simply install Channels DVR Server on a device and Channels will magically see it from any TV or device you own.","enhanced":true,"tile_background":"dark","icon":"channelsdvr.svg","sha":"9dedb519ba07d73c982e8d8ce7b94ba7de239b1c"},{"appid":"ba15c0ff84b20ffe205935dbbf8ffb5f02648632","name":"Checkmk","website":"https://checkmk.com","license":"GNU General Public License v2.0 only","description":"Checkmk is a comprehensive Solution for IT Monitoring of applications, servers, and networks.","enhanced":false,"tile_background":"dark","icon":"checkmk.svg","sha":"e19412e31dc3350d03cccf964f3cd80d51ca8292"},{"appid":"d8a153c2cb84da8b2556b093d1f98659b89d7e26","name":"Chevereto","website":"https://chevereto.com","license":"GNU Affero General Public License v3.0 only","description":"Chevereto Free is a powerful and fast open source image hosting script that allows you to create your very own image hosting website in just minutes.","enhanced":false,"tile_background":"light","icon":"chevereto.png","sha":"36d27b675901547a2928927174c82ef0a386a887"},{"appid":"7799a0f63bdae67145c85519239860c8882f9a64","name":"Chronograf","website":"https://www.influxdata.com/time-series-platform/chronograf","license":"GNU Affero General Public License v3.0 or later","description":"Chronograf is an open-source web application designed to visualize\r\nmonitoring data and create alerting and automation rules.","enhanced":false,"tile_background":"dark","icon":"chronograf.png","sha":"26a32b40b860e0e63842363581b8e4e587b474b7"},{"appid":"e4b57a729acdf2e7eefcb9c3022796ed5fdb9aca","name":"Clarkson","website":"https://github.com/linuxserver/Clarkson","license":"MIT License","description":"Clarkson is a web-based dashboard application that gives you a neat and clean interface for logging your fuel fill-ups for all of your vehicles. The application has full multi-user support, as well as multiple vehicles per user. Whenever you fill-up your car or motorcycle, keep the receipt and record the data in Clarkson.","enhanced":false,"tile_background":"light","icon":"clarkson.png","sha":"76473b5600323b6c2a1aaa71eb0c7518cdd4878a"},{"appid":"4581fc009cf3e648c61a17a28e5764f5d034976c","name":"Clash","website":"https://github.com/Dreamacro/clash","license":"GNU General Public License v3.0 only","description":"A rule-based tunnel in Go.","enhanced":true,"tile_background":"light","icon":"clash.png","sha":"a3ea04fdb7b41603c196b33e7ba40aad5d6a4a7e"},{"appid":"6f968228bc1947fee1320a37c5b2429dfdbf8081","name":"Cloud CMD","website":"http://cloudcmd.io","license":"MIT License","description":"Cloud Commander a file manager for the web with console and editor. Will help you manage the server and work with files, directories and programs in browser from any computer, mobile or tablet.","enhanced":false,"tile_background":"dark","icon":"cloudcmd.png","sha":"685e5388778e819ab3adf67be074f46c605e9f8d"},{"appid":"f036f579066ad71bd653f5a6418dbede5b500370","name":"Cloudflare","website":"https://dash.cloudflare.com/","license":"Commercial","description":"Cloudflare DNS is an enterprise-grade authoritative DNS service that offers the fastest response time, unparalleled redundancy, and advanced security with built-in DDoS mitigation and DNSSEC.","enhanced":false,"tile_background":"dark","icon":"cloudflare.svg","sha":"4434f47ff1dccfa9b935a68e7485a10171f5c4e5"},{"appid":"e4475bc2121ed1ffd1e742c7c2521ca0f16cef93","name":"Cockpit","website":"https://cockpit-project.org","license":"GNU Lesser General Public License v2.1 only","description":"Cockpit is an interactive server admin interface. It is easy to use and very lightweight. Cockpit interacts directly with the operating system from a real Linux session in a browser.","enhanced":false,"tile_background":"dark","icon":"cockpit.png","sha":"f4b9706005a04ff8df78653ebd0b8081997d610f"},{"appid":"ca6a902fe117cd57f037f771998f6c6f35f87be2","name":"Cockpit CMS","website":"https://getcockpit.com","license":"MIT License","description":"Cockpit is an open source, self-hosted, headless and api-driven CMS. It's a simple content platform to manage any structured content.","enhanced":false,"tile_background":"light","icon":"cockpitcms.png","sha":"c009e397c56a3a5bffcc39a26fa55861a4fe7f36"},{"appid":"9eebc5964efd0e6656fe4f143474988bde6c9ef3","name":"Code server","website":"https://github.com/cdr/code-server","license":"MIT License","description":"code-server is VS Code running on a remote server, accessible through the browser.","enhanced":false,"tile_background":"light","icon":"codeserver.png","sha":"1cc504efd4cc517c9949a94a725441f80f26816b"},{"appid":"2ab436efba9e25585ac0ed6232c92fa57173a4aa","name":"CodiMD","website":"https://codimd.org","license":"GNU Affero General Public License v3.0","description":"CodiMD is a realtime, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.","enhanced":false,"tile_background":"light","icon":"codimd.png","sha":"5bc5a27853267f69357d1bc91b2fd331e40e0ccc"},{"appid":"03959669b24360f78cd9d5f092ac57a80074b3ac","name":"Concourse","website":"https://concourse-ci.org","license":"Apache License 2.0","description":"Concourse is an open-source continuous thing-doer.\r\n\r\nBuilt on the simple mechanics of resources, tasks, and jobs, Concourse presents a general approach to automation that makes it great for CI/CD.","enhanced":false,"tile_background":"light","icon":"concourse.png","sha":"5a2a8c29e16cf84bc5746912f4c27df1204453c1"},{"appid":"cfca44c2f5ed9c775cf5953ef3a3ab86eae6cb8a","name":"Confluence","website":"https://www.atlassian.com/software/confluence","license":"Commercial","description":"A shared workspace tool for documentation, planning and notes with powerful collaboration features and easy-to-use WYSIWYG editing.","enhanced":false,"tile_background":"dark","icon":"confluence.svg","sha":"da9016f20ecac9fce9202e60228699965b91990c"},{"appid":"8629d759d41163a10142fabb192a49dc33d4b959","name":"CouchPotato","website":"https://couchpota.to","license":"GNU General Public License v3.0 only","description":"Download movies automatically, easily and in the best quality as soon as they are released, via usenet or torrents.","enhanced":true,"tile_background":"dark","icon":"couchpotato.svg","sha":"d16aeff701e5d5f6661dcf0122dcf9394fdfd8df"},{"appid":"fef97bae9058a5beeacfc2ec9de3fec9c97969ec","name":"cPanel","website":"https://www.cpanel.net","license":"Proprietary","description":"cPanel & WHM is a suite of tools built for Linux OS that gives you the ability to automate web hosting tasks via a simple graphical user interface. Its goal — to make managing servers easier for you and managing websites easier for your customers.","enhanced":false,"tile_background":"light","icon":"cpanel.png","sha":"8da4e36fa950f3d9929c53f34a27ad3ff7fd89d4"},{"appid":"3d6a86d0b53584491e13b12173441f0b945307d2","name":"crowdsec","website":"https://crowdsec.net/","license":"MIT License","description":"CrowdSec is a free, modern & collaborative behavior detection engine, coupled with a global IP reputation network. It stacks on fail2ban's philosophy but is IPV6 compatible and 60x faster (Go vs Python), uses Grok patterns to parse logs and YAML scenario to identify behaviors. CrowdSec is engineered for modern Cloud / Containers / VM based infrastructures (by decoupling detection and remediation). Once detected you can remedy threats with various bouncers (firewall block, nginx http 403, Captchas, etc.) while the aggressive IP can be sent to CrowdSec for curation before being shared among all users to further improve everyone's security.","enhanced":false,"tile_background":"dark","icon":"crowdsec.png","sha":"cc965b4d99d51ae0e735458575c34a732b719edb"},{"appid":"e677af5c4f005d316f3a74b26b0134cfe5288033","name":"CryptPad","website":"https://cryptpad.fr","license":"GNU Affero General Public License v3.0 or later","description":"The Zero Knowledge, Self-Hosted Cloud. CryptPad is a private-by-design alternative to popular office tools and cloud services. All the content stored on CryptPad is encrypted before being sent, which means nobody can access your data unless you give them the keys (not even us).","enhanced":false,"tile_background":"light","icon":"cryptpad.png","sha":"e0184a7ae85b3630580bb5fa31e55183b2fef2bf"},{"appid":"ba8ed4dc9e438b22c9456a78a2c09652955be42c","name":"CUPS","website":"https://www.cups.org","license":"GNU General Public License v1.0 or later","description":"The standards-based, open source printing system developed by Apple for iOS®, iPadOS®, and macOS®. CUPS uses IPP Everywhere™ to support printing to local and network printers.","enhanced":false,"tile_background":"light","icon":"cups.svg","sha":"89a32d4659131e96b12e89bdb28e17c13b15e218"},{"appid":"f3319963720d2293ed504bb1f5c1c4a879147a34","name":"Dashdot","website":"https://getdashdot.com/","license":"MIT License","description":"Dash. (or Dashdot) is a modern server dashboard, running on the latest tech, designed with glassmorphism in mind. It is intended to be used for smaller VPS and private servers.","enhanced":false,"tile_background":"dark","icon":"dashdot.png","sha":"5d0f94065a29b773d0234e683d0f784e56379c03"},{"appid":"bc28bfa49a73fd2384cbecd6572ea72d0166aa28","name":"Deluge","website":"https://deluge-torrent.org","license":"GNU General Public License v3.0 only","description":"Deluge is a BitTorrent client written in Python. Deluge is cross-platform, using a front and back end architecture where libtorrent, a software library written in C++ which provides the application's networking logic, is connected to one of various front ends through the project's own Python bindings","enhanced":true,"config":{"auth_payload":{"method":"auth.login","id":1,"params":[":password:"]},"type":"apikey","stats":[{"name":"Queue","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.sizeleft","filter":"size","updateOnChange":"Yes","suffix":""},{"name":"Speed","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.speed","filter":"speed","updateOnChange":"Yes","suffix":""}],"stat1":{"name":"Queue","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.sizeleft","filter":"size","updateOnChange":"Yes","suffix":""},"stat2":{"name":"Speed","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.speed","filter":"speed","updateOnChange":"Yes","suffix":""}},"tile_background":"dark","icon":"deluge.svg","sha":"a35de4fe509f254d52a6f9bfb297dcdfd0255f6c"},{"appid":"3561ed8ae1660eadbe92128eedcff5e6f8e9280e","name":"Dillinger","website":"https://dillinger.io","license":"MIT License","description":"Dillinger is a cloud-enabled, mobile-ready, offline-storage compatible,\r\nAngularJS-powered HTML5 Markdown editor.","enhanced":false,"tile_background":"dark","icon":"dillinger.png","sha":"31a0873cff13ec58b8d729b46bb8ad2d54bc5f2c"},{"appid":"d8f39246e8c87704876f107fc4ca01c962abf53d","name":"DirectAdmin","website":"https://www.directadmin.com/","license":"Proprietary","description":"DirectAdmin is a graphical web-based web hosting control panel allowing administration of websites through a web browser. The software is configurable to enable standalone, reseller, and shared web hosting from a single instance. DirectAdmin also permits management of server tasks and upgrades to package software (such as Apache HTTP Server, PHP, and MySQL ) from within the control panel - simplifying server and hosting configuration.","enhanced":false,"tile_background":"dark","icon":"directadmin.svg","sha":"03ee57a37b17f55ce3d7c145e12c4e48d1edadee"},{"appid":"12764b8bb7cd332f7d4937851a2af2815df706ac","name":"Directus","website":"https://directus.io","license":"GNU General Public License v3.0 only","description":"Directus is a future-proof, open source, headless CMS to manage all your content in one place. It's elegant and easy user interface will enable you to craft powerfull content backend APIs in minutes.","enhanced":false,"tile_background":"dark","icon":"directus.png","sha":"7b9bc57245ca33420f1ad65ce429c926a0884558"},{"appid":"a17f1a47dbc391814d321ae33ad51c0c7695a08d","name":"DokuWiki","website":"https://www.dokuwiki.org","license":"GNU General Public License v2.0 only","description":"DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database.","enhanced":false,"tile_background":"dark","icon":"dokuwiki.png","sha":"701b523e48f2989fb2e3061f19bc8d0f5ccfd985"},{"appid":"17ea5305bc5cb99da61e121542864bb15e280f30","name":"Domoticz","website":"https://www.domoticz.com","license":"GNU General Public License v3.0 only","description":"Open source Home Automation System","enhanced":true,"tile_background":"dark","icon":"domoticz.png","sha":"4893b1af680483adc240ba6b3cd4ac4c4a1bec2a"},{"appid":"45468267c4cf4e7260419a2a7c24bab37dc5cbe9","name":"Double Commander","website":"https://doublecmd.sourceforge.io/","license":"GNU General Public License v2.0 or later","description":"Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.","enhanced":false,"tile_background":"dark","icon":"doublecommander.svg","sha":"560ac70f5f2f63f8874f76f43a4673167940bc3f"},{"appid":"176d99d897dbd7c02b1a1db4142054f74a76aa47","name":"Dozzle","website":"https://dozzle.dev","license":"MIT License","description":"Dozzle is a real-time log viewer for docker containers.","enhanced":false,"tile_background":"dark","icon":"dozzle.png","sha":"96a3bdfb32723bc9742363a9b8e34cb5c1713196"},{"appid":"1430fd26ed07651f08ab03098c8e6745701abf6a","name":"Drone","website":"https://github.com/drone/drone","license":"Apache License 2.0","description":"Drone is a Continuous Delivery system built on container technology. Drone uses a simple YAML configuration file, a superset of docker-compose, to define and execute Pipelines inside Docker containers.","enhanced":false,"tile_background":"light","icon":"drone.svg","sha":"42717ab152bddc89a5327e849bbf07d631129b8a"},{"appid":"ff96f6956d6ce73ca564a5843157a9849a8f1c58","name":"Droppy","website":"https://github.com/silverwind/droppy","license":"BSD Source Code Attribution","description":"droppy is a self-hosted file storage server with a web interface and capabilities to edit files and view media directly in the browser. It is particularly well-suited to be run on low-end hardware like the Raspberry Pi.","enhanced":false,"tile_background":"light","icon":"droppy.png","sha":"612d672ee02f3231b6d04cc98d134d4921f18b8c"},{"appid":"311aa8b0218a2cac6b81d9ed1bb7814531fbeb03","name":"Duet Web Control","website":"www.duet3d.com","license":"GNU General Public License v3.0 or later","description":"Duet3D is a manufacturer and maintainer of 3D and CNC control boards and firmware (RepRap Firmware). Their boards can be controlled via a lightweight web UI called Duet Web Control (DWC).","enhanced":true,"tile_background":"light","icon":"duetwebcontrol.png","sha":"f2ca8384b441d5e51a3dc1006ae8f140c99e3e4c"},{"appid":"9a5f55cd744dbbcb8b1cffdd748605565da9edce","name":"Duplicacy","website":"https://duplicacy.com","license":"Commercial","description":"Duplicacy is a new generation cross-platform cloud backup tool. Duplicacy backs up your files to many cloud storage locations with compression, client-side encryption, and the highest level of deduplication.\r\nFeature-Driven Design:\r\nIncremental backup - Only back up what has been changed\r\nFull snapshot - Although each backup is incremental, it must behave like a full snapshot for easy restore and deletion\r\nDeduplication - Identical files must be stored as one copy (file-level deduplication), and identical parts from different files must be stored as one copy (block-level deduplication)\r\nEncryption -Encrypt not only file contents but also file paths, sizes, times, etc.\r\nDeletion - Every backup can be deleted independently without affecting others\r\nConcurrent backup - Multiple clients can back up to the same storage at the same time\r\nBackup migration - All or selected backups can be migrated from one storage to another","enhanced":false,"tile_background":"dark","icon":"duplicacy.png","sha":"5b69ebbf7c7d88b59dca63bcf149e8a7a7a9afcc"},{"appid":"bc99430645db7c79e2901d65598bb8cf91f77b4e","name":"Duplicati","website":"https://www.duplicati.com","license":"GNU Lesser General Public License v2.1 only","description":"Free backup software to store backups online with strong encryption. Works with FTP, SSH, WebDAV, OneDrive, Amazon S3, Google Drive and many others.","enhanced":true,"tile_background":"dark","icon":"duplicati.png","sha":"f1586d174cbbe779472b05a346e37010f53e68e3"},{"appid":"dece05484839df110745b0a800297c33cc078287","name":"Element","website":"https://element.io","license":"Apache License 2.0","description":"All-in-one secure chat app for teams, friends and organisations. Keeps conversations in your control, safe from data-mining and ads. Talk to everyone through the open global Matrix network, protected by proper end-to-end encryption.","enhanced":false,"tile_background":"dark","icon":"element.png","sha":"594e67b829c6fdddb11955d7ee13e952c4b7687c"},{"appid":"3021fea57e9b932f14822d47e47d163f47812ef1","name":"Emby","website":"https://emby.media","license":"Proprietary","description":"Emby (formerly Media Browser) is a media server designed to organize, play, and stream audio and video to a variety of devices.","enhanced":true,"tile_background":"dark","icon":"emby.png","config":{"type":"apikey","stat1":{"name":"Movies","url":":url:emby/Items/Counts?api_key=:apikey:","key":"MovieCount","filter":"none","updateOnChange":"No","suffix":""},"stat2":{"name":"Series","url":":url:emby/Items/Counts?api_key=:apikey:","key":"SeriesCount","filter":"none","updateOnChange":"No","suffix":""}},"sha":"8c06b9dc08a01f7510355fdfb474000f1bc5f7ec"},{"appid":"226df5bc61e5f2e107911be546e20ef7f1397e07","name":"EmbyStat","website":"https://github.com/mregni/EmbyStat","license":"MIT License","description":"Multiplatform statistics server for Emby server.","enhanced":false,"tile_background":"dark","icon":"embystat.png","sha":"d9cb902fe5e1cdad529d0af101ff200248100bc8"},{"appid":"6b1df10bbb1575fb941f402500ccb516ac34b542","name":"ESPHome","website":"https://esphome.io","license":"MIT License","description":"ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.","enhanced":false,"tile_background":"light","icon":"esphome.png","sha":"fa62b7cc8d462d1a57bb26cd5a5debc48ba5f587"},{"appid":"0b0f769acf9c7ff5190df937cf4b57ec4036e56e","name":"Etherpad","website":"https://etherpad.org/","license":"Apache License 2.0","description":"Etherpad is a highly customizable open source online editor providing collaborative editing in really real-time.","enhanced":false,"tile_background":"dark","icon":"etherpad.png","sha":"bb2aafc6fdfea0fdec9d21fcc8b91b21fdb26690"},{"appid":"601c9ad5341b0ba351540520eabd0a6cb1526a86","name":"FileBot","website":"https://www.filebot.net","license":"Commercial","description":"FileBot is the ultimate tool for renaming and organizing your movies, TV shows and Anime. Match and rename media files against online databases, download artwork and cover images, fetch subtitles, write metadata, and more, all at once in matter of seconds. It's smart and just works.","enhanced":false,"tile_background":"dark","icon":"filebot.svg","sha":"1f152c107a112ec62742bf2c0c50c84cb83b8bfe"},{"appid":"ba05dd8e070851895ee6184eb9778cfa0753a490","name":"FileBrowser","website":"https://github.com/filebrowser/filebrowser","license":"Apache License 2.0","description":"filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.","enhanced":false,"tile_background":"dark","icon":"filebrowser.svg","sha":"3394274c805da4875610b0bf14160fdb94674440"},{"appid":"a3440558df5c42ea2fdaf402aa9624d5ee586515","name":"FileFlows","website":"https://fileflows.com","license":"Freemium","description":"Application that processes files using Flow based rules. Primarily designed to convert video files to specific formats automatically","enhanced":true,"tile_background":"dark","icon":"fileflows.png","sha":"d069f2578d166101a9e06cb318629a7c3835009f"},{"appid":"b8fa84fbe86d39557144410d201d466c53cb0c4e","name":"FileRun","website":"https://filerun.com","license":"Commercial","description":"FileRun is a self-hosted Google Drive alternative. It is a full featured web based file manager with an easy to use user interface. It is great for managing your photo, movie, audio collection, or sharing files with your family and friends.","enhanced":false,"tile_background":"light","icon":"filerun.svg","sha":"2e3e5815fc372edba15a88ddf75915724cc24853"},{"appid":"f798d73306e6c7b7145b163baf11d88f43c91527","name":"Firefly 3","website":"https://www.firefly-iii.org","license":"GNU General Public License v3.0 only","description":"\"Firefly III\" is a (self-hosted) manager for your personal finances. It can help you keep track of your expenses and income, so you can spend less and save more. Firefly III supports the use of budgets, categories and tags. It can import data from external sources and it has many neat financial reports available. (Taken from the README)","enhanced":false,"tile_background":"light","icon":"firefly.png","sha":"bc52f78310ed6dd7630cda76ceb7836bfb834e5e"},{"appid":"675e42556cab1552e279e17a1f2a363e334fd2f0","name":"Firefox Send","website":"https://send.firefox.com","license":"Mozilla Public License 2.0","description":"Firefox Send lets you share files with end-to-end encryption and a link that automatically expires. So you can keep what you share private and make sure your stuff doesn’t stay online forever.","enhanced":false,"tile_background":"light","icon":"firefoxsend.png","sha":"488d5bdcb766bd09fcf51d47135dac93719f3eff"},{"appid":"bbe5a51792acf2e90900e10d33bb02a86a50b6ff","name":"FlexGet","website":"https://www.flexget.com","license":"MIT License","description":"like sonarr and radarr etc. combined, but with integrations to trakt.tv etc. Actually very capable","enhanced":false,"tile_background":"dark","icon":"flexget.png","sha":"1d9d42524d2c6545c8ad1ca5781b2ea28d5d03f0"},{"appid":"ff0db992256ad5c44c979bf4be0234a919eccdc7","name":"Flood","website":"https://github.com/jfurrow/flood","license":"GNU General Public License v3.0 only","description":"A web UI for rTorrent with a Node.js backend and React frontend.","enhanced":false,"tile_background":"light","icon":"flood.png","sha":"c1808f0b6feecd076f4b6009c2cabb983e762030"},{"appid":"0619bf7cc62aeb10ccbf7566912d4d44bb42e7a5","name":"Focalboard","website":"https://www.focalboard.com","license":"Apache License 2.0","description":"Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.\r\nIt's a project management tool that helps define, organize, track and manage work across teams, using a familiar kanban board view.","enhanced":false,"tile_background":"light","icon":"focalboard.svg","sha":"1db7662ce076e1422b6f9418e1ce97a20d9a9e24"},{"appid":"d4f480701f176a366bb9175ce282f80d18da5122","name":"Folding@Home","website":"https://foldingathome.org","license":"Proprietary","description":"Folding@home is a project focused on disease research. The problems we’re solving require so many computer calcul­ations – and we need your help to find the cures!\r\nAccess the your F@H webUI directly from Heimdall.","enhanced":true,"tile_background":"dark","icon":"foldingathome.svg","sha":"9ab69768b367ef1e54c300b30b7e6c52476048d8"},{"appid":"4179f0ec44f292021561f0ef872892aaf604f670","name":"Fortinet FortiMonitor","website":"https://fortimonitor.forticloud.com","license":"Commercial","description":"FortiMonitor helps organizations modernize their performance-monitoring tools into a comprehensive digital experience monitoring platform to gain end-to-end visibility into the overall user experience. It doesn’t matter where the user resides or where the application is hosted.","enhanced":true,"tile_background":"light","icon":"fortinetfortimonitor.png","sha":"b119f8e238b07604af99d1ae1b3597ffcab9efb8"},{"appid":"3d258071fa9cd41a85627f6bf7fc6998c3a8f5cf","name":"Freenas","website":"https://www.freenas.org","license":"BSD-2-Clause","description":"FreeNAS is an embedded open source network-attached storage (NAS) operating system based on FreeBSD.","enhanced":true,"tile_background":"light","icon":"freenas.png","sha":"9143845d0b4624a8e26b698f6c6bd1ee7c72590c"},{"appid":"370f94c68bf709289a0193e0a5c83c6fbd1ac06e","name":"FreePBX","website":"https://www.freepbx.org/","license":"GNU General Public License v1.0 or later","description":"FreePBX is an open source community\r\nCompletely free to download and use, the power of FreePBX comes from a global community of developers who ensure it remains a high compatibility and customizable platform with all the key features needed to build a scalable business phone system on any budget.\r\n\r\nWith millions of installations worldwide and a very active development base, the FreePBX community continues to out-perform the telecom industry’s commercial efforts.","enhanced":false,"tile_background":"light","icon":"freepbx.png","sha":"0d53de427a89439c17cd3746ef7b8bc19b71d97c"},{"appid":"5c68de7acdaff4da4f680545bb51a847840c81da","name":"FreshRSS","website":"https://freshrss.org","license":"GNU Affero General Public License v3.0","description":"FreshRSS is a self-hosted RSS feed aggregator. It is lightweight, easy to work with, powerful and customizable.","enhanced":true,"tile_background":"dark","icon":"freshrss.svg","sha":"b64eed3e6ba6a5f19e625e8641456df2fc90c578"},{"appid":"d27d8db484c3e734262730b0673f158f1f88924d","name":"Frigate","website":"https://frigate.video/","license":"MIT License","description":"Frigate is an open source NVR built around real-time AI object detection. All processing is performed locally on your own hardware, and your camera feeds never leave your home.","enhanced":false,"tile_background":"light","icon":"frigate.svg","sha":"f25395f3b31fc32f928434744687acb533b3d16f"},{"appid":"36211c66ecd5984827673c89373ae184f06c000f","name":"Fronius","website":"https://www.fronius.com","license":"MIT License","description":"This app allows to monitor the electrical production of the photovoltaic panels connected to a Fronius inverter.\r\n\r\nThe enhanced app connects to the inverter API and shows the current production of the system, as well as the daily production.","enhanced":true,"tile_background":"dark","icon":"fronius.svg","sha":"8a7791f2fb65667c28467bff29de75a9999adf41"},{"appid":"7853f58e7245aa624ddec1f97d7b4c18ac0047c7","name":"Funkwhale","website":"https://funkwhale.audio","license":"GNU Affero General Public License v3.0 only","description":"Funkwhale is a community-driven project that lets you listen and share music and audio within a decentralized, open network.","enhanced":false,"tile_background":"light","icon":"funkwhale.svg","sha":"f26c47daec9176db985f751e2f67ca7614559f87"},{"appid":"c4745785181de931cfd5bd79294cb1687d82aea9","name":"Ghost","website":"https://ghost.org","license":"MIT License","description":"Fiercely independent, professional publishing. A fully open source, powerful platform for building and running modern publications, we power serious blogs, magazines and journalism from DuckDuckGo to OpenAI & Sky News.","enhanced":true,"tile_background":"light","icon":"ghost.png","sha":"150f1fdace314c2d9e48c2a16542c44228274ba7"},{"appid":"060b3b99f88e96085b4a68e095bc9e3d1d91e1bc","name":"Gitea","website":"https://gitea.io","license":"MIT License","description":"Gitea is a community managed fork of Gogs, lightweight code hosting solution written in Go and published under the MIT license.","enhanced":false,"tile_background":"dark","icon":"gitea.svg","sha":"9367839859b83454562a0dedf6eaea46947122ec"},{"appid":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044","name":"GitHub","website":"https://github.com","license":"MIT License","description":"GitHub brings together the world's largest community of developers to discover, share, and build better software.","enhanced":false,"tile_background":"light","icon":"github.svg","sha":"2142344091362df12eaba1ce71dcffae2ac27f24"},{"appid":"322f31631de66bcf71bd6c199b41606d516fe3f9","name":"GitLab","website":"https://gitlab.com","license":"MIT License","description":"From project planning and source code management to CI/CD and monitoring, GitLab is a single application for the entire DevOps lifecycle.","enhanced":true,"tile_background":"dark","icon":"gitlab.svg","sha":"7bd0ca8d1fb37021ffc92b0cacffeb265d8bc299"},{"appid":"8acd9f66ec707deda1345479909166aa1c31bdad","name":"Glances","website":"https://nicolargo.github.io/glances","license":"GNU Lesser General Public License v3.0 only","description":"Glances is a cross-platform monitoring tool which aims to present a large amount of monitoring information through a curses or Web based interface.","enhanced":false,"tile_background":"dark","icon":"glances.png","sha":"06c12bbb9bfd7839ba8e22d6166fb1ca36796dbc"},{"appid":"df505c6582933deef50ad5181747782f1f514713","name":"Gogs","website":"https://gogs.io","license":"MIT License","description":"A painless self-hosted Git service.","enhanced":false,"tile_background":"dark","icon":"gogs.png","sha":"d13fdfb5ee9cec86aaf529ccb4bb3f542bcf655d"},{"appid":"b3fdc0b49deb0e7db32311b64867b000409193e5","name":"Gotify","website":"https://gotify.net","license":"MIT License","description":"A self-hosted push notification service.","enhanced":false,"tile_background":"dark","icon":"gotify.png","sha":"f1a398a2e69050427261ca0e04f38f62ab3efa2e"},{"appid":"f519bce8b0ae84d8dbbc0a793bf6a180043be855","name":"Grafana","website":"https://grafana.com","license":"Apache License 2.0","description":"Data visualization & Monitoring with support for Graphite, InfluxDB, Prometheus, Elasticsearch and many more databases.","enhanced":false,"tile_background":"dark","icon":"grafana.svg","sha":"29551c5fdf968e4f43dcc016f58cba8350e4611f"},{"appid":"b1577ad1f7e68c2190f8c68885f945c855b0d5ea","name":"Grav","website":"https://getgrav.org","license":"MIT License","description":"Grav is a Fast, Simple, and Flexible, file-based Web-platform. There is Zero installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful Package Management System to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.","enhanced":false,"tile_background":"light","icon":"grav.png","sha":"d4405df18389204cc02565215a7c01483c841963"},{"appid":"6d88bccf40bf65b911fe79d78c7af98e382f0c1a","name":"Graylog","website":"https://www.graylog.org","license":"GNU General Public License v3.0 only","description":"Finally, all your log data available and accessible in one central location. Graylog is an open source log management platform.","enhanced":false,"tile_background":"dark","icon":"graylog.svg","sha":"15f3ea8e7d30d155435efee73c36d5e3fd7357cb"},{"appid":"c1292685cddb9472cece8e457c31fbf6446d5010","name":"Grocy","website":"https://grocy.info","license":"MIT License","description":"grocy is a web-based self-hosted groceries & household management solution for your home.","enhanced":false,"tile_background":"light","icon":"grocy.svg","sha":"9e0d4b84c27cf4565cb5f64e1e37338cde88364f"},{"appid":"1c772e7ff575c76274b2ab9f90d82b428029b50b","name":"Guacamole","website":"https://guacamole.apache.org","license":"Apache License 2.0","description":"Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.","enhanced":false,"tile_background":"dark","icon":"guacamole.png","sha":"ba0d694ab5050082479c6b152c2a28303e8619ed"},{"appid":"b96c7f74fe817b3fb2ea26bfefbf26efaffe6dea","name":"Handbrake","website":"https://handbrake.fr","license":"GNU General Public License v2.0 or later","description":"HandBrake is a tool for converting video from nearly any format to a selection of modern, widely supported codecs.\r\n\r\nThe GUI of the application is accessed through a modern web browser (no installation or configuration needed on client side) or via any VNC client.\r\n\r\nA fully automated mode is also available: drop files into a watch folder and let HandBrake process them without any user interaction.","enhanced":false,"tile_background":"dark","icon":"handbrake.png","sha":"cf7f321fac4776eae2a80282714117809e05d167"},{"appid":"b6ac1c3e3b1f6f4296faceeb0eaeda83d1f578a4","name":"HAProxy","website":"http://www.haproxy.org","license":"GNU General Public License v3.0 or later","description":"HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It is particularly suited for very high traffic web sites and powers quite a number of the world's most visited ones. Over the years it has become the de-facto standard opensource load balancer, is now shipped with most mainstream Linux distributions, and is often deployed by default in cloud platforms.","enhanced":false,"tile_background":"dark","icon":"haproxy.png","sha":"75d6da16b65372bc8e1e9677dd5c025c291368e1"},{"appid":"e347660d52d87798674d406f8c820aa07835b0be","name":"Harbor","website":"https://goharbor.io","license":"Apache License 2.0","description":"Harbor is an open source registry that secures artifacts with policies and role-based access control, ensures images are scanned and free from vulnerabilities, and signs images as trusted. Harbor, a CNCF Graduated project, delivers compliance, performance, and interoperability to help you consistently and securely manage artifacts across cloud native compute platforms like Kubernetes and Docker.","enhanced":false,"tile_background":"dark","icon":"harbor.svg","sha":"c0a167a624de7ce6e43f9ddf8e95239c4b6e62ea"},{"appid":"241e4d951466ee4a38bde6aa73f7c8f0fab3a3f2","name":"Hasura","website":"https://hasura.io","license":"Apache License 2.0","description":"Instantly make your data accessible over GraphQL.","enhanced":false,"tile_background":"light","icon":"hasura.svg","sha":"60e060c56c1e7fdaee152345803ba61b109fa5d7"},{"appid":"8fe021dbb159e76695ab080421f68fac90579b0c","name":"HDHomeRun","website":"https://www.silicondust.com","license":"Proprietary","description":"The DVR reimagined. Watch and Record all of your favorite live TV. Your way.","enhanced":true,"tile_background":"dark","icon":"hdhomerun.png","sha":"37b1772fc1d160098f8976089e6be773832d68e0"},{"appid":"355bf1cb47b9ff34cad71db2350056dfb2794c68","name":"Headphones","website":"https://github.com/rembo10/headphones","license":"GNU General Public License v3.0 only","description":"Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, µTorrent, Deluge and Blackhole.","enhanced":false,"tile_background":"dark","icon":"headphones.png","sha":"9c786b106f7bf68916d68177bebd78152ae3b26c"},{"appid":"2d97a1f26a2c0647566d6e0a1779a024607f9f1d","name":"Healthchecks","website":"https://healthchecks.io","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Instant alerts when your cron jobs fail silently.","enhanced":false,"tile_background":"light","icon":"healthchecks.png","sha":"40005b6ddc7143293f3cae8b7760bb61a009154b"},{"appid":"b2005b3bb19b3916425998c0edd72b97667ec1fc","name":"Heimdall","website":"https://heimdall.site/","license":"MIT License","description":"As the name suggests Heimdall Application Dashboard is a dashboard for all your web applications. It doesn't need to be limited to applications though, you can add links to anything you like.\r\nHeimdall is an elegant solution to organise all your web applications. It’s dedicated to this purpose so you won’t lose your links in a sea of bookmarks.\r\nWhy not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.","enhanced":true,"tile_background":"dark","icon":"heimdall.png","sha":"be75b2d1b62c83b8db8c7f8dd37a5eba38a3acab"},{"appid":"5c81a4f5ee23ebffa0724a22a040c54e6cb9d7c5","name":"HomeAssistant","website":"https://www.home-assistant.io","license":"Apache License 2.0","description":"Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.","enhanced":true,"tile_background":"dark","icon":"homeassistant.svg","sha":"53580b25cf28e06e914fe133cc50032cb8089ac4"},{"appid":"7d9fd30322f354d733c7c3b1b395f1655d12beb0","name":"Homebridge","website":"https://homebridge.io","license":"Apache License 2.0","description":"Homebridge is a lightweight NodeJS server you can run on your home network that emulates the iOS HomeKit API. It supports Plugins, which are community-contributed modules that provide a basic bridge from HomeKit to various 3rd-party APIs provided by manufacturers of \"smart home\" devices.\r\n\r\nSince Siri supports devices added through HomeKit, this means that with Homebridge you can ask Siri to control devices that don't have any support for HomeKit at all.","enhanced":true,"tile_background":"dark","icon":"homebridge.svg","sha":"bd7cc130c59547350c3d457d891546a0805ec19f"},{"appid":"8a30fca9ea5b46722cbdad24c7470a442718cac8","name":"Homer","website":"https://github.com/bastienwirtz/homer","license":"Apache License 2.0","description":"A very simple static homepage for your server.","enhanced":false,"tile_background":"dark","icon":"homer.svg","sha":"990c76392bc84c6f82abad1455badccb5c72129a"},{"appid":"e79bac4ca442f484164741d7d41ea4e2426b308e","name":"Hubitat","website":"https://hubitat.com","license":"Proprietary","description":"Hubitat is a home automation platform supporting z-wave, zigbee, and many other devices. It offers local administration and remote access.","enhanced":false,"tile_background":"dark","icon":"hubitat.png","sha":"3c822e0c421e74f0629546e5a08d78ab3033230c"},{"appid":"2403e3c8c1da513b11a77bf482cd494658695d05","name":"Huginn","website":"https://github.com/huginn/huginn","license":"MIT License","description":"Huginn is a system for building agents that perform automated tasks for you online. They can read the web, watch for events, and take actions on your behalf. Huginn's Agents create and consume events, propagating them along a directed graph. Think of it as a hackable version of IFTTT or Zapier on your own server.","enhanced":false,"tile_background":"dark","icon":"huginn.png","sha":"6893bed4a90d7c188552f4e0ccd8166bc8bace52"},{"appid":"13a2a3d6e668c91b77ccc436162118ce7568ee4e","name":"Icecast","website":"https://icecast.org","license":"GNU General Public License v2.0 only","description":"Icecast is a streaming media (audio/video) server which currently supports Ogg (Vorbis and Theora), Opus, WebM and MP3 streams.\r\nIt can be used to create an Internet radio station or a privately running jukebox and many things in between. It is very versatile in that new formats can be added relatively easily and supports open standards for communication and interaction.","enhanced":false,"tile_background":"dark","icon":"icecast.png","sha":"b3a9532f158505e78cb18de616f6e9c8ed846341"},{"appid":"d483256e2837a012106afa135d3e4ba1a03c8ddb","name":"Icinga Web","website":"https://icinga.com","license":"GNU General Public License v2.0 only","description":"Icinga Web 2 is a powerful PHP framework for web applications that comes in a clean and reduced design. It’s fast, responsive, accessible and easily extensible with modules.","enhanced":false,"tile_background":"light","icon":"icingaweb.svg","sha":"66e0096a5717f2316e79b5c3215520ee00ee969e"},{"appid":"2fa965004249898edbbd6030adfdb0ead5bc5f7c","name":"iDRAC","website":"https://dell.com","license":"Proprietary","description":"The Dell Remote Access Controller or DRAC is an out-of-band management platform on Dell servers.","enhanced":false,"tile_background":"dark","icon":"idrac.png","sha":"b520723bfd91c4687793d1db40e56343fb05e738"},{"appid":"ef49854fbbea334dbaf393d4b4ad9381cb931e91","name":"iLO","website":"https://www.hpe.com/us/en/servers/integrated-lights-out-ilo.html","license":"Proprietary","description":"HP Integrated Lights-Out, is an embedded server management technology by Hewlett-Packard ","enhanced":false,"tile_background":"light","icon":"ilo.svg","sha":"a31c72501f45b565f523ad5dad64017df63c3f6d"},{"appid":"5e1e914cba38acaa83d4e39139dadbec478fbb6e","name":"InfluxDB","website":"https://www.influxdata.com/products/influxdb","license":"MIT License","description":"InfluxDB is an open source time series platform. This includes APIs for storing and querying data, processing it in the background for ETL or monitoring and alerting purposes, user dashboards, and visualizing and exploring the data and more.","enhanced":false,"tile_background":"dark","icon":"influxdb.svg","sha":"a62e94f015dcb9d4cfa16a95719bb89449dcba6c"},{"appid":"c112604b5b33659f85dda854ac8bc271cb744b8a","name":"Infoblox","website":"https://infoblox.com","license":"Commercial","description":"The company focuses on managing and identifying devices connected to networks—specifically for the Domain Name System, Dynamic Host Configuration Protocol, and IP address management","enhanced":false,"tile_background":"dark","icon":"infoblox.svg","sha":"beead6c0a5aeb806f9fd28a08d21de3814165122"},{"appid":"44aae3efe784b1886f020103d8344287be143c58","name":"Invidious","website":"https://github.com/omarroth/invidious","license":"Apache License 2.0","description":"Self-hosted, Open Source YouTube Alternative","enhanced":false,"tile_background":"light","icon":"invidious.svg","sha":"9eadeffc0f26e9a40da1f9467bdb0b168c76b289"},{"appid":"f4a9130aed175372c50f1b36cbc740193aed5fdf","name":"Invoice Ninja","website":"https://www.invoiceninja.com","license":"Attribution Assurance License","description":"A feature-rich, easy to use, open source invoicing suite. You can use the hosted service or host it yourself.","enhanced":false,"tile_background":"dark","icon":"invoiceninja.png","sha":"2cc474dd1005dae5d7c25d67bb0e0ac7f53034f9"},{"appid":"e3e34703718888700cefb3c28a0e52cb6a903ff0","name":"ioBroker","website":"https://www.iobroker.net","license":"MIT License","description":"ioBroker is an integration platform for the Internet of Things, focused on Building Automation, Smart Metering, Ambient Assisted Living, Process Automation, Visualization and Data Logging","enhanced":false,"tile_background":"light","icon":"iobroker.png","sha":"4077ce9b29fbecdde8acfdce56dfbb96fba8b133"},{"appid":"dd62089241256d5f36415bf5ff40ed4cea29210f","name":"ISPConfig","website":"ispconfig.org","license":"BSD Source Code Attribution","description":"ISPConfig is an open source hosting control panel for Linux which is capable of managing multiple servers from one control panel. ISPConfig is licensed under the BSD license.","enhanced":false,"tile_background":"light","icon":"ispconfig.png","sha":"e36d39359c2a87d0782dfabd9a86593b9e6b87da"},{"appid":"9d24b65315557ddd848ba44b09191a6ab305966f","name":"Jackett","website":"https://github.com/Jackett/Jackett","license":"GNU General Public License v2.0 only","description":"Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar, DuckieTV, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software.","enhanced":false,"tile_background":"light","icon":"jackett.svg","sha":"43b92013c22bb5dba7da634febf7aa384f06886d"},{"appid":"917883dc82d936304725edacb6bf11e5cf537be6","name":"Jaeger","website":"https://www.jaegertracing.io","license":"Apache License 2.0","description":"Jaeger is a distributed tracing platform, which can be used for monitoring microservices-based distributed systems.","enhanced":true,"tile_background":"light","icon":"jaeger.svg","sha":"8b60b1dbd4a7d45bdff46aba631e94ce0ef1c65b"},{"appid":"af7b37e2841d9150f6abd5a936b32a1f681d6bda","name":"JDownloader","website":"http://jdownloader.org","license":"Creative Commons Attribution Non Commercial Share Alike 2.0 Generic","description":"JDownloader is a free, open-source download management tool with a huge community of developers that makes downloading as easy and fast as it should be.","enhanced":false,"tile_background":"dark","icon":"jdownloader.png","sha":"51697aba9ee1718436feeb8c6f18a5d8c51c0ede"},{"appid":"5c64032d583b4cf000188a68c373d41b8e1b34c1","name":"Jeedom","website":"https://www.jeedom.com/site/fr","license":"Open Source","description":"Open source Home Automation System","enhanced":false,"tile_background":"light","icon":"jeedom.png","sha":"a81b0c33b710746f70e473dd1bdad9fdee78a116"},{"appid":"3e0a7f109bd760b9474c78cb652e8c3e82669226","name":"Jellyfin","website":"https://jellyfin.github.io","license":"GNU General Public License v2.0 only","description":"Jellyfin is the Free Software Media System that puts you in control of managing and streaming your media. There are no strings attached, no premium licenses or features, and no hidden agendas.","enhanced":true,"tile_background":"dark","icon":"jellyfin.svg","sha":"eb2864a125d1fcb17e4b3bc07114ef89c75225f5"},{"appid":"0628c8d1a4868d6e6b994ae43a091f4e142ce642","name":"Jellyseerr","website":"https://github.com/Fallenbagel/jellyseerr","license":"MIT License","description":"Jellyseerr is a free and open source software application for managing requests for your media library. It is a a fork of Overseerr built to bring support for Jellyfin & Emby media servers!","enhanced":false,"tile_background":"dark","icon":"jellyseerr.png","sha":"dc2aefc4d2ed73014b2e612c2080f2a5244d5258"},{"appid":"d95b56ce41a2e1ac4cecdd398defd7414407cc08","name":"Jenkins","website":"https://jenkins.io","license":"MIT License","description":"Jenkins is an open source automation server with an unparalleled plugin ecosystem to support practically every tool as part of your delivery pipelines.","enhanced":true,"tile_background":"light","icon":"jenkins.svg","sha":"155914d502565db9da37b012f02c691a99c1485a"},{"appid":"3fb76ec47a9913f61e1bba0337af66ff0c59cc74","name":"Jira","website":"https://www.atlassian.com/software/jira","license":"Commercial","description":"A bug tracking and agile project management software with powerful collaboration features and easy-to-use WYSIWYG editing","enhanced":false,"tile_background":"light","icon":"jira.svg","sha":"2475a912cb714bd39d35ca08871f90e2a4da1d9c"},{"appid":"5640232c98c04a627fbdcc1cb26cd34a4a0088bc","name":"Jitsi","website":"https://jitsi.org","license":"Apache License 2.0","description":"Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.","enhanced":false,"tile_background":"light","icon":"jitsi.png","sha":"86fe4ea0951ea117153f17e0c72b4276837f8bd7"},{"appid":"1f87fdb388c8208f77da09b7507b59635fb7ddcb","name":"Joomla","website":"https://www.joomla.org","license":"GNU General Public License v2.0 or later","description":"Joomla! is the mobile-ready and user-friendly way to build your website.","enhanced":false,"tile_background":"light","icon":"joomla.png","sha":"16035755382d880041e2134ee6a2bff3aee4370d"},{"appid":"7d93500c86ae587b3d9f4bf1b8cec36f221c8183","name":"Jupyter","website":"https://jupyter.org","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Open source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.","enhanced":false,"tile_background":"light","icon":"jupyter.svg","sha":"fecb68899a96fd634626fc51864f77b5f0360fa3"},{"appid":"43036744dd731a810155d82144c286cae5cb8ca3","name":"Kanboard","website":"https://kanboard.org","license":"MIT License","description":"Kanboard is a free and open source Kanban project management software.","enhanced":false,"tile_background":"light","icon":"kanboard.png","sha":"0d0b3e4fb82c6d7db097e02f7d3125fea2b73931"},{"appid":"d1081e351fbebe0deb0c2867d5f731c8f9cc3fd8","name":"Keycloak","website":"https://www.keycloak.org","license":"Apache License 2.0","description":"Open Source Identity and Access Management.","enhanced":false,"tile_background":"dark","icon":"keycloak.svg","sha":"bcf46e471dde71f9dcbae78c44a7e099b1ab1aba"},{"appid":"80d4015f1f71198cb285a89daf9796ebde0b5c29","name":"Kibana","website":"https://www.elastic.co/products/kibana","license":"Apache License 2.0","description":"Kibana lets you visualise your Elasticsearch data and navigate the Elastic Stack.","enhanced":false,"tile_background":"light","icon":"kibana.png","sha":"1cae3bf76063a7551dde51ccedff08191b05cbc1"},{"appid":"e928abf116d933773b1e4e31445213f1f1b01609","name":"Kimai","website":"https://www.kimai.org","license":"GNU General Public License v3.0 only","description":"Kimai is a free open source timetracker. It tracks work time and prints out a summary of your activities on demand. Yearly, monthly, daily, by customer, by project, by action …","enhanced":false,"tile_background":"dark","icon":"kimai.png","sha":"121758f01d7ff488655ab5fd11ce0f2885a2b2a1"},{"appid":"dcd2c1d3cbc33b14e439da0d94c1451e70d7536e","name":"Kitana","website":"https://github.com/pannal/Kitana","license":"MIT License","description":"Kitana exposes your Plex plugin interfaces \"to the outside world\". It does that by authenticating against Plex.TV, then connecting to the Plex Media Server you tell it to, and essentially proxying the plugin UI. It has full PMS connection awareness and allows you to connect locally, remotely, or even via relay.","enhanced":false,"tile_background":"light","icon":"kitana.png","sha":"59ddc8694d18bd5f7ad43fac954b60059bd3e9ed"},{"appid":"8ac539a79155a0032834264ac3f6dbd38f1c812d","name":"Kodi","website":"https://kodi.tv","license":"GNU General Public License v1.0 or later","description":"Kodi (formerly known as XBMC) is an award-winning free and open source (GPL) software media player and entertainment hub that can be installed on Linux, OSX, Windows, iOS and Android, featuring a 10-foot user interface for use with televisions and remote controls.","enhanced":true,"tile_background":"dark","icon":"kodi.svg","sha":"ac946a378f6683b4643abdbd70a9cd151e38c48d"},{"appid":"6cd97a5fefab651371f821cb5167733112fbc536","name":"Komga","website":"https://komga.org","license":"MIT License","description":"Komga is a free and open source comics/mangas server.","enhanced":true,"tile_background":"dark","icon":"komga.svg","sha":"7a6eb62f1dc46ca324e4a644f1e16c1bf10c3777"},{"appid":"22b161d97fbf69f88c548fa1dc938f0840abfd58","name":"Kopia","website":"https://kopia.io","license":"Apache License 2.0","description":"Kopia is a simple, cross-platform tool for managing encrypted backups in the cloud. It provides fast, incremental backups, secure, client-side end-to-end encryption, compression and data deduplication.","enhanced":false,"tile_background":"light","icon":"kopia.png","sha":"d8843389c902cb483ab3b5515cfcc14737d10452"},{"appid":"556651b611ac6cb9876f54eb950084090e060846","name":"Krusader","website":"https://krusader.org","license":"GNU General Public License v3.0 only","description":"Krusader is an advanced twin panel (commander style) file manager for KDE Plasma and other desktops in the *nix world, similar to Midnight or Total Commander.","enhanced":false,"tile_background":"dark","icon":"krusader.svg","sha":"6c656638ba437c0d8f542bd1eebf6f77b83df3c2"},{"appid":"211e5bfaaa8f220a748e1e9ef8a2513cb391f651","name":"Kubernetes Dashboard","website":"https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard","license":"Apache License 2.0","description":"Kubernetes Dashboard is a general purpose, web-based UI for Kubernetes clusters. It allows users to manage applications running in the cluster and troubleshoot them, as well as manage the cluster itself.","enhanced":false,"tile_background":"dark","icon":"kubernetesdashboard.svg","sha":"4c6303a2639a2adbc65d03e3b19f4bd58e036424"},{"appid":"49eac3c78f71626d0364c2691336b2113daedf4c","name":"LazyLibrarian","website":"https://lazylibrarian.gitlab.io","license":"CNRI Python Open Source GPL Compatible License Agreement","description":"LazyLibrarian is a program to follow authors and grab metadata for all your digital reading needs.","enhanced":false,"tile_background":"dark","icon":"lazylibrarian.png","sha":"b83fbdb8010c895cc3d7a013b20c20b4af53ce5c"},{"appid":"48b8edcabb38cf25b257b7da1042eb8f19d16248","name":"LemonLDAP::NG","website":"https://lemonldap-ng.org/welcome","license":"GNU General Public License v2.0 or later","description":"LemonLDAP::NG is a complete and modular Web-SSO system that can run with\r\nreverse-proxies or directly on application webservers. It can be used in\r\nconjunction with OpenID-Connect, CAS and SAML systems as identity or\r\nservice provider. It can also be used as proxy between those federation\r\nsystems.\r\nIt manages both authentication and authorization and provides headers for\r\naccounting. So you can have a full AAA protection. Authorizations are built by\r\nassociating a regular expression and a rule. Regular expression is applied on\r\nthe requested URL and the rule calculates if the user is authorized.","enhanced":false,"tile_background":"light","icon":"lemonldapng.png","sha":"90920fb7a2a174434f04cf16f343fac560127fa0"},{"appid":"3efb63c16a70f296c1cdb7992bd621c26423da99","name":"LibreNMS","website":"https://www.librenms.org","license":"GNU General Public License v3.0 or later","description":"LibreNMS, a fully featured network monitoring system that provides a wealth of features and device support","enhanced":false,"tile_background":"dark","icon":"librenms.png","sha":"212220212a4d341023d47e9fbe93716f2697ca64"},{"appid":"3771bfd8b92b695b317391d4e685d13fc9a14433","name":"LibreSpeed","website":"https://github.com/librespeed/speedtest","license":"GNU Lesser General Public License v3.0 or later","description":"A Free and Open Source Speedtest for HTML5 and more.","enhanced":false,"tile_background":"light","icon":"librespeed.png","sha":"4414423b3eebc460f517ac46caa69c51baa7949f"},{"appid":"c015fff30a3dc43f5987079c0142437e3e757fd0","name":"Lidarr","website":"https://lidarr.audio","license":"GNU General Public License v3.0 only","description":"Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them.","enhanced":true,"tile_background":"dark","icon":"lidarr.svg","sha":"8b3aafbb5df05063dd249edf7a0060d5b1c06971"},{"appid":"c7eef6a399bb48a066d4e11fc577e896bc142cf3","name":"LinkAce","website":"https://www.linkace.org","license":"GNU General Public License v3.0 only","description":"LinkAce is a self-hosted archive to collect links of your favorite websites. Save articles to read them later, tools to use them in your next project, or historic content to archive it for the long term. LinkAce comes with a lot of features while keeping a clean and minimal interface.","enhanced":true,"tile_background":"dark","icon":"linkace.svg","sha":"438362a49e311f8d26df945755c72f44c760c745"},{"appid":"4c1738fdd3a5743e76bc256be5e112d3e4dd511d","name":"Lychee","website":"https://lycheeorg.github.io","license":"MIT License","description":"Self-hosted photo-management done right","enhanced":false,"tile_background":"light","icon":"lychee.png","sha":"8332bd771edd85adfe63a48e45e6218a56f07e1c"},{"appid":"aeabf6597d765c42d67abdc8c1918c8ec5b18cb8","name":"Mailcow","website":"https://mailcow.email","license":"GNU General Public License v3.0 only","description":"Mailcow is a Docker based email server which provides an elegant web interface for managing domains, mailboxes and more.","enhanced":false,"tile_background":"dark","icon":"mailcow.svg","sha":"0a63af9fa00c98bf5f20cc212c3f7ec05bf6badf"},{"appid":"1ec48781d2c87a9e6dc9ee99e5eff0ab5958df09","name":"Mailcow - SOGo","website":"https://sogo.nu","license":"GNU GPL/LGPL v2 and above","description":"SOGo is a fully supported and trusted groupware server with a focus on scalability and open standards.\r\n\r\nPart of the Mailcow stack.","enhanced":false,"tile_background":"dark","icon":"mailcowsogo.svg","sha":"08b0426af5dfdf331e26146d5ce9e542709ba1c1"},{"appid":"cffc32ba3ead25ff79a6f34e163b120cf68ab9e2","name":"Mailhog","website":"https://github.com/mailhog/MailHog","license":"MIT License","description":"MailHog is an email testing tool for developers:\r\n\r\n- Configure your application to use MailHog for SMTP delivery\r\n- View messages in the web UI, or retrieve them with the JSON API\r\n- Optionally release messages to real SMTP servers for delivery","enhanced":false,"tile_background":"light","icon":"mailhog.png","sha":"971de7cc0182c40ef620eee6bf314f23e29289b3"},{"appid":"042c8e5dba563bf592d67d024ff2d66c011a9a69","name":"Mainsail","website":"https://github.com/meteyou/mainsail","license":"GNU General Public License v3.0 only","description":"Mainsail is a lightweight & responsive web interface for the Klipper 3D printer firmware. It communicates with the Moonraker (Klipper-API) from Arksine.","enhanced":false,"tile_background":"light","icon":"mainsail.png","sha":"1486304f650d8d52e66114e3416a536702640734"},{"appid":"0efc652ff6792fef6190e3f066133e37a050e52a","name":"Mastodon","website":"https://joinmastodon.org","license":"GNU Affero General Public License v3.0","description":"Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones. On Mastodon, users can publish anything they want: links, pictures, text, video. All Mastodon servers are interoperable as a federated network (users on one server can seamlessly communicate with users from another one, including non-Mastodon software that implements ActivityPub)!","enhanced":false,"tile_background":"light","icon":"mastodon.svg","sha":"cd0b01138bc7c34386f3b02e6b30b41dbded9e4d"},{"appid":"b3e1424fb69ca08481b03ad9d81e95488421997f","name":"Mattermost","website":"https://mattermost.com","license":"MIT License","description":"Mattermost provides high trust collaboration and messaging solutions through an open source, community-powered approach. Enjoy all the productivity benefits of workplace messaging across web, mobile and PC, with unlimited archiving, search and integrations within IT-controlled private environments in public clouds, including AWS and Azure, as well as on-premise in private clouds and virtual or physical servers.","enhanced":false,"tile_background":"light","icon":"mattermost.png","sha":"67d3ecbf62cb31ca5b128e86c20de4cebfc9eda5"},{"appid":"6b9e062ff02ea610df64e9b0eca1c973faf1b51d","name":"Mayan EDMS","website":"https://gitlab.com/mayan-edms/mayan-edms","license":"Apache License 2.0","description":"Mayan EDMS is an open-source document management system. Its main purpose is to store, introspect, and categorize files, with a strong emphasis on preserving the contextual and business information of documents. It can also OCR, preview, label, sign, send, and receive thoses files. Other features of interest are its workflow system, role based access control, and REST API.","enhanced":false,"tile_background":"light","icon":"mayanedms.png","sha":"696ce01fbfd3f63708a277250db3ee8924f64bd1"},{"appid":"1ca09632db905908f09e8c8e6fe6d64b6798aaaa","name":"McMyAdmin","website":"https://www.mcmyadmin.com","license":"Proprietary","description":"McMyAdmin is the leading web control panel and administration console for Minecraft servers. McMyAdmin makes it easy for you to control your Minecraft servers via it's straight forward user interface and mobile apps.","enhanced":false,"tile_background":"dark","icon":"mcmyadmin.png","sha":"7cce241097c67a8f8ca5241b6b4b418d29ac5c97"},{"appid":"95fc71dc5b7a31e5a244df43f457a6eedc966ac9","name":"Mealie","website":"https://github.com/hay-kot/mealie","license":"MIT License","description":"Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor.","enhanced":false,"tile_background":"dark","icon":"mealie.png","sha":"9022a5c36c59f9ca505c824ec052731a05a677da"},{"appid":"67dcc2f0c9930fb08b0eaa39ad076264965b2bd6","name":"MediaWiki","website":"https://www.mediawiki.org/wiki/MediaWiki","license":"GNU General Public License v2.0 or later","description":"MediaWiki is a collaboration and documentation platform brought to you by a vibrant community.","enhanced":false,"tile_background":"light","icon":"mediawiki.png","sha":"0dfcd6eefc0d47e3c718821fe6c7bb36dd679144"},{"appid":"7209e12ecf01afc45db4ff41be3602a898cf77f8","name":"Medusa","website":"https://pymedusa.com","license":"GNU General Public License v3.0 only","description":"Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic: automatic torrent/nzb searching, downloading, and processing at the qualities you want.","enhanced":false,"tile_background":"dark","icon":"medusa.png","sha":"379b5569c0eb9802dc8f8f4bf6912f154dcefcf2"},{"appid":"ad35ad6e82ecf7b9f4e279795d3ef30a496d2a21","name":"Meraki","website":"https://meraki.com","license":"Commercial","description":"Cloud web portal for Meraki device management.","enhanced":false,"tile_background":"light","icon":"meraki.png","sha":"3aa0368727025c7e22d4ea96b9d44460d58e4f21"},{"appid":"4a0a491219ae93bc0848b0d05efbe250ace4049c","name":"Metabase","website":"https://www.metabase.com/","license":"GNU Affero General Public License v3.0","description":"The simplest, fastest way to get business intelligence and analytics to everyone in your company 😋","enhanced":false,"tile_background":"light","icon":"metabase.svg","sha":"43b905e262187b40c9fccccd7286286af894dcc3"},{"appid":"757ff43646cf978b954d695926049f0ce636e3df","name":"MineOS","website":"https://minecraft.codeemo.com","license":"GNU General Public License v3.0 only","description":"MineOS is a platform-independent server front-end to create, host and manage Minecraft servers with a few mouse clicks.","enhanced":false,"tile_background":"dark","icon":"mineos.png","sha":"4d87fdcd937bb0551566dc74ca4a79a2cc22c4c2"},{"appid":"f1a89a23921939fc4ea89777cf9c7d6c08679fde","name":"Miniflux","website":"https://miniflux.app","license":"Apache License 2.0","description":"Miniflux is a lightweight RSS feed reader app.","enhanced":true,"tile_background":"dark","icon":"miniflux.png","sha":"aef715da1ea343541a4ed8653ce0116a3dd6a579"},{"appid":"30747605e1f6faad5d1cedb2c7953d31ffad3fd4","name":"Minio","website":"https://www.minio.io","license":"Apache License 2.0","description":"Minio is an object storage server released under Apache License v2.0. It is compatible with Amazon S3 cloud storage service. It is best suited for storing unstructured data such as photos, videos, log files, backups and container / VM images.","enhanced":false,"tile_background":"light","icon":"minio.png","sha":"35bb97b9dc37055ce9ddd2b57039729a55c77062"},{"appid":"96d53734fc1bd54d848cd30f98069b90333b1bb3","name":"Monica","website":"https://www.monicahq.com","license":"GNU Affero General Public License v3.0 only","description":"Monica is an open-source web application to organize the interactions with your loved ones. We call it a PRM, or Personal Relationship Management. Think of it as a CRM for your friends or family.","enhanced":true,"tile_background":"light","icon":"monica.png","sha":"8c3b31be29f34ccc03dd279c9af17f9be0058845"},{"appid":"3568f62a517667d3dae77d47746d8382dd3b9f3b","name":"Monit","website":"https://mmonit.com/monit","license":"GNU Affero General Public License v3.0 or later","description":"Monit is a small Open Source utility for managing and monitoring Unix systems. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations.","enhanced":true,"tile_background":"dark","icon":"monit.png","sha":"9892bdaec1dd898ba00ba715eeae720f833bb589"},{"appid":"19bd1c6a4f62ecc721b771b42e71d2eaff67824e","name":"MotionEye","website":"https://github.com/ccrisan/motioneye","license":"GNU General Public License v3.0 only","description":"motionEye is a web-based frontend for motion.","enhanced":false,"tile_background":"light","icon":"motioneye.png","sha":"8d4b2495c7b6fa8096921f0f44a59e9f3e2fa9c4"},{"appid":"756e9d172c05c14d07ff2428e6a75d5885bf5ae0","name":"Munin","website":"http://munin-monitoring.org","license":"GNU General Public License v2.0 only","description":"Munin is a networked resource monitoring tool that can help analyze resource trends and \"what just happened to kill our performance?\" problems. It is designed to be very plug and play. A default installation provides a lot of graphs with almost no work.","enhanced":false,"tile_background":"light","icon":"munin.png","sha":"4b4cf411987c625573879ba64473bedbd430d1f9"},{"appid":"8962c794c6557b091455fdd5ad0d1fc7a266cfe7","name":"MusicBrainz","website":"https://musicbrainz.org","license":"GNU General Public License v2.0 only","description":"MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.","enhanced":false,"tile_background":"dark","icon":"musicbrainz.svg","sha":"b8595ddf2df84d7f4291b31f29eaac72eb6221d6"},{"appid":"1c7c1eebcd96285956627a1d10006a6756d9c2b4","name":"Mylar","website":"https://github.com/evilhero/mylar","license":"GNU General Public License v3.0 only","description":"Mylar is an automated Comic Book (cbr/cbz) downloader program heavily-based on the Headphones template and logic (which is also based on Sick-Beard).","enhanced":true,"tile_background":"dark","icon":"mylar.png","sha":"4975bec5a3a45d2c3a8565c9eb6905d1467a49dc"},{"appid":"b69a8d8e93fa412531b8ef117c50ce520d71cd5a","name":"N8n","website":"https://n8n.io","license":"Apache License 2.0","description":"n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source code, be available to self-host, and allow you to add your own custom functions, logic and apps. n8n's node-based approach makes it highly versatile, enabling you to connect anything to everything.","enhanced":false,"tile_background":"light","icon":"n8n.svg","sha":"91ba7d520e8c1c4ceee2283629421afd4c9d1e6f"},{"appid":"fe2d0a7a5b34951b6ec3c46184f1ed3eae19459d","name":"Nagios","website":"https://www.nagios.com/products/nagios-core","license":"GNU General Public License v2.0 only","description":"The open source industry standard in IT infrastructure monitoring and alerting.","enhanced":false,"tile_background":"light","icon":"nagios.png","sha":"49434f122f1bbbd8f1a44fdd278dd4f0988f6a0b"},{"appid":"0e0c78c72d4215bccbe4a8ad0c0234bfb9998b88","name":"NAS","website":"https://en.wikipedia.org/wiki/Network-attached_storage","license":"Commercial","description":"Network-attached storage (NAS) is a file-level computer data storage server connected to a computer network providing data access to a heterogeneous group of clients. NAS is specialized for serving files either by its hardware, software, or configuration.","enhanced":false,"tile_background":"light","icon":"nas.svg","sha":"70eb3d0ab191c15e55cea39ecf0a52d4a3581b36"},{"appid":"31e028553b33bf830e42d88a888ee1093e3dd591","name":"Navidrome","website":"https://www.navidrome.org","license":"GNU General Public License v3.0 only","description":"Navidrome is a self-hosted, open source music server and streamer. It gives you freedom to listen to your music collection from any browser or mobile device.","enhanced":true,"tile_background":"dark","icon":"navidrome.svg","sha":"6f0c83fb3b53b5e5fdc43569eebd05d5a22412f3"},{"appid":"c47466c999c3113a3291ab09cab20b0df630d8e8","name":"Nessus","website":"https://www.tenable.com/products/nessus","license":"Commercial","description":"Nessus is trusted by more than 27,000 organizations worldwide as one of the most widely deployed security technologies on the planet - and the gold standard for vulnerability assessment.","enhanced":true,"tile_background":"light","icon":"nessus.png","sha":"de34f84fac1250119584167a2a7e59a1bbbfa81f"},{"appid":"81bf08fbb240b662b17c0d837c5cb9f30a7e89e5","name":"Netatmo","website":"https://www.netatmo.com/en-us/weather","license":"Commercial","description":"With the Netatmo Smart Home Weather Station and its accessories, measure, analyse, and understand your indoor and outdoor environment to adapt your daily life and optimise your comfort at home.","enhanced":false,"tile_background":"light","icon":"netatmo.png","sha":"243c1eb1305b812edb76290f09d89ebe9a714f7c"},{"appid":"3f903351ae2408404930a6af98e669510149abbd","name":"Netboot","website":"https://netboot.xyz","license":"Apache License 2.0","description":"netboot.xyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool.","enhanced":false,"tile_background":"dark","icon":"netboot.png","sha":"6ba7f71f810ce88448a50e4ace32777f92b539ae"},{"appid":"b42bf8635b4e7c528339fd4e073ddc9fecf1e5a7","name":"NetBox","website":"https://github.com/netbox-community/netbox","license":"Apache License 2.0","description":"NetBox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers.","enhanced":false,"tile_background":"light","icon":"netbox.png","sha":"de87ec6f4e7ba59115d212815d237cd6b07480bc"},{"appid":"810d3926feac8c1bd3957fdac48b6c9475b932d0","name":"Netdata","website":"https://my-netdata.io","license":"GNU General Public License v3.0 only","description":"Unparalleled insights, in real-time, of everything happening on your systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms.","enhanced":true,"tile_background":"dark","icon":"netdata.svg","sha":"e538a52c5a44caf0a05f5b11adf4a336ccf59d8e"},{"appid":"13121fb95b2b5da427d75de170f479bc8e53ef09","name":"Netgear Orbi","website":"https://www.netgear.com/de/home/wifi/mesh/orbi/","license":"Commercial","description":"Netgear ORBI Dashboard","enhanced":false,"tile_background":"light","icon":"netgearorbi.png","sha":"eb9d46c532dddc1ffc70cd184de355797735456a"},{"appid":"26f4d706681b01c78c47bff7ea009845f9ed57ac","name":"Network UPS Tools","website":"https://networkupstools.org/","license":"GNU General Public License v2.0 or later","description":"The primary goal of the Network UPS Tools (NUT) project is to provide support for Power Devices, such as Uninterruptible Power Supplies, Power Distribution Units, Automatic Transfer Switches, Power Supply Units and Solar Controllers. NUT provides a common protocol and set of tools to monitor and manage such devices, and to consistently name equivalent features and data points, across a vast range of vendor-specific protocols and connection media types.","enhanced":false,"tile_background":"light","icon":"nut.png","sha":"2344aec130378e2e25b7415817ffe9af9aecd412"},{"appid":"f2baa52d02ca888455ce47823f47bf372d5eecb3","name":"Nextcloud","website":"https://nextcloud.com","license":"GNU Affero General Public License v3.0 only","description":"Nextcloud is an open source, self-hosted file share and communication platform. Access and sync your files, contacts, calendars and communicate and collaborate across your devices.","enhanced":true,"tile_background":"light","icon":"nextcloud.svg","config":{"type":"basic_auth","additional_headers":{"OCS-APIRequest":"true"},"stat1":{"name":"Total","url":":url:ocs/v1.php/cloud/users/:username:?format=json","key":"ocs.data.quota.total","filter":"size","updateOnChange":"No","suffix":""},"stat2":{"name":"Used","url":":url:ocs/v1.php/cloud/users/:username:?format=json","key":"ocs.data.quota.used","filter":"size","updateOnChange":"No","suffix":""}},"sha":"154ab558feaa115ad0f510e6cf68466566a890de"},{"appid":"90a7041cfbcecf6d11c2b8dfc599a07116d15ba6","name":"Nexus Repository Manager OSS 3.x","website":"https://www.sonatype.com/download-oss-sonatype","license":"Eclipse Public License 1.0","description":"The free artifact repository with universal format support.","enhanced":false,"tile_background":"dark","icon":"nexusrepositorymanageross3x.png","sha":"88d76759e0095dbe264c403f3b87e26ef9548e2d"},{"appid":"cbfad988a16a9fbcc1812bc206afcc1f73dd36de","name":"Nginx Proxy Manager","website":"https://nginxproxymanager.jc21.com","license":"MIT License","description":"This project comes as a pre-built docker image that enables you to easily forward to your websites running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt.","enhanced":true,"tile_background":"light","icon":"nginxproxymanager.png","sha":"51e2a10941cc278c6320ed13f32ff5a88f91d27b"},{"appid":"570ecf8de333013382f0dc93aa7faacbccdee575","name":"Nitter","website":"https://github.com/zedeus/nitter","license":"GNU Affero General Public License v3.0","description":"A free and open source alternative Twitter front-end focused on privacy.","enhanced":false,"tile_background":"dark","icon":"nitter.svg","sha":"ac318bfd55cd7c0ab3005c2fae0f626c3076d471"},{"appid":"1608962f5295ccc488f3103ea8df2c6d45c62c65","name":"Node-Red","website":"https://nodered.org","license":"Apache License 2.0","description":"Node-RED is a flow-based development tool for visual programming developed originally by IBM for wiring together hardware devices, APIs and online services as part of the Internet of Things. \r\n\r\nNode-RED provides a browser-based flow editor, which can be used to create JavaScript functions. Elements of applications can be saved or shared for re-use. The runtime is built on Node.js. The flows created in Node-RED are stored using JSON. Since version 0.14 MQTT nodes can make properly configured TLS connections","enhanced":false,"tile_background":"dark","icon":"nodered.png","sha":"ca015804621e0000c37c226de6f3baec4729f8bd"},{"appid":"b3d874a5d85233d394ed569fc8f67f4864993308","name":"NowShowing","website":"https://github.com/ninthwalker/NowShowing","license":"MIT License","description":"Generates an email and web page of Plex recently added content. NowShowing is the successor of the popular plexReport docker.","enhanced":false,"tile_background":"light","icon":"nowshowing.png","sha":"622598b6c65d8387749807cd4356f3e39c5384c2"},{"appid":"361f712137443a3d7f1047a4f470bcf0158cc6d6","name":"ntopng","website":"https://www.ntop.org","license":"GNU General Public License v3.0 or later","description":"ntopng is the next generation version of the original ntop, a network traffic probe that monitors network usage. ntopng is based on libpcap and it has been written in a portable way in order to virtually run on every Unix platform, MacOSX and on Windows as well.","enhanced":false,"tile_background":"light","icon":"ntopng.png","sha":"c7fd6d2a375b717f9f7d464aafea753807f7c1b2"},{"appid":"533dc2434d2aee76aac442ece4bcc94b53fd7246","name":"NxFilter","website":"https://nxfilter.org","license":"Commercial","description":"NxFilter is a free DNS filter for commercial and non-commercial purposes. It's light, fast and easy.","enhanced":false,"tile_background":"light","icon":"nxfilter.png","sha":"4c38368cd5b91f09176e485f4f128f36578a0a05"},{"appid":"31a7b1d936c4e8503bb446e5ff8ada669d1846bd","name":"Nzbget","website":"https://nzbget.net","license":"GNU General Public License v2.0 only","description":"NZBGet is a binary downloader, which downloads files from Usenet based on information given in nzb-files. NZBGet is written in C++ and is known for its extraordinary performance and efficiency.","enhanced":true,"tile_background":"dark","icon":"nzbget.png","sha":"801a745d02a0d17cd2788c5efd19adefe2b4b051"},{"appid":"a5b4faf84287a35c98adc76f2117aa10d1ea6eb8","name":"NZBHydra","website":"https://github.com/theotherp/nzbhydra2","license":"Apache License 2.0","description":"NZBHydra is a meta search for NZB indexers. It provides easy access to a number of raw and newznab based indexers. You can search all your indexers from one place and use it as an indexer source for tools like Sonarr, Radarr or CouchPotato.","enhanced":false,"tile_background":"light","icon":"nzbhydra.png","sha":"b89cbd0ff93e7a48e5d6b06f6ebdc1913c89f76d"},{"appid":"99be0df8034cbcd7b5dfb3290839f7db21c1acbb","name":"Octoprint","website":"https://octoprint.org","license":"GNU Affero General Public License v3.0","description":"OctoPrint is the snappy web interface for your 3D printer that allows you to control and monitor all aspects of your printer and print jobs, right from your browser.","enhanced":true,"tile_background":"dark","icon":"octoprint.png","sha":"ee4540754e48c0c99fe8b030bb65ecea23db07f6"},{"appid":"aeddfb31b642e8e30591a99b3b3c30b8a765be32","name":"Omada SDN Controller","website":"https://www.tp-link.com/us/omada-sdn","license":"No Limit Public License","description":"Omada’s Software Defined Networking (SDN) platform integrates network devices, including access points, switches and gateways, providing 100% centralized cloud management. Omada creates a highly scalable network—all controlled from a single interface. Seamless wireless and wired connections are provided, ideal for use in hospitality, education, retail, offices, and more.","enhanced":false,"tile_background":"dark","icon":"omadasdncontroller.png","sha":"2f030e1ce8990b45d8a3a394c6a11154100d4f0e"},{"appid":"57b25ceb94bd4c9ba9038ce17656f5ede9007e4c","name":"Ombi","website":"https://ombi.io","license":"GNU General Public License v2.0 only","description":"Ombi is a self-hosted web application that automatically gives your shared Plex or Emby users the ability to request content by themselves! Ombi can be linked to multiple TV Show and Movie DVR tools to create a seamless end-to-end experience for your users.","enhanced":true,"tile_background":"dark","icon":"ombi.png","sha":"cf1e703cac0fae98dd68e40335403203abd28a27"},{"appid":"fc4e407d69510b855b678aa4fba6083fbbfc5383","name":"OnlyOffice","website":"https://www.onlyoffice.com","license":"GNU Affero General Public License v3.0 or later","description":"ONLYOFFICE online editors for text documents, spreadsheets, and presentations with access to pro features and connect them to the platform of your choice with ready-to-use connectors: https://www.onlyoffice.com/download.aspx#connectors","enhanced":false,"tile_background":"light","icon":"onlyoffice.png","sha":"e707a83ee4b827376aabddaa7bbeba9e45115881"},{"appid":"c6a4fe0b25a74497e966f279f5186c99e5ce30e3","name":"openHAB","website":"https://www.openhab.org","license":"Eclipse Public License 1.0","description":"The open Home Automation Bus (openHAB) project aims at providing a universal integration platform for all things around home automation. It is a pure Java solution, fully based on OSGi.","enhanced":false,"tile_background":"light","icon":"openhab.png","sha":"5eb46e1940f2220562e3d055b5b8cd105316f957"},{"appid":"ce88c5ed9d12b302762ca57ee01d494b96466946","name":"OpenMapTiler","website":"https://openmaptiles.org","license":"BSD 3-Clause Clear License","description":"Open-source maps made for self-hosting","enhanced":false,"tile_background":"dark","icon":"openmaptiler.png","sha":"d70497c2ece0508715534a8e7d0e7354eb9b11ff"},{"appid":"68a90a2f21aad7a09a3533a2c6ab9a03dc94af49","name":"openmediavault","website":"https://www.openmediavault.org","license":"GNU General Public License v3.0 only","description":"openmediavault is the next generation network attached storage (NAS) solution based on Debian Linux.","enhanced":true,"tile_background":"dark","icon":"openmediavault.svg","sha":"58e9ad1bd7c35db59bcfdab0cdeaba6575cb1828"},{"appid":"a42cc8d686807c59dc3858e14faf1028d766abf0","name":"OpenSpeedTest","website":"https://openspeedtest.com","license":"Creative Commons Attribution No Derivatives 3.0 Unported","description":"OpenSpeedTest is a 100% browser-based speed test application. It allows you to test your network connection speed on any device using various web browsers without installing any additional apps or plugins (no Flash or Java Needed!).","enhanced":false,"tile_background":"light","icon":"openspeedtest.png","sha":"3db29498141163612fdf4c76fa94d915d435f8eb"},{"appid":"bd1d7a45d17d62fd7db0c3f69e8a52661eedcc5b","name":"OpenSprinkler","website":"https://opensprinkler.com","license":"GNU General Public License v3.0 only","description":"OpenSprinkler is an open-source, web-based sprinkler / irrigation controller. It’s a drop-in replacement for conventional sprinkler controllers that are not web connected.","enhanced":false,"tile_background":"light","icon":"opensprinkler.png","sha":"c5a9d412ecaaa664c6aebcfc79c2cf890194d303"},{"appid":"5d53e53a12af92b47e8c11af1a399b23b67efb61","name":"openvscode-server","website":"https://github.com/gitpod-io/openvscode-server","license":"MIT License","description":"This project provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser. It's based on the very same architecture used by Gitpod or GitHub Codespaces at scale.","enhanced":false,"tile_background":"dark","icon":"openvscodeserver.png","sha":"5aa4f32e7db4b701a805883a5296c102c997a739"},{"appid":"9b934cf284d9b196f48b43876d3e01912797242c","name":"OpenWrt","website":"https://openwrt.org","license":"GNU General Public License v2.0 or later","description":"OpenWrt is an open source project based on Linux, primarily used on devices to route network traffic\r\n\r\n#please use tile background color #578","enhanced":false,"tile_background":"light","icon":"openwrt.png","sha":"fd8aef0640b4568dd4dcca886bffa1e02fcc1944"},{"appid":"b7dcd77029f908fb21195dd01e29882ca52d4f3a","name":"OPNsense","website":"https://opnsense.org","license":"BSD 2-Clause \"Simplified\" License","description":"OPNsense is open source, FreeBSD-based firewall and routing software developed by Deciso. It is a fork of pfSense, which in turn was forked from m0n0wall.","enhanced":false,"tile_background":"light","icon":"opnsense.png","sha":"28d8c34811f7c4b38528feecdf5f286e4abc7071"},{"appid":"46ede88d6d440af5d3c7cc70cabbab6722245acd","name":"Oscarr","website":"https://github.com/morpheus65535/oscarr","license":"GNU General Public License v3.0 only","description":"Oscarr is a dashboard application for users of Plex, Emby, Sonarr, Radarr and Bazarr. It gives you and overview of your media management software.","enhanced":false,"tile_background":"light","icon":"oscarr.svg","sha":"f7052f13f075a2458fba91bb216cab8327b0d485"},{"appid":"727706dbdf86b593f7be63c2fcca20718fd8caca","name":"osTicket","website":"https://osticket.com","license":"GNU General Public License v2.0 only","description":"osTicket is a widely-used open source support ticket system.","enhanced":false,"tile_background":"dark","icon":"osticket.png","sha":"603f10eeaf5a37778a257fb8a8a606692208fa59"},{"appid":"989fb18945a331b430fc284edfe6451aa760f8e6","name":"Overseerr","website":"https://github.com/sct/overseerr","license":"MIT License","description":"Overseerr is a free and open source software application for managing requests for your media library. It integrates with your existing services such as Sonarr, Radarr and Plex!","enhanced":true,"tile_background":"dark","icon":"overseerr.svg","sha":"bf1718eabc214e8a7b87261fd3b3955f9aa16d32"},{"appid":"c8a6ea616b768fefc48e461390de52d11d36cfb4","name":"oVirt","website":"https://ovirt.org","license":"Apache License 2.0","description":"oVirt is an open-source distributed virtualization solution, designed to manage your entire enterprise infrastructure. oVirt uses the trusted KVM hypervisor and is built upon several other community projects, including libvirt, Gluster, PatternFly, and Ansible.","enhanced":true,"tile_background":"dark","icon":"ovirt.svg","sha":"4dea5886c63be6a10a87acd1d8b845c98e1ea6f3"},{"appid":"668b5fcda851fe516fef14e82973beffe32f385a","name":"ownCloud","website":"https://owncloud.org","license":"GNU Affero General Public License v3.0 or later","description":"ownCloud is a free and open source file hosting service. It also supports extensions for online document editing, calendar and contact synchronization. It's a safe home for all your data.","enhanced":false,"tile_background":"dark","icon":"owncloud.png","sha":"65b812eec22cac06cb224262436bcc726f717f6a"},{"appid":"742fb53dbb4fac003115e7f6ec7c46f39c797040","name":"OwnPhotos","website":"https://github.com/hooram/ownphotos","license":"MIT License","description":"Self hosted wannabe Google Photos clone, with a slight focus on cool graphs","enhanced":false,"tile_background":"light","icon":"ownphotos.png","sha":"d0b3711f5620a1618d0d9ea010d0bf89a00d97e6"},{"appid":"710f91b65aed9bbc884898b19b6b4bb17ec5b32c","name":"Palo Alto Networks","website":"https://www.paloaltonetworks.com","license":"Commercial","description":"Palo Alto ore products are a platform that includes advanced firewalls and cloud-based offerings that extend those firewalls to cover other aspects of security.","enhanced":false,"tile_background":"light","icon":"paloaltonetworks.png","sha":"fabb5ace9a541cbd68ef5c887b490faab5948122"},{"appid":"6249c08eaa417b9918c69ed2d32ac88b386bc1b2","name":"Paperless","website":"https://github.com/danielquinn/paperless","license":"GPL-3.0","description":"Scan, index, and archive all of your paper documents","enhanced":false,"tile_background":"light","icon":"paperless.png","sha":"38b403304dd5c63638d010ecdf83b945f3e7ad9c"},{"appid":"23e9c842d2423902706ae92996554f6fbd92c502","name":"PaperlessNgx","website":"https://github.com/paperless-ngx/paperless-ngx","license":"GNU General Public License v3.0 only","description":"Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.","enhanced":true,"tile_background":"dark","icon":"paperlessngx.svg","sha":"2149aa83ee0b9ae0dae23e260287a5452473271d"},{"appid":"e782bdad5e303d079375eac9d6b2bc03ed4fb7c5","name":"Papermerge","website":"https://www.papermerge.com/","license":"Apache License 2.0","description":"Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS. Papermerge DMS on its turn will extract text data from the scanned documents using Optical Character Recognition (OCR) technology the index it and make it searchable. You will be able to quickly find any (scanned!) document using full text search capabilities.\r\n\r\nPapermerge is perfect tool to manage documents in PDF, JPEG, TIFF and PNG formats.","enhanced":false,"tile_background":"dark","icon":"papermerge.svg","sha":"8b71c56ea9c410f4c615820b0c5fa8815f4ba0c9"},{"appid":"1194ad979d9724f6866d0d0f2347580a78a283cc","name":"PartKeepr","website":"https://partkeepr.org","license":"GNU General Public License v3.0 only","description":"PartKeepr is an inventory management software, primarily designed for electronic components.","enhanced":false,"tile_background":"light","icon":"partkeepr.png","sha":"49265c766dc8417ea67c890eb2b2286efc2bf8ae"},{"appid":"bf096d8f5ce86ff113f6cad2a36d565dc0f13ffc","name":"PeerTube","website":"https://joinpeertube.org","license":"GNU Affero General Public License v3.0 only","description":"PeerTube is an experimental decentralized federated video platform system that uses peer-to-peer technology to reduce load on individual servers.","enhanced":false,"tile_background":"light","icon":"peertube.png","sha":"77810eb827a0e5647cea667c3e0b6c454f308ed5"},{"appid":"f8ac7f280fe53cea71efe29c42f0d3bca430c02d","name":"pfSense","website":"https://www.pfsense.org","license":"Apache License 2.0","description":"pfSense is an open source firewall/router computer software distribution based on FreeBSD.","enhanced":false,"tile_background":"dark","icon":"pfsense.svg","sha":"d8a6d15900b010cd2dc0c2740f92deee091af032"},{"appid":"43784e464f66bfc0254a3bad48939f14a70c878e","name":"pgAdmin","website":"https://www.pgadmin.org","license":"PostgreSQL License","description":"pgAdmin is a feature rich open-source administration and development platform for PostgreSQL.","enhanced":false,"tile_background":"dark","icon":"pgadmin.png","sha":"9f10a4132859247241b29512b7e7963ed27d962f"},{"appid":"1d49c185b74e2b41addce38d2334000daf4c60d9","name":"Phoscon","website":"https://phoscon.de/en/app/doc","license":"BSD 4-Clause \"Original\" or \"Old\" License","description":"The Phoscon App is a powerful tool to configure and control small and larger smart light installations. Specializing in the popular wireless standard Zigbee, the Phoscon App supports a steadily growing number of lights, sensors and switches from various well-known manufacturers.","enhanced":false,"tile_background":"dark","icon":"phoscon.svg","sha":"65e2e6cba9513f2218e7bd52bdedaf2e6ce78ae0"},{"appid":"ec9dab93c7d9cba1c5171ed468dfee950b933c94","name":"Photonix","website":"https://photonix.org","license":"GNU Affero General Public License v3.0 only","description":"This is a photo management application based on web technologies. Run it on your home server and it will let you find what you want from your photo collection using any device. Smart filtering is made possible automatically by object recognition, location awareness, color analysis and other algorithms.","enhanced":false,"tile_background":"light","icon":"photonix.png","sha":"c558bd87f124b9ee0057f8e08a0f4797170e29ec"},{"appid":"f60f5b25d59c397989e3cd374f81cdd7710a4fca","name":"PhotoPrism","website":"https://photoprism.org","license":"GNU General Public License v3.0 only","description":"PhotoPrism is a server-based application for browsing, organizing and sharing your personal photo collection. It makes use of the latest technologies to automatically tag and find pictures without getting in your way. Say goodbye to solutions that force you to upload your visual memories to the cloud.","enhanced":true,"tile_background":"light","icon":"photoprism.png","sha":"08db94dfb53d55575650b8b8a081534c5624c48e"},{"appid":"d9946b11ca2139e9299705b734b94e3d3066d4ec","name":"Photoview","website":"https://photoview.github.io","license":"GNU Affero General Public License v3.0 or later","description":"Photoview is a simple and user-friendly photo gallery that's made for photographers and aims to provide an easy and fast way to navigate directories, with thousands of high-resolution photos.\r\n\r\nYou configure Photoview to look for photos and videos within a directory on your file system. The scanner automatically picks up your media and start to generate thumbnail images to make browsing super fast.\r\n\r\nWhen your media has been scanned they show up on the website, organised in the same way as on the filesystem.","enhanced":false,"tile_background":"dark","icon":"photoview.svg","sha":"aad167eccc34680bebe9b7cc3ce0f349a3094f8b"},{"appid":"db44aad188b5bbe570bd96e3e5a9e7f0e893bc90","name":"phpIPAM","website":"https://phpipam.net","license":"GNU General Public License v3.0 or later","description":"phpIPAM is an open-source web IP address management application. Its goal is to provide light, modern and useful IP address management. It is a php-based application with a MySQL database backend, using jQuery libraries, ajax and HTML5/CSS3 features.","enhanced":false,"tile_background":"light","icon":"phpipam.png","sha":"7250831b3bbf4d25ed2c7d6e6e79a8fb340d223e"},{"appid":"6a8263e6e3ad594a12e111f0f952e4cc57fe5077","name":"phpLDAPadmin","website":"http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page","license":"GNU General Public License v2.0 or later","description":"phpLDAPadmin (also known as PLA) is a web-based LDAP client. It provides easy, anywhere-accessible, multi-language administration for your LDAP server.\r\n\r\nIts hierarchical tree-viewer and advanced search functionality make it intuitive to browse and administer your LDAP directory. Since it is a web application, this LDAP browser works on many platforms, making your LDAP server easily manageable from any location.\r\n\r\nphpLDAPadmin is the perfect LDAP browser for the LDAP professional and novice alike. Its user base consists mostly of LDAP administration professionals.","enhanced":false,"tile_background":"light","icon":"phpldapadmin.png","sha":"5e28cc6266faa6dec9d56fa54469becf811cfca8"},{"appid":"51ca673ea8e89a868706fd309777a101ac63a409","name":"phpMyAdmin","website":"https://www.phpmyadmin.net","license":"GNU General Public License, version 2","description":"phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement.","enhanced":false,"tile_background":"light","icon":"phpmyadmin.png","sha":"27a196e07ed93545a80f573a99bd2ed583ed7290"},{"appid":"e7780295cba962fe2c4a2aa84c82794611b8942b","name":"Pi.Alert","website":"https://github.com/jokob-sk/Pi.Alert/","license":"GNU General Public License v3.0 only","description":"WIFI / LAN intruder detector.\r\n\r\nScan the devices connected to your WIFI / LAN and alert you the connection of unknown devices. It also warns if a \"always connected\" devices disconnects.","enhanced":false,"tile_background":"dark","icon":"pialert.png","sha":"825ffe5b6a873467a5df45d1b5e94a9791b00fde"},{"appid":"b897f0f558bc83256a49d5c7e8f1658d87cfe820","name":"PiAware","website":"https://github.com/flightaware/piaware","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Client-side package and programs for forwarding ADS-B data to FlightAware","enhanced":true,"tile_background":"light","icon":"piaware.png","sha":"593fe29a4d223d46fac48ac186de0940b5ab6a86"},{"appid":"b89920409bdce40e08ba1023480b0546061cd577","name":"Pi-hole","website":"https://pi-hole.net","license":"European Union Public License 1.2","description":"Pi-hole is a Linux network-level advertisement and internet tracker blocking application which acts as a DNS sinkhole, intended for use on a private network.","enhanced":true,"tile_background":"dark","icon":"pihole.svg","sha":"110b4bed78a5bf60b44c747b7d26d62a4df2ce84"},{"appid":"3c8ecb5a9c477237e32b3776922fce3fd6e8a514","name":"PiKVM","website":"https://pikvm.org/","license":"GNU General Public License v3.0 or later","description":"A very simple and fully functional Raspberry Pi-based KVM over IP that you can make with your own hands without any soldering!","enhanced":false,"tile_background":"light","icon":"pikvm.png","sha":"d4472b1b28dd766aecd20decc8d3b3e5c1e16a27"},{"appid":"c0f951b12d14c47e4e488294584808ff31747eea","name":"PiVPN","website":"https://www.pivpn.io","license":"MIT License","description":"The simplest way to setup and manage a VPN, designed for Raspberry Pi.","enhanced":false,"tile_background":"light","icon":"pivpn.png","sha":"78b6eb621d00322ad55686ac289856c041131082"},{"appid":"73821d23ad8bb436e7478fec8305ad0636c17d7a","name":"Piwigo","website":"piwigo.org","license":"GNU General Public License v2.0 only","description":"Piwigo is an open source photo galley software. Designed as an alternative to Picasa or Flickr it can be self-hosted or used as a service. It offers many plugins, and offers full photo management capabilities","enhanced":false,"tile_background":"light","icon":"piwigo.png","sha":"ac68ae216dd5c41d7a0ae53946e71c5d81bc2301"},{"appid":"7ba6bc2c0f5fbf27166c29bc5b39f6527fb27835","name":"Pleroma","website":"https://pleroma.social","license":"GNU Affero General Public License v3.0 or later","description":"Pleroma is a free, federated social networking server built on open protocols. It is compatible with GNU Social, Mastodon, and many other ActivityPub implementations.","enhanced":false,"tile_background":"dark","icon":"pleroma.png","sha":"bac454d8982160eb01b22a492e5795969bc5b08f"},{"appid":"96bace2f6616fad61930a4ca021809c00a7e9e2a","name":"Plesk","website":"https://www.plesk.com","license":"Proprietary","description":"Plesk is a commercial web hosting platform with a control panel that allows a server administrator to set up new websites, reseller accounts, e-mail accounts and DNS entries through a web-based interface.","enhanced":false,"tile_background":"light","icon":"plesk.png","sha":"c16300ed9ddaf136643f32cd17d68b2f272695fa"},{"appid":"aebda823a279b219476c565be863d83739999502","name":"Plex","website":"https://www.plex.tv","license":"Freemium","description":"Plex media server allows you to aggregate all your personal media and access it anywhere you go. Enjoy your own content on all your devices with Plex.","enhanced":true,"tile_background":"dark","icon":"plex.png","sha":"a2adcd1b7c59861f74fc283951495f7044491e08"},{"appid":"6dec25c0d43491eadaf519800e0dbf6adfe86f1a","name":"PlexRequests","website":"http://plexrequests.8bits.ca","license":"MIT License","description":"Simple automated way for users to request new content for Plex.","enhanced":false,"tile_background":"dark","icon":"plexrequests.png","sha":"9c9b3cfbaed21a4a4beee419030998b74fbe8908"},{"appid":"e5289e584b9daf86b4ee2b2b394696cdd99a07cf","name":"Plume","website":"https://joinplu.me","license":"GNU Affero General Public License v3.0","description":"Plume is a federated blogging engine based on ActivityPub. It is written in Rust, with the Rocket framework, and Diesel to interact with the database. The front-end uses Ructe templates, WASM and SCSS.","enhanced":false,"tile_background":"light","icon":"plume.png","sha":"e76ad4011ad20eba89ef6a93cbeed83ebf8d36ed"},{"appid":"07b796b3a10eaa8b6f485ed2379187a39400b459","name":"Portainer","website":"https://portainer.io","license":"zlib License","description":"Portainer is a simple management solution for Docker. Easily manage your Docker hosts and Docker Swarm clusters via Portainer web user interface.","enhanced":true,"tile_background":"dark","icon":"portainer.svg","sha":"dec280a9a04238ae205afb8b8f3f26d6fc658755"},{"appid":"a28abde6e5a823e9c7115a94d71c3fc628a0efd4","name":"Poste","website":"https://poste.io","license":"MIT License","description":"Full stack mailserver solution with SSL TLS support. POP3s, SMTP(s), IMAPs, RSPAMD, Clamav, Roundcube(HTTPS), SPF, DKIM with simple installation and web administration.","enhanced":false,"tile_background":"dark","icon":"Poste.png","sha":"bdb2c2ff52ec5ce2943ee8467c1279c3d6dc5216"},{"appid":"3d3221b2db3115d65e938a1c497f209256c6185f","name":"Printer","website":"https://en.wikipedia.org/wiki/Printer_(computing)","license":"Commercial","description":"A printer is a peripheral device which makes a persistent representation of graphics or text, usually on paper. Printers that have a network connection often include a built-in web server that lets you manage the printer from any browser on the network.","enhanced":false,"tile_background":"dark","icon":"printer.png","sha":"25e2a615ca4e98d50c8bb8f2140b457e990f3bce"},{"appid":"87ecbead58e42b5ab9e1a92ccc0b42075f4fba91","name":"Privatebin","website":"https://privatebin.info","license":"zlib/libpng License with Acknowledgement","description":"PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data.\r\n\r\nData is encrypted and decrypted in the browser using 256bit AES in Galois Counter mode.","enhanced":false,"tile_background":"light","icon":"privatebin.png","sha":"dde886b1df2528b447a68114d9c79be9a4ace54b"},{"appid":"91adc8832dfee8dea234877dad680682ab947980","name":"ProjectSend","website":"https://www.projectsend.org","license":"GNU General Public License v3.0 only","description":"ProjectSend is a self-hosted, free and open source, secure and user friendly file sharing software focusing on exchanging files between you and your clients.","enhanced":false,"tile_background":"light","icon":"projectsend.png","sha":"14bd805ea7cce460a82e274a1cece5f3f1191cec"},{"appid":"aad8f23c2fa06d46c52ae4e06c8d4bdac6074b8f","name":"Prometheus","website":"https://prometheus.io","license":"Apache License 2.0","description":"Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true.","enhanced":false,"tile_background":"light","icon":"prometheus.png","sha":"070ea4fbdd1cfa045a80ff6d8fb0e7a7df5dff71"},{"appid":"de6ff49c94538e6e13a77f75991141a4fe9af8bf","name":"Prowlarr","website":"https://prowlarr.com","license":"GNU General Public License v3.0 only","description":"Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).","enhanced":true,"tile_background":"dark","icon":"prowlarr.svg","sha":"6bbe26e5bf924ddd34ac0bb4a43430a0be2488db"},{"appid":"391f2b7f3fe853e1ea09723eeafc354fa291ab48","name":"Proxmox","website":"https://www.proxmox.com/en/","license":"GNU Affero General Public License v3.0 only","description":"Proxmox Virtual Environment is an open-source server virtualization environment. It allows deployment and management of virtual machines and containers","enhanced":true,"tile_background":"light","icon":"proxmox.svg","sha":"98ad9b1045c76a332b05f8500dae8ab476fe7041"},{"appid":"0ea6cd5e52e84ef9afd444f5693d09d216b10ba2","name":"PRTG","website":"https://www.paessler.com/prtg","license":"100 sensors free","description":"Monitor all systems, devices, traffic and applications of your IT infrastructure.","enhanced":true,"tile_background":"light","icon":"prtg.png","sha":"1b810e1f394ac51be691d3003383886bc7eca0d0"},{"appid":"1beb54ac8e91638c7a181fd04ca5a4a5ec5343c1","name":"PsiTransfer","website":"https://hub.docker.com/r/psitrax/psitransfer","license":"BSD with attribution","description":"A simple open source self-hosted file sharing app. Upload a file instantly anywhere around the world.","enhanced":false,"tile_background":"light","icon":"psitransfer.png","sha":"d7cd1ddc15a65108f9c89da617f596b835354420"},{"appid":"0a5cd6b94160a13583653d188b5083c3fa3cacdf","name":"Pterodactyl","website":"https://pterodactyl.io","license":"MIT License","description":"Pterodactyl is an open-source game server management panel built with PHP 7, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end-users.","enhanced":false,"tile_background":"light","icon":"pterodactyl.png","sha":"9067c8b7231714bc2e865dcd9d8997427a107ca7"},{"appid":"0e859100d4a94f55ca42b82db2dadce415aff7ad","name":"pyLoad","website":"https://pyload.net","license":"GNU General Public License v3.0 only","description":"Free and Open Source download manager written in Pure Python and designed to be extremely lightweight, fully customizable and remotely manageable","enhanced":false,"tile_background":"dark","icon":"pyload.png","sha":"4d95ac5fbde5facb56ea7d498b62d34b5e0043ae"},{"appid":"3ebd4dd8afe6308e392ccf09e3516eee99a1e8df","name":"qBittorrent","website":"https://www.qbittorrent.org","license":"GNU General Public License v2.0 only","description":"The qBittorrent project aims to provide an open-source software alternative to µTorrent.","enhanced":true,"tile_background":"dark","icon":"qbittorrent.svg","sha":"e4e9a2b23835f96582da71d499cd808412280771"},{"appid":"4095a83996a808dfa4ef0e283b08fa3684596bb4","name":"QNAP","website":"https://www.qnap.com","license":"commercial","description":"QNAP Systems, Inc. is a Taiwanese corporation that specializes in Network-attached storage (NAS) appliances used for file sharing, virtualization, storage management and surveillance applications.","enhanced":false,"tile_background":"light","icon":"qnap.png","sha":"2e5ece37991fbdc7c0d2dd3a73e77460756247a6"},{"appid":"d37a9628bc10a8816f3b679566d2505ab43b55a0","name":"RabbitMQ","website":"https://www.rabbitmq.com/","license":"Mozilla Public License 2.0","description":"RabbitMQ is a free, open-source and extensible message queuing solution. It is a message broker that understands AMQP (Advanced Message Queuing Protocol), but is also able to be used with other popular messaging solutions like MQTT. It is highly available, fault tolerant and scalable.","enhanced":true,"tile_background":"light","icon":"rabbitmq.svg","sha":"96d57ab095a576fc199732fcfe937a844d013f03"},{"appid":"8a5cd39a1a5dff323d63bbe45fffe0c9c03bd2e7","name":"Radarr","website":"https://radarr.video","license":"GNU General Public License v3.0 only","description":"Radarr is an independent fork of Sonarr reworked for automatically downloading movies via Usenet and BitTorrent.\r\n\r\nThe project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.","enhanced":true,"tile_background":"light","icon":"radarr.svg","config":{"type":"apikey","stat1":{"name":"Missing","url":":url:api/v3/movie?apikey=:apikey:","key":"","filter":"filter","filterBy":"hasFile","filterByValue":"false","updateOnChange":"no","suffix":""},"stat2":{"name":"Queue","url":":url:api/v3/queue?apikey=:apikey:","key":"totalRecords","filter":"none","updateOnChange":"no","suffix":""}},"sha":"b963e4564d05aa932e016e151fc7f284febe6b21"},{"appid":"10bde312e853977971f0fb1873afb70c713df2bf","name":"Rainloop","website":"https://www.rainloop.net","license":"GNU Affero General Public License v3.0","description":"Simple, modern & fast web-based email client","enhanced":false,"tile_background":"light","icon":"rainloop.png","sha":"e989a46e2cb6e67ca31b0fbf0fc857703430d448"},{"appid":"cb4fa9655f4c77e40e3a9c2a5e5841927fc7b8a6","name":"Rancher","website":"https://rancher.com","license":"Apache License 2.0","description":"Rancher is an open source project that provides a container management platform built for organizations that deploy containers in production.","enhanced":false,"tile_background":"dark","icon":"rancher.svg","sha":"8907f62e7bbc12e0a7cfaf1fe01cc50258ccd886"},{"appid":"8bfa46ba721763e4ee235d6a8caef46247735eda","name":"Raneto","website":"https://github.com/gilbitron/Raneto","license":"MIT License","description":"Raneto is a free, open, simple Markdown powered Knowledgebase for Node.js.","enhanced":false,"tile_background":"light","icon":"raneto.png","sha":"01991d90390575fb95e5953fbde98be874e8ce2b"},{"appid":"506c7a7e21b5c2b750eccf8fdf91f072a9826f52","name":"Rclone","website":"https://rclone.org","license":"MIT License","description":"Rclone (\"rsync for cloud storage\") is a command line program to sync files and directories to and from different cloud storage providers.","enhanced":false,"tile_background":"light","icon":"rclone.png","sha":"7c637eb900ed1a8ecfc23b4134e3fa61fa6128ae"},{"appid":"533ab349d29dba8f2ecc5a552ba8846a9453f82a","name":"Readarr","website":"https://readarr.com","license":"GNU General Public License v3.0 only","description":"Readarr is a ebook (and maybe eventually magazine/audiobook) collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new books from your favorite authors and will grab, sort and rename them.","enhanced":true,"tile_background":"dark","icon":"readarr.svg","sha":"9c110cf85bd784c9dc882d659d37a8f4918bc2fb"},{"appid":"8d6955fafc1996f6b6535739e8e2419d09e0d545","name":"Recalbox","website":"https://www.recalbox.com","license":"MIT License","description":"Recalbox allows you to re-play a variety of videogame consoles and platforms in your living room, with ease! Recalbox OS is free, open source and designed to let you create your very own Recalbox in no time! Use Raspberry Pi, ODROID or even PC (x86)!","enhanced":false,"tile_background":"dark","icon":"recalbox.png","sha":"2a2cf348c8f05ef04806cb88668dfefcdf6dbe1e"},{"appid":"fd3e5a20d3595a90e1b6d0243ab6e78ff18d68b4","name":"RedisInsight","website":"https://redis.com/redis-enterprise/redis-insight/","license":"Commercial","description":"RedisInsight is a visual tool that provides capabilities to design, develop and optimize your Redis application. Query, analyse and interact with your Redis data.","enhanced":false,"tile_background":"dark","icon":"redisinsight.svg","sha":"fd65caba9f0e87f3633754db69890b7226c095bf"},{"appid":"e7a69443c2470473fe7e5a90b049ec771472f6aa","name":"Requestrr","website":"https://github.com/darkalfx/requestrr","license":"MIT License","description":"Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat!","enhanced":false,"tile_background":"dark","icon":"requestrr.png","sha":"0af50b01f2e7292f37e126519e8a35d6f7223ff6"},{"appid":"891934b3a775769d929fabfaf93520db8205eaf6","name":"Resilio Sync","website":"https://www.resilio.com","license":"Proprietary","description":"Resilio Sync is a fast, reliable, and simple file sync and share solution, powered by P2P technology.","enhanced":false,"tile_background":"dark","icon":"resiliosync.png","sha":"4979cd5a10c9115ce95479b808961392662bea00"},{"appid":"c3fdfdc6801bd71a615317cf54a113b3b0bc0bf4","name":"Riot Web","website":"https://about.riot.im","license":"Apache License 2.0","description":"Communicate the way you want with Riot - a universal secure chat app entirely under your control.","enhanced":false,"tile_background":"light","icon":"riotweb.svg","sha":"5502761a3cbf463e3361868f62d2181ff8b71799"},{"appid":"eb7e7cd624a1170881103b23d78a4d6a9dc5536f","name":"Robonect","website":"www.robonect-shop.de","license":"No Limit Public License","description":"Robonect® Hx verbindet deinen Gardena / Husqvarna / Flymo / McCulloch Mähroboter mit deinem WLAN und sorgt so dafür, dass Du weltweit auf alle Einstellungen und Funktionen zu jeder Zeit zugreifen kannst - mit und ohne App!","enhanced":false,"tile_background":"light","icon":"robonect.png","sha":"cc1adc35a6bbb045616d53432a14269aee2b94b9"},{"appid":"404b6861a94932750a70d2779fd785f018d90e36","name":"RocketChat","website":"https://rocket.chat","license":"MIT License","description":"Open Source Slack like chat server","enhanced":false,"tile_background":"dark","icon":"rocketchat.png","sha":"066e46bb4d347755dafaf4703f296a95ebc6c8c3"},{"appid":"f54fdb78762ce2a47c25c0fb8508141d72e29777","name":"RompЯ","website":"https://fatg3erman.github.io/RompR","license":"Creative Commons Attribution Non Commercial Share Alike 4.0 International","description":"RompЯ is a music player with the emphasis on discovery - discovering more about the music you know, and discovering new music you don’t know yet. RompЯ is an interface that runs in a web browser on any device and controls a music player which can be on any other device. I recommend using Mopidy as the music player. When used with Mopidy and a Spotify Premium subscription RompЯ is a powerful Spotify client with many music discovery features.","enhanced":false,"tile_background":"dark","icon":"rompya.png","sha":"364bbc24468458fd8a7bf2806f26ba7f393c115d"},{"appid":"0faa0037bf071040588c082c0c5c8dee3e11f2cd","name":"Roundcube","website":"https://roundcube.net","license":"GNU General Public License v3.0 or later","description":"Roundcube webmail is a browser-based multilingual IMAP client with an application-like user interface. It provides full functionality you expect from an email client, including MIME support, address book, folder manipulation, message searching and spell checking.","enhanced":false,"tile_background":"light","icon":"roundcube.png","sha":"537de7714872cd6c6fa965ca3c05c9170b83b4a2"},{"appid":"77eb1db6cb81b3cb088d36ab7aae8f230dcfaa28","name":"Router","website":"https://en.wikipedia.org/wiki/Router_(computing)","license":"Commercial","description":"A router is a networking device that forwards data packets between computer networks.","enhanced":false,"tile_background":"light","icon":"router.svg","sha":"bbb9749b2e856f9667b36d723165014250b1d5dd"},{"appid":"5876529d5d47f91c435d9230576044bc4cad8547","name":"Rspamd","website":"https://rspamd.com","license":"Apache 2.0","description":"Fast, free and open-source spam filtering system.","enhanced":false,"tile_background":"dark","icon":"rspamd.png","sha":"79ae798f9e51dbf96d4b87e45fe3cf5daacc2617"},{"appid":"b0fab9d908b0feb45ae719849642031f157d56ae","name":"RSS-Bridge","website":"https://rss-bridge.github.io/rss-bridge/","license":"The Unlicense","description":"RSS-Bridge is free and open source software for generating Atom or RSS feeds from websites which don’t have one. It is written in PHP and intended to run on a Web server.","enhanced":false,"tile_background":"dark","icon":"rssbridge.png","sha":"28ed6176b6e9fd73dbde3852f41ae2c738698adc"},{"appid":"4bd81355b682b80389770b2d9a4e5a4c5685de34","name":"RSSHub","website":"https://github.com/DIYgod/RSSHub","license":"MIT License","description":"RSSHub is an open source, easy to use, and extensible RSS feed generator. It's capable of generating RSS feeds from pretty much everything.\r\n\r\nRSSHub delivers millions of contents aggregated from all kinds of sources, our vibrant open source community is ensuring the deliver of RSSHub's new routes, new features and bug fixes.\r\n\r\nRSSHub can be used with browser extension RSSHub Radar and mobile auxiliary app RSSBud (iOS) and RSSAid (Android)","enhanced":false,"tile_background":"light","icon":"rsshub.png","sha":"7200d3510261ad3b8f9ced879594febdda372088"},{"appid":"243338479393d415bba0b6a94f70db8dadd672db","name":"RStudio Server","website":"https://rstudio.com/products/rstudio/download-server","license":"GNU Affero General Public License v3.0","description":"RStudio Server provides a browser-based interface to the RStudio IDE for interacting with server-based deployments of R. R is a statistical programming language used by statisticians, analysts, and data scientists for for processing, modeling, and visualizing data.","enhanced":false,"tile_background":"light","icon":"rstudioserver.png","sha":"231a89162432a44976b8388d5534ca1f84e9004a"},{"appid":"eea19d4cce28c77d2a0c1449a508d6290d00f9dd","name":"Rundeck","website":"https://www.rundeck.com/open-source","license":"Apache License 2.0","description":"Rundeck is an open source automation service with a web console, command line tools and a WebAPI. It lets you easily run automation tasks across a set of nodes.","enhanced":false,"tile_background":"dark","icon":"rundeck.png","sha":"7f87f212f4de69dc9f11dad6eb19fc8e70db668f"},{"appid":"11f6ce44eb513a288ca4ef26cbbdb3fece2d6ec4","name":"RuneAudio","website":"http://www.runeaudio.com","license":"GNU General Public License v3.0 or later","description":"RuneAudio is a free and open source software that turns inexpensive, silent and low-consumption mini-PC into Hi-Fi music players.","enhanced":true,"tile_background":"dark","icon":"runeaudio.png","sha":"f6f19035e5d74f217e8881a5f4c4ddcbc640ec95"},{"appid":"fbf13ee99afeadddc4f73e1183fd1b52774b3474","name":"ruTorrent","website":"https://github.com/Novik/ruTorrent","license":"GNU General Public License v3.0 or later","description":"ruTorrent is a front-end for the popular Bittorrent client rtorrent.","enhanced":true,"tile_background":"dark","icon":"rutorrent.png","sha":"2860d752e88dcc02a477cb78d57a5162bc8e89de"},{"appid":"7aa898759f1d210aaa5edc8a184bfe5e1668b5bd","name":"SABnzbd","website":"https://sabnzbd.org","license":"GNU General Public License v2.0 or later","description":"SABnzbd is a multi-platform binary newsgroup downloader. The program works in the background and simplifies the downloading verifying and extracting of files from Usenet.","enhanced":true,"tile_background":"dark","icon":"sabnzbd.svg","config":{"type":"apikey","stat1":{"name":"Queue","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.sizeleft","filter":"none","updateOnChange":"Yes","suffix":""},"stat2":{"name":"Speed","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.speed","filter":"speed","updateOnChange":"Yes","suffix":""}},"sha":"c39fd7ff643eab9e2447b99169a484912de1da2a"},{"appid":"40892c1b428213c21516114ade1eaeb8fe26fc96","name":"Scrutiny","website":"https://github.com/AnalogJ/scrutiny","license":"MIT License","description":"Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates.","enhanced":false,"tile_background":"light","icon":"scrutiny.png","sha":"a27f0ae0a6b514344d748102370c92fa5b2445a9"},{"appid":"055bbb599e68faa20cba22098b4802152b33b763","name":"Seafile","website":"https://www.seafile.com","license":"GNU General Public License v2.0 only","description":"Seafile is an open source enterprise file hosting platform with high reliability and performance. Put files on your own server. Sync and share files across different devices, or access all the files as a virtual disk.","enhanced":false,"tile_background":"dark","icon":"seafile.png","sha":"67e3b51b7fd7a61122b67bcfaa65b148f993f5ca"},{"appid":"d3f896182b5c10b07918e295fce8c5aef054d266","name":"Searx Metasearch Engine","website":"https://searx.me","license":"https://github.com/asciimoo/searx/blob/master/LICENSE","description":"A privacy-respecting, hackable metasearch engine.","enhanced":false,"tile_background":"dark","icon":"searxmetasearchengine.png","sha":"e83f0fc655c95416192331204c89e89f63dc651c"},{"appid":"3de4f901fffb30ac720b0e7eb654b4faa2dd03fa","name":"Server","website":"https://en.wikipedia.org/wiki/Server_(computing)","license":"Commercial","description":"In computing, a server is a piece of computer hardware or software (computer program) that provides functionality for other programs or devices, called \"clients\". This architecture is called the client–server model. Servers can provide various functionalities, often called \"services\", such as sharing data or resources among multiple clients, or performing computation for a client.","enhanced":false,"tile_background":"light","icon":"server.svg","sha":"ce77e236e600a043e236bee3edc66802db72fbb4"},{"appid":"8830438516d806a81d3d2650afa14af4f61bec1f","name":"Serviio","website":"http://serviio.org","license":"Free","description":"Serviio is a free media server. It allows you to stream your media files (music, video or images) to renderer devices (e.g. a TV set, Bluray player, games console or mobile phone) on your connected home network.","enhanced":false,"tile_background":"dark","icon":"serviio.png","sha":"637381d3273f6243f51e68b6e3d7949d59d4e58a"},{"appid":"dc616e4c8950e8347b77334581bb126fdf171a86","name":"sftpgo","website":"https://github.com/drakkan/sftpgo","license":"GNU Affero General Public License v3.0","description":"Fully featured and highly configurable SFTP server with optional HTTP/S, FTP/S and WebDAV support. Several storage backends are supported: local filesystem, encrypted local filesystem, S3 (compatible) Object Storage, Google Cloud Storage, Azure Blob Storage, SFTP.","enhanced":false,"tile_background":"dark","icon":"sftpgo.png","sha":"1b3d6ce7be33c9faf07bea35dc5e0acfa2d84a8f"},{"appid":"9db4c1b8312db195c8c176f4df4b31998bf1a534","name":"Shaarli","website":"https://github.com/shaarli/Shaarli","license":"GNU General Public License v3.0 only","description":"Shaarli is a minimalist, database-free self-hosted bookmarking and link sharing service. It is designed to be personal (single-user), fast and handy.","enhanced":false,"tile_background":"dark","icon":"shaarli.png","sha":"c4ad367e59f12fd88e30866f188040d4a7aef4b0"},{"appid":"dcf2874559e0304e2811c796cb873ae9aac07fa2","name":"Shinobi","website":"https://shinobi.video","license":"GNU Public License 3.0","description":"An open-source CCTV NVR for recording, monitoring, and streaming modern IP cameras. Lightweight, extremely compatible and simple to use.","enhanced":false,"tile_background":"dark","icon":"shinobi.png","sha":"e35e373c393116792cab0a37549ad7ba2fe6a39f"},{"appid":"f758b0b8b86303210695bf561763bf1d3aadfbb5","name":"Shiori","website":"https://github.com/go-shiori/shiori","license":"MIT License","description":"Shiori is a simple bookmarks manager written in the Go language. Intended as a simple clone of Pocket. You can use it as a command line application or as a web application.","enhanced":false,"tile_background":"dark","icon":"shiori.svg","sha":"698d13c54f5364eff9f4b0405e592cf6903db984"},{"appid":"23829a678218110cead136b504b2f256bd4bf2c7","name":"Sickchill","website":"https://sickchill.github.io","license":"GNU General Public License v3.0 or later","description":"Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.","enhanced":false,"tile_background":"light","icon":"sickchill.png","sha":"f851e0d2b9636789b4c9a4bb7506c54bf3a619a4"},{"appid":"675dd93307bd5235a9b5da4268f9fee3d95d6235","name":"SickGear","website":"https://github.com/SickGear/SickGear","license":"GNU General Public License v3.0 only","description":"SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.","enhanced":false,"tile_background":"dark","icon":"sickgear.png","sha":"51b1b15773ef14160f02b0d6d35a80f6f1e6edf4"},{"appid":"0ffe6c3e1f43f953bcfe3a5adb50759b5938aa36","name":"Slack","website":"https://slack.com","license":"Proprietary","description":"Slack is a cloud-based set of proprietary team collaboration tools and services.","enhanced":false,"tile_background":"dark","icon":"slack.svg","sha":"92d7656f6c5c80e2144dc04a53e731ad9f9014c1"},{"appid":"b914d6bc6d5e2eb2cb5c4722489521a6d949d8e3","name":"Snapdrop","website":"https://snapdrop.net","license":"GNU General Public License v3.0 or later","description":"Snapdrop - The easiest way to transfer files across devices. Local file sharing in your browser. Inspired by Apple's Airdrop.","enhanced":false,"tile_background":"dark","icon":"snapdrop.png","sha":"d7a100fbb4380d8de66361239aacfa611f5c27a1"},{"appid":"6c050d5bdf522fa20599560ff0f6b74e7dcd97a8","name":"Snibox","website":"https://github.com/snibox/snibox","license":"MIT License","description":"Snibox is a self-hosted, single-user (for now) snippet manager. Developed to collect and organize code snippets. Supports various programming languages, markdown, plain text.","enhanced":false,"tile_background":"dark","icon":"snibox.png","sha":"ed28c64c31205392a09627a987b19a1ba2aaa9ad"},{"appid":"d143b3a76b72591495655c5257c7523456bdd736","name":"SOGo","website":"https://sogo.nu","license":"GNU GPL/LGPL v2 and above","description":"SOGo is a fully supported and trusted groupware server with a focus on scalability and open standards.","enhanced":false,"tile_background":"light","icon":"sogo.svg","sha":"05e420d3b4779d9b57b49e623435182f7a64bee9"},{"appid":"68b3ab5f7810a9984bd8f46d53de0abf35f613f9","name":"SonarQube","website":"https://www.sonarqube.org","license":"GNU Lesser General Public License v3.0 only","description":"Catch bugs and vulnerabilities in your app, with thousands of automated Static Code Analysis rules.","enhanced":false,"tile_background":"dark","icon":"sonarqube.png","sha":"811c048f13d093a651622d276e6cc8b8eecdb12a"},{"appid":"6e2a525ceb737f9ed8badcef5eb20d1502e39656","name":"Sonarr","website":"https://sonarr.tv","license":"GNU General Public License v3.0 only","description":"Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.","enhanced":true,"tile_background":"dark","icon":"sonarr.svg","config":{"type":"apikey","stat1":{"name":"Missing","url":":url:api/v3/wanted/missing?sortKey=series.title&apikey=:apikey:","key":"totalRecords","filter":"none","updateOnChange":"No"},"stat2":{"name":"Queue","url":":url:api/v3/queue?apikey=:apikey:","key":null,"filter":"count","updateOnChange":"No"}},"sha":"737742945408ff02aadba4d4f8c790080aea6f25"},{"appid":"f491c749924e2532e3b6c4496b94e03fd2b54f27","name":"Sourcegraph","website":"https://sourcegraph.com","license":"Apache License 2.0","description":"Sourcegraph is a free, open-source, self-hosted code search and navigation tool for developers. Use it with any Git code host for teams of any size.","enhanced":false,"tile_background":"dark","icon":"sourcegraph.png","sha":"d9d6e3049f870aa5ce3d97a59f019e6e6c6fc3ce"},{"appid":"c106a4464d1b08d0e35edb92ddfabae6f9dc765f","name":"Speedtest Tracker","website":"https://github.com/henrywhitaker3/Speedtest-Tracker","license":"GNU General Public License v3.0 only","description":"This program runs a speedtest check every hour and graphs the results. The back-end is written in Laravel and the front-end uses React. It uses the Ookla's speedtest cli package to get the data and uses Chart.js to plot the results.","enhanced":true,"tile_background":"dark","icon":"speedtesttracker.png","sha":"01b545a81688399029861dd8237c7f316941d092"},{"appid":"c8714150b8061714a04b8cc146c8bf0210c05b62","name":"Splunk","website":"https://splunk.com","license":"Commercial","description":"Splunk (the product) captures, indexes and correlates real-time data in a searchable repository from which it can generate graphs, reports, alerts, dashboards and visualizations.","enhanced":false,"tile_background":"dark","icon":"splunk.png","sha":"a8deca71ae0b07dae97ffd3a5aa5cddde17add73"},{"appid":"8d40ec161e2793d4ad3526e66d1723b2043780b6","name":"Spotweb","website":"https://github.com/spotweb/spotweb","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Spotweb is a decentralized usenet community based on the Spotnet protocol.","enhanced":true,"tile_background":"dark","icon":"spotweb.png","sha":"e00aed9f16132f459f4c4916edfc982629dd3764"},{"appid":"dddd912a7abafef0d73bf3ca9e2575e33971c012","name":"Squidex","website":"https://squidex.io","license":"MIT License","description":"Squidex is an open source headless content management system (cms) with automatic API generation. It can manage all your backend content, for example: Dynamic elements for your mobile apps. Blog posts and articles for your website. Configuration data for your backend. Rich and structured data for your application.","enhanced":false,"tile_background":"dark","icon":"squidex.svg","sha":"a21b12445b01aefa97201e5f1f8558de040194ea"},{"appid":"585815f2ee7291f96ea30333fd94d20b5722693f","name":"Stash","website":"https://github.com/stashapp/stash","license":"MIT License","description":"Stash is a Go app which organizes and serves your porn.","enhanced":true,"tile_background":"dark","icon":"stash.svg","sha":"a2255cdb09866b987e7f245cccbb14cf43d68c9a"},{"appid":"2a7e2a851e5597e23c2be647eeda17d9105933ba","name":"Statping","website":"https://github.com/hunterlong/statping","license":"GNU General Public License v3.0 only","description":"Status Page for monitoring your websites and applications with beautiful graphs, analytics, and plugins. Run on any type of environment.","enhanced":false,"tile_background":"light","icon":"statping.png","sha":"20c3370f3d34d14bd0c99e02c4276146fac73470"},{"appid":"f2c4ab39ad8485316cf9f0ed6c5951629e324feb","name":"Strapi","website":"https://strapi.io","license":"MIT License","description":"Strapi is an open source headless content management system (CMS). Keep control and deliver faster. Building self-hosted, customizable and performant Content API has never been easier.","enhanced":false,"tile_background":"light","icon":"strapi.png","sha":"59395b5ba169429538ce614c0eff61146ae468cb"},{"appid":"3e1575bb500ee1e3bb80d84d3a8fb2d90a707ba4","name":"Streama","website":"https://github.com/streamaserver/streama","license":"MIT License","description":"Ever had a huge bookshelf full of shows and movies? Ever wanted to digitalize them, but didn't have a good way of organizing the files? Worry no more! Streama is your own personal Netflix for just such a purpose!","enhanced":false,"tile_background":"light","icon":"streama.png","sha":"738c732c3d61068d030ce2ba66e4426271ff4354"},{"appid":"0680196c9ecb05c60ff8f8e757deff6fc7260754","name":"Supermicro IPMI","website":"https://www.supermicro.com/en/solutions/management-software/ipmi-utilities","license":"Commercial","description":"IPMI is a hardware solution for controlling and managing your servers. It has significant differences and benefits compared to system diagnosis software. For example, IPMI gives you the ability to manage servers in remote physical locations regardless of the installed operating system.","enhanced":false,"tile_background":"light","icon":"supermicroipmi.png","sha":"98c7144d809615b0b9e5324e4d790892f65a0ffa"},{"appid":"35bc724730476a47cf18f92f486cd9e7745d4f15","name":"Sympa","website":"https://www.sympa.org","license":"GNU General Public License v2.0 only","description":"Sympa is an open source mailing list manager. It provides advanced features with a rich and secure web interface.","enhanced":false,"tile_background":"light","icon":"sympa.svg","sha":"4553a0a19edc59dc979b31968277ea957fd05d41"},{"appid":"361732e3fd1161330a49bebcccb955241621e1b1","name":"Synclounge","website":"https://github.com/samcm/SyncLounge","license":"MIT License","description":"SyncLounge (Previously PlexTogether) is a tool to sync Plex content across multiple players in multiple locations.","enhanced":false,"tile_background":"dark","icon":"synclounge.png","sha":"1cb4ef954be18518d5f89805292963e7ef61f383"},{"appid":"7775c3bbf580fbaf57818e68ce7b1b48b8f93b95","name":"Syncthing","website":"https://syncthing.net","license":"Mozilla Public License 2.0","description":"Syncthing is a free, open-source peer-to-peer file synchronization application. It can sync files between devices on a local network, or between remote devices over the Internet.","enhanced":true,"tile_background":"dark","icon":"syncthing.svg","sha":"6ff89e67021f5f09a270c199ba9b541d2100c35d"},{"appid":"8521f6e426ad621f27a6b48be57a3c6056c9cfd3","name":"Synology","website":"http://synology.com","license":"commercial","description":"Synology is a popular NAS appliance","enhanced":false,"tile_background":"light","icon":"synology.png","sha":"edb5d2969d16b21e4dcb9864c5baa9d49fa2be87"},{"appid":"1de00f5662a5c44f3d23b50f9e13232cdd64f667","name":"Tachidesk","website":"https://github.com/Suwayomi/Tachidesk-Server","license":"Mozilla Public License 2.0","description":"A free and open source manga reader server that runs extensions built for Tachiyomi.\r\nTachidesk is an independent Tachiyomi compatible software and is not a Fork of Tachiyomi.","enhanced":false,"tile_background":"dark","icon":"tachidesk.png","sha":"fe83e1a22215d0c746d86fca8d0be5cd33e3b6dc"},{"appid":"4c0f3ebde3d0c13fce8b4b02d1d80fea4123e07a","name":"Taiga","website":"https://taiga.io","license":"GNU Affero General Public License v3.0","description":"Taiga is a project management platform for agile developers & designers and project managers who want a beautiful tool that makes work truly enjoyable. It's free, open source and simple to use.","enhanced":false,"tile_background":"dark","icon":"taiga.png","sha":"6f2d59268e9edc8b2a6928073ac33b18eacd620f"},{"appid":"15f90b18166400660896d011856a88cd88d68b33","name":"Tailscale","website":"https://tailscale.com/","license":"BSD 3-Clause Clear License","description":"A secure network that just works\r\nZero config VPN. Installs on any device in minutes, manages firewall rules for you, and works from anywhere.","enhanced":false,"tile_background":"light","icon":"tailscale.svg","sha":"94503e8437823de32a95cd931160852c3e55ae8e"},{"appid":"343eebd3e9330c34952dcb3bc5c94ba12bf07a67","name":"Tandoor Recipes","website":"https://docs.tandoor.dev","license":"GNU Affero General Public License v3.0","description":"The recipe manager that allows you to manage your ever growing collection of digital recipes.","enhanced":false,"tile_background":"light","icon":"tandoorrecipes.svg","sha":"4961aee77029658c65f929324d4b7c4f098e1d45"},{"appid":"44fb3ee60816316d3c253e7454f5e0ab5f46680a","name":"Tar1090","website":"https://github.com/wiedehopf/tar1090","license":"GNU General Public License v2.0 only","description":"Provides an improved webinterface for use with ADS-B decoders readsb / dump1090-fa","enhanced":true,"tile_background":"dark","icon":"tar1090.png","sha":"ced3140b8483414ebac34d8d97f8b7c00d7e258b"},{"appid":"0c0c3373606e00d765583eaf1fc2c1bca6c09df3","name":"Tartube","website":"https://github.com/axcore/tartube","license":"GNU General Public License v3.0 only","description":"Tartube is a GUI front-end for youtube-dl, yt-dlp and other compatible video downloaders.","enhanced":false,"tile_background":"dark","icon":"tartube.png","sha":"ee6da5f5b017678cdd7b03ee232f168925d4b311"},{"appid":"ecf26dc5795ae2ccb3afbfa44570237590d65145","name":"TasmoAdmin","website":"https://github.com/reloxx13/TasmoAdmin","license":"GNU General Public License v3.0 only","description":"TasmoAdmin (previously SonWEB) is an administrative Website for Devices flashed with Tasmota.","enhanced":false,"tile_background":"dark","icon":"tasmoadmin.png","sha":"ae68356d54abd9aef42616a92ecf7a007cdafbae"},{"appid":"0d318b04d2442102c6a9643405bce18b5df5cf78","name":"Tasmota","website":"https://github.com/arendst/Tasmota","license":"GNU General Public License v3.0 or later","description":"Alternative firmware for ESP8266 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX.","enhanced":true,"tile_background":"light","icon":"tasmota.png","sha":"01b9f39c87538cfb8b500d737960c246cdb31041"},{"appid":"93ce76191583a25ac33c1918c5ad0b8a5f260451","name":"Tautulli","website":"https://tautulli.com","license":"GNU General Public License v3.0 only","description":"A python based web application for monitoring, analytics and notifications for Plex Media Server.","enhanced":true,"tile_background":"light","icon":"tautulli.png","sha":"591fba61833ef0f85e4dc68b36138d48422dbd36"},{"appid":"279db11ace3924a4a2a36dfd59a34e3bd352a5b4","name":"Tdarr","website":"https://github.com/HaveAGitGat/Tdarr","license":"GNU General Public License v3.0 only","description":"Tdarr is a self hosted web-app for automating media library transcode/remux management and making sure your files are exactly how you need them to be in terms of codecs/streams/containers etc. Designed to work alongside Sonarr/Radarr and built with the aim of modularisation, parallelisation and scalability, each library you add has its own transcode settings, filters and schedule. Workers can be fired up and closed down as necessary, and are split into 3 types - 'general', 'transcode' and 'health check'. Worker limits can be managed by the scheduler as well as manually. For a desktop application with similar functionality please see HBBatchBeast.","enhanced":true,"tile_background":"dark","icon":"tdarr.png","sha":"4f24ddbc299a63ffde4dc134b08fad6c0c054360"},{"appid":"fe8ca35ebcfc6fa1fc949fbcac58e083a19f6381","name":"Technitium DNS","website":"https://technitium.com/dns","license":"GNU General Public License v3.0 only","description":"Technitium DNS Server is an open source authoritative as well as recursive DNS server that can be used for self hosting a DNS server for privacy & security. It works out-of-the-box with no or minimal configuration and provides a user friendly web console accessible using any modern web browser.","enhanced":false,"tile_background":"dark","icon":"technitiumdns.png","sha":"4c3384c57cf575b2d8aba643d3f655785d8c9180"},{"appid":"18bd5c19b49acc0a5030708e664fb1ed249a8fa5","name":"Teedy","website":"https://teedy.io","license":"GNU General Public License v2.0 only","description":"Teedy is a lightweight document management system packed with all the features you can expect from big expensive solutions but still easy to use.","enhanced":false,"tile_background":"dark","icon":"teedy.png","sha":"662efb1db47a40739e6728299999ba834cdb40ac"},{"appid":"5023ad25cdb679ee3bf1e659434da75ec0177924","name":"The Lounge","website":"https://thelounge.chat","license":"MIT License","description":"Modern multi-user web IRC client designed for self-hosting","enhanced":false,"tile_background":"dark","icon":"thelounge.png","sha":"c74e820a489f56104640cb7154476e7628d40329"},{"appid":"9a83dce0e30910276872015367d926660780e6d8","name":"Tiny Tiny RSS","website":"https://tt-rss.org","license":"GNU General Public License v3.0 only","description":"Tiny Tiny RSS is a free and open source web-based news feed (RSS/Atom) reader and aggregator","enhanced":false,"tile_background":"light","icon":"tinytinyrss.png","sha":"6ea4f1a05f9ef0d2b61ec112afb76c11fe323be3"},{"appid":"67f7ed18fb98b30dc7ee328877f789de10be4227","name":"Traccar","website":"https://www.traccar.org","license":"Apache License 2.0","description":"Server software for GPS tracking including device communication back-end and web interface","enhanced":false,"tile_background":"light","icon":"traccar.png","sha":"2600dc67747b6d3fff9b82eb2cbb0259abc46ecf"},{"appid":"a83e2ce54bbef3bef63aa7f02b08dbda7fdae4c5","name":"Traefik","website":"https://traefik.io","license":"MIT License","description":"Træfik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Træfik integrates with your existing infrastructure components and configures itself automatically and dynamically.","enhanced":true,"tile_background":"dark","icon":"traefik.svg","sha":"b61c6737c460e1688918a34aebcbe5240a34181e"},{"appid":"34899a33e3d7e33e1966b921ea250350fc71591a","name":"Transmission","website":"https://transmissionbt.com","license":"GNU General Public License v3.0 only","description":"Transmission is a BitTorrent client which features a variety of user interfaces on top of a cross-platform back-end.","enhanced":true,"tile_background":"dark","icon":"transmission.svg","sha":"d1349722785bd70f122feca3ed4529674ebf9594"},{"appid":"3add4f3aea6cc6eb1ec164d73b6935ce454b8f16","name":"Trilium","website":"https://github.com/zadam/trilium","license":"GNU Affero General Public License v3.0","description":"Build your personal knowledge base with Trilium Notes.","enhanced":false,"tile_background":"dark","icon":"trilium.png","sha":"75ba75b91c313fb5d9f7b3f90ff852ee0766d53d"},{"appid":"07f6df4f81edd2e3dadf7e5fb56c37d6fb8acef4","name":"TrueNAS","website":"https://www.truenas.com","license":"BSD-2-Clause","description":"TrueNAS is an embedded open source network-attached storage (NAS) operating system based on FreeBSD.","enhanced":false,"tile_background":"light","icon":"truenas.png","sha":"64cebc679507e1e184060e92a0bbb8dc56fb8f7f"},{"appid":"a1e408cd7144157cd6400993af4f68046bf77fd5","name":"TrueNAS CORE","website":"https://www.truenas.com/truenas-core","license":"BSD 2-Clause FreeBSD License","description":"TrueNAS CORE is enterprise-quality software-defined storage that can be used without restrictions or cost. It is also the core of the full-fledged enterprise edition, TrueNAS Enterprise, which provides the additional fault-tolerance, performance, and support that businesses and critical applications require.","enhanced":true,"tile_background":"dark","icon":"truenascore.png","sha":"96052f07b7724f5c7e07c08c749024b2cca6e800"},{"appid":"ac61e1834dac0f75ea1ab6d3a23976ffc4f46b74","name":"TVHeadend","website":"https://tvheadend.org","license":"GNU General Public License v3.0 only","description":"TVHeadend, sometimes TVH for short, is a server application that reads video streams from LinuxTV sources and publishes them as internet streams.","enhanced":false,"tile_background":"dark","icon":"tvheadend.png","sha":"49897023bdc8de854fdc3c9bd00eed4ce02b558b"},{"appid":"6bf857ca7de026fbed4ae790a809a0ea640901f4","name":"TYPO3","website":"https://typo3.org","license":"GNU General Public License v2.0 or later","description":"The Professional, Flexible Content Management System.\nTYPO3 CMS is an Open Source Enterprise Content Management System with a large global community, backed by the approximately 900 members of the TYPO3 Association.","enhanced":false,"tile_background":"light","icon":"typo3.svg","sha":"4bef2b76c8b2f3b8de64907b17eab40ee3e93e69"},{"appid":"cf79bd157a6af435240abdd8fbf9afb5f09abb7d","name":"Ubooquity","website":"https://vaemendis.net/ubooquity","license":"MIT License","description":"Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.","enhanced":false,"tile_background":"dark","icon":"ubooquity.png","sha":"7483f4b94b55e5587c8585df26822a034c19871b"},{"appid":"8cdba423d7bb49fad21662247750cd715f08cdc5","name":"UniFi","website":"https://unifi-sdn.ubnt.com","license":"Unknown","description":"The UniFi® Controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.","enhanced":false,"tile_background":"light","icon":"unifi.png","sha":"c5b9087190125eb2533d06dbc6106e8b058ee869"},{"appid":"a831f55ecba8054c0534210efcbb5cb9a3ea9b61","name":"UniFi Protect","website":"https://ui.com/camera-security","license":"Proprietary","description":"UniFi Protect is a security management application that runs on a UniFi OS Console. With it, you can configure your Protect devices, watch live camera streams and recordings, download footage, create recording schedules, customize detection-specific notifications, and much more!","enhanced":false,"tile_background":"light","icon":"unifiprotect.png","sha":"03e5f810ea654b47339be9e789013e702725caa2"},{"appid":"c4727509e4ae21f95d5ba4634add6742e8520b2d","name":"Unmanic","website":"https://docs.unmanic.app/","license":"GNU Affero General Public License v3.0 or later","description":"Unmanic is a simple tool for optimising your file library. You can use it to convert your files into a single, uniform format, manage file movements based on timestamps, or execute custom commands against a file based on its file size.","enhanced":false,"tile_background":"dark","icon":"unmanic.png","sha":"985ca5184df32743bd1d02a63b718101653ab993"},{"appid":"11b790731286c7538e27885bc827dc6f6ceb8db2","name":"Unraid","website":"https://unraid.net","license":"Proprietary","description":"Unraid is software for storing and managing digital files on a mass-storage server. It is an embedded Network Attached Storage (NAS) server operating system.","enhanced":false,"tile_background":"dark","icon":"unraid.png","sha":"15a2b01831df27bf9e15b7e29f4688a06c1a6b44"},{"appid":"366c6646eedab83cc4b349f198424d2291cbfa76","name":"Uptime Kuma","website":"https://uptime.kuma.pet","license":"MIT License","description":"It is a self-hosted monitoring tool like \"Uptime Robot\".","enhanced":false,"tile_background":"dark","icon":"uptimekuma.svg","sha":"292e87cee7c6a9cdbb6708686bdcdfa471b32921"},{"appid":"89f71687e2a69d7c9432b2ee76a9b638306e9fd5","name":"UrBackup","website":"https://www.urbackup.org","license":"GNU Affero General Public License v3.0 or later","description":"UrBackup is an easy to setup Open Source client/server backup system, that through a combination of image and file backups accomplishes both data safety and a fast restoration time.\r\nFile and image backups are made while the system is running without interrupting current processes.\r\nUrBackup also continuously watches folders you want backed up in order to quickly find differences to previous backups. Because of that, incremental file backups are really fast.\r\nYour files can be restored through the web interface, via the client or the Windows Explorer while the backups of drive volumes can be restored with a bootable CD or USB-Stick (bare metal restore).","enhanced":true,"tile_background":"light","icon":"urbackup.png","sha":"f008897bff2b8afc07196cbd12a73db57eb3939a"},{"appid":"5f0180fbeccdee64f7314b367e87e6994089f199","name":"ViMbAdmin","website":"https://www.vimbadmin.net","license":"GNU General Public License v3.0 only","description":"The ViMbAdmin project (vim-be-admin) provides a web based virtual mailbox administration system allowing mail administrators to manage domains, mailboxes and aliases.","enhanced":false,"tile_background":"light","icon":"vimbadmin.png","sha":"c82862012148055d6246c4d2761fdbf4b12a8f6a"},{"appid":"62484a2ddd0930286322c0a4364dd404951a1070","name":"Virtualmin","website":"https://www.virtualmin.com","license":"GNU General Public License v3.0 only","description":"Virtualmin is a domain hosting and website control panel, which gives the ability to create and manage many domains. As well as simplify both automation and tasks.","enhanced":false,"tile_background":"dark","icon":"virtualmin.svg","sha":"496d90d4c3d0c55c95bc00f4034d25421d75c10e"},{"appid":"c934574c40a11992b08ce4e659ca23310916436c","name":"Virtual Radar Server","website":"https://www.virtualradarserver.co.uk","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Virtual Radar Server is an open-source .NET application that runs a local web server. You can connect to the web server with any modern browser and see the aircraft plotted on a map. You will need a radio that is capable of receiving Mode-S transmissions. Virtual Radar Server was written and tested using Kinetic Avionic's SBS-1er and SBS-3 radios but it will work with any receiver or SDR that can produce the Kinetic text message format, Kinetic's SBS-3 binary format, the AVR \"*\", \"@\" or \":\" formats or the Mode-S Beast binary format.","enhanced":false,"tile_background":"light","icon":"virtualradarserver.png","sha":"546fa5e360e9c96ccd5995d78128ec8d2860f307"},{"appid":"39d2762d5690a6ebeb6ac1615d3ee5d58b07ab7e","name":"VMware ESXi","website":"https://www.vmware.com/products/esxi-and-esx.html","license":"Commercial","description":"VMware ESXi is an enterprise-class, type-1 hypervisor developed by VMware for deploying and serving virtual computers. As a type-1 hypervisor, ESXi is not a software application that is installed on an operating system; instead, it includes and integrates vital OS components, such as a kernel.","enhanced":false,"tile_background":"dark","icon":"vmwareesxi.png","sha":"f92f0dc64e5512d66c50a992d4482036b122d2e4"},{"appid":"b63d3ad41413da4056fbae6dc0ebc190668b3545","name":"vmware horizon","website":"https://www.vmware.com/products/horizon.html","license":"Commercial","description":"desktop and app virtualization.","enhanced":false,"tile_background":"dark","icon":"vmwarehorizon.png","sha":"75c13fb0bac17e29c0fcf1f9b5befba277c635d3"},{"appid":"a0a47ab17060b3437e3f16fed9cae275c7e8d43a","name":"VMware vCenter","website":"https://www.vmware.com/products/vcenter-server.html","license":"Proprietary","description":"VMware vCenter Server provides a centralized platform for managing your VMware vSphere environments, allowing you to automate and deliver a virtual infrastructure across the hybrid cloud with confidence.","enhanced":false,"tile_background":"light","icon":"vmwarevcenter.png","sha":"f1bcd542bc135833d1c525b9309f23b4fbe3a613"},{"appid":"90c60ebc78d163e508d41233af19bf9b31706012","name":"Volumio","website":"https://volumio.org","license":"GNU General Public License v3.0 only","description":"Volumio is an open source audiophile music player. It is designed and fine-tuned for high-quality music playback and it runs on a variety of devices such as Raspberry PI and other microcomputers as well as PCs and Notebooks.","enhanced":true,"tile_background":"light","icon":"volumio.png","sha":"783917750ea7fe4b65dcdbc49c78cc2237e6bc4d"},{"appid":"095afe286edc44dd8241e7a33138bc6d","name":"VuPlus","website":"http://vuplus.com","license":"commercial","description":"The Vu+ (pronounced VuPlus), is a series of Linux-powered DVB satellite, terrestrial digital television receivers (set-top box)","enhanced":true,"tile_background":"light","icon":"vuplus.png","sha":"4056dee499ba11fa2777eec7f4ef4a9c2195bf0b"},{"appid":"9dc07af7d1d88c183c6ae42c903650ab19ada2bb","name":"Wallabag","website":"https://www.wallabag.org/en","license":"MIT License","description":"Wallabag is a self hostable application for saving web pages: Save and classify articles. Read them later. Freely.","enhanced":false,"tile_background":"dark","icon":"wallabag.png","sha":"4a3d8b688ab297a58f82d6862cae05cee2fed5d5"},{"appid":"dc115cfaac280c4b97289484356c21428af565be","name":"WaniKani","website":"https://www.wanikani.com","license":"Proprietary","description":"WaniKani is a Japanese radicals, kanji, and vocabulary learning web app that uses mnemonics and SRS to make kanji learning simple.","enhanced":true,"tile_background":"light","icon":"wanikani.png","sha":"e95bb933bbabf50697b0b22835af87948d20bb77"},{"appid":"785ad2ec16dcf34b4fc83b025b930818c6372567","name":"Watcher","website":"https://github.com/nosmokingbandit/Watcher3","license":"Apache License 2.0","description":"Watcher is an automated movie NZB & Torrent searcher and snatcher. You can add a list of wanted movies and Watcher will automatically send the NZB or Torrent to your download client.","enhanced":false,"tile_background":"dark","icon":"watcher.png","sha":"43bd3c64e5fb58c37b74fefbdd3609af24a498dc"},{"appid":"b9726e44ef09db12f6e010af8977d55dc971b841","name":"Webmin","website":"http://www.webmin.com","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Webmin is a web-based system configuration tool for Unix-like systems, although recent versions can also be installed and run on Windows.","enhanced":false,"tile_background":"dark","icon":"webmin.svg","sha":"c84edde77d20e5ee345d1b66cebc50f3dde6d553"},{"appid":"11915e3ab4fbb44453d956eb4d5163cad8050d6b","name":"WebTools","website":"https://github.com/ukdtom/WebTools.bundle","license":"Mozilla Public License 2.0","description":"WebTools is a collection of tools for Plex Media Server. Like the Unsupported AppStore (UAS)","enhanced":false,"tile_background":"dark","icon":"webtools.png","sha":"93905afd4b4e92119e77a7529f2055c0bf596c80"},{"appid":"b4021dd275593e7b96610fc7b6300af8cdca8765","name":"Wekan","website":"https://wekan.github.io","license":"MIT License","description":"Wekan is an open source, collaborative kanban board application.","enhanced":false,"tile_background":"dark","icon":"wekan.png","sha":"3ea2b407834d596c5d7bb14978fee941d69e3bb7"},{"appid":"9b4e87ab376cf2327facda32fa98617676dfccd9","name":"Wetty","website":"https://github.com/krishnasrinivas/wetty","license":"MIT License","description":"WeTTy = Web + TTy. Terminal web app in browser over http/https. (Ajaxterm/Anyterm alternative, but much better). WeTTy is an alternative to ajaxterm and anyterm but much better than them because WeTTy uses xterm.js which is a full fledged implementation of terminal emulation written entirely in JavaScript. WeTTy uses websockets rather then Ajax and hence better response time.","enhanced":false,"tile_background":"dark","icon":"wetty.png","sha":"d45dfa11f9f0908b9710f1d064ff5bd7522d2371"},{"appid":"daec766cafab4e5297d8c2359810b3dfcc7626fd","name":"Wg Gen Web","website":"https://github.com/vx3r/wg-gen-web","license":"Do What The F*ck You Want To Public License","description":"Simple Web based configuration generator for WireGuard","enhanced":false,"tile_background":"dark","icon":"wggenweb.png","sha":"e0011d6b528b8112d1f56bf25d5af9c30bee60a8"},{"appid":"170b7d7a0634e8d51a768a113f00d7601fa9b182","name":"Whoogle","website":"https://github.com/benbusby/whoogle-search","license":"MIT License","description":"A self-hosted, ad-free, privacy-respecting metasearch engine. Get Google search results, but without any ads, javascript, AMP links, cookies, or IP address tracking.","enhanced":false,"tile_background":"light","icon":"whoogle.png","sha":"48d235a73617e03e1484cbdbd4ea835951b1525f"},{"appid":"cf796459bad1da470debfed16506e47aab347dbe","name":"Wiki.js","website":"https://wiki.js.org","license":"GNU Affero General Public License v3.0","description":"Wiki.js | A modern, lightweight and powerful wiki app built on Node.js","enhanced":false,"tile_background":"light","icon":"wikijs.png","sha":"ca1c48b5f5b7e4059de256e9a710e8bcc573316b"},{"appid":"9d3283ea8d3bb69f327af06870657a63ab3bbf6d","name":"Windows Admin Center","website":"https://www.microsoft.com/en-us/windows-server/windows-admin-center","license":"Proprietary","description":"Windows Admin Center is a locally deployed, browser-based app for managing Windows servers, clusters, hyper-converged infrastructure, as well as Windows 10 PCs. It is a free product and is ready to use in production.","enhanced":false,"tile_background":"dark","icon":"windowsadmincenter.png","sha":"da5a8a92c4ce13e10a4708c4d273287e6fd81204"},{"appid":"afef2217e82ee20638490bb102605f6e09789093","name":"WireGuard","website":"https://www.wireguard.com","license":"CNRI Python Open Source GPL Compatible License Agreement","description":"WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.","enhanced":false,"tile_background":"dark","icon":"wireguard.png","sha":"624c151835424392cdb6fb99c7a4f6d6da63e042"},{"appid":"ac894a3a9399f135f6eb87f27fb742c71189cc86","name":"WLED","website":"https://wled.me","license":"MIT License","description":"A fast and feature-rich implementation of an ESP8266/ESP32 webserver to control NeoPixel (WS2812B, WS2811, SK6812) LEDs or also SPI based chipsets like the WS2801 and APA102! More Info see wled.me","enhanced":false,"tile_background":"dark","icon":"wled.png","sha":"aea26dffdc056b5da965d68354540f4581c9f3f1"},{"appid":"b1909932aac1c5510c044de0cb8c0f3ef049a250","name":"WordPress","website":"https://wordpress.org","license":"GNU General Public License v2.0 only","description":"WordPress is open source software you can use to create a beautiful website, blog, or app.","enhanced":false,"tile_background":"dark","icon":"wordpress.svg","sha":"0ef26137a5179a972debc881a49dae7fd9c0f61d"},{"appid":"d1d0f952ebdcb6b8918bdd7ddbf55793dca5fa93","name":"Xen-Orchestra","website":"https://xen-orchestra.com","license":"GNU Affero General Public License v3.0","description":"XO is a web interface to visualize and administer your XenServer (or XAPI enabled) hosts.","enhanced":false,"tile_background":"dark","icon":"xenorchestra.png","sha":"41af3ba5cb66d08c7bc8daf5f29a03db8a85eee8"},{"appid":"8304785b9937bf6d4e04c2d7aaa786b3577fb10c","name":"Xigmanas","website":"https://www.xigmanas.com","license":"BSD 2-Clause \"Simplified\" License","description":"XigmaNAS is an Open Source Storage NAS (Network-Attached Storage) distribution based on FreeBSD.","enhanced":false,"tile_background":"dark","icon":"xigmanas.png","sha":"e03fe9f8ae31151ad207c9c90656fe88d2d4e922"},{"appid":"cb6a8a853393228efd2b7b1963f50d56b7f0d818","name":"xTeVe","website":"https://xteve.de","license":"MIT License","description":"M3U Proxy for Plex DVR and Emby Live TV","enhanced":false,"tile_background":"dark","icon":"xteve.png","sha":"138435716a4fb9baabafae918700a22e6dd15223"},{"appid":"991894ca059d0faa7400a50c0aefb30d252346e7","name":"XWiki","website":"https://www.xwiki.org","license":"GNU Lesser General Public License v2.1 only","description":"Advanced Open Source Enterprise Wiki","enhanced":false,"tile_background":"light","icon":"xwiki.png","sha":"bd5de482464c2685043af7864125c8d0492c78cb"},{"appid":"56eb3a3ec734e5a66d4f1746ef58961d266fdabe","name":"Yacht","website":"https://github.com/SelfhostedPro/Yacht","license":"MIT License","description":"Yacht is a container management UI with a focus on templates and 1-click deployments.","enhanced":false,"tile_background":"light","icon":"yacht.svg","sha":"f667eb2cfa0d2f838bdb1f2fea234d1c535572b0"},{"appid":"d5dc44619c761e1012648613619006016a669ee7","name":"YNAB","website":"https://www.youneedabudget.com","license":"Commercial","description":"You Need a Budget (YNAB) (pronounced Why-nab) is an multi-platform personal budgeting program based on the envelope method.","enhanced":false,"tile_background":"light","icon":"ynab.png","sha":"2b1159c2e65d57a52490be822e143cfe0f34d711"},{"appid":"f23460c5b2dba5711733151081cd82ecc9106964","name":"YOURLS","website":"https://yourls.org","license":"MIT License","description":"YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener, on your server. You'll have full control over your data, detailed stats, analytics, plugins, and more. It's free and open-source.","enhanced":false,"tile_background":"dark","icon":"yourls.svg","sha":"8d1505ef8b9031ef71875ab4d92518afad8b9059"},{"appid":"6c87650cad54af69bf838f03b190280f7537c03d","name":"Your Spotify","website":"https://github.com/Yooooomi/your_spotify","license":"MIT License","description":"Your Spotify is a self-hosted application that tracks what you listen and offers you a dashboard to explore statistics about it! It's composed of a web server which polls the Spotify API every now and then and a web application on which you can explore your statistics.","enhanced":false,"tile_background":"light","icon":"yourspotify.svg","sha":"d0a65a3880fcdd9604dce7b44b830a9b0f998820"},{"appid":"6e4a451c7c654ae2bc5c75689e690966a5fd29ee","name":"youtube-dl","website":"https://youtube-dl.org","license":"The Unlicense","description":"youtube-dl is a command-line program to download videos from YouTube.com and a few more sites","enhanced":false,"tile_background":"light","icon":"youtubedl.png","sha":"9b7b0b66ccc04d885f30e82f55b43e1b7270da29"},{"appid":"19132c3f80c33d38bbe4c51828f05b081e9f66cd","name":"Zabbix","website":"https://www.zabbix.com","license":"GNU General Public License v2.0 only","description":"Zabbix is a mature and effortless enterprise-class open source monitoring solution for network monitoring and application monitoring of millions of metrics.","enhanced":false,"tile_background":"dark","icon":"zabbix.svg","sha":"8cc7d92d5c9026bccbc661617721a9dc91712363"},{"appid":"4caf560ca51d18d1be6dd09a48fafa883c293462","name":"Zammad","website":"https://zammad.org","license":"GNU Affero General Public License v3.0","description":"Zammad is a web-based, open source user support/ticketing solution.","enhanced":false,"tile_background":"dark","icon":"zammad.svg","sha":"02eee9b18fed9e879f394d8cd540d1f9720c95a1"},{"appid":"563c45bed29a24c1a1a2981af1a93bdeb692713b","name":"ZNC","website":"https://wiki.znc.in/ZNC","license":"Apache License","description":"IRC bouncer","enhanced":false,"tile_background":"dark","icon":"znc.png","sha":"52a897d4d595ddc9c74b2b77a7fa9236c4525725"},{"appid":"e7ebe523e3dcf616e0553e60747f415d47a6fe22","name":"ZoneMinder","website":"https://zoneminder.com","license":"GNU General Public License v2.0 only","description":"A full-featured, open source, state-of-the-art video surveillance software system.\r\n\r\nMonitor your home, office, or wherever you want. Using off the shelf hardware with any camera, you can design a system as large or as small as you need.","enhanced":false,"tile_background":"dark","icon":"zoneminder.png","sha":"8e391cdcba5f644250acca8831e23f462d457624"},{"appid":"d17139efd0d8e0cba9bf8380c9818838911dfe0f","name":"Zulip","website":"https://zulipchat.com","license":"Apache License 2.0","description":"Powerful open source team chat. Zulip combines the immediacy of real-time chat with an email threading model. With Zulip, you can catch up on important conversations while ignoring irrelevant ones.","enhanced":false,"tile_background":"light","icon":"zulip.png","sha":"3a0df46433fcc2077745b553566c7064958c5092"}]} \ No newline at end of file +{"appcount":381,"apps":[{"appid":"666a52d2389b1864d0c376ef7d3a84e9cc54edb8","name":"Ackee","website":"https://github.com/electerious/Ackee","license":"MIT License","description":"Self-hosted, Node.js based analytics tool for those who care about privacy. Ackee runs on your own server, analyzes the traffic of your websites and provides useful statistics in a minimal interface.","enhanced":false,"tile_background":"light","icon":"ackee.png","sha":"d3683e09f5dba0a2c5acb3b4dcae055f6837d23d"},{"appid":"140902edbcc424c09736af28ab2de604c3bde936","name":"AdGuard Home","website":"https://github.com/AdguardTeam/AdGuardHome","license":"GNU General Public License v3.0 only","description":"AdGuard Home is a network-wide software for blocking ads & tracking. After you set it up, it'll cover ALL your home devices, and you don't need any client-side software for that.\r\n\r\nIt operates as a DNS server that re-routes tracking domains to a \"black hole,\" thus preventing your devices from connecting to those servers. It's based on software we use for our public AdGuard DNS servers -- both share a lot of common code.","enhanced":true,"tile_background":"light","icon":"adguardhome.png","sha":"ed488a0993be8bff0c59e9bf6fe4fbc2f21cffb7"},{"appid":"653caf8bdf55d6a99d77ceacd79f622353cd821a","name":"Adminer","website":"https://www.adminer.org","license":"Apache License 2.0","description":"Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consists of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch and MongoDB.","enhanced":false,"tile_background":"light","icon":"adminer.svg","sha":"28ab6a65c96ce05b9c6aaaa73c643a83b87ad1e5"},{"appid":"317f16f137fe0fd9eaf67dd6e203e50c0c1bf319","name":"Airsonic","website":"https://airsonic.github.io","license":"GNU General Public License v3.0 only","description":"Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work.","enhanced":false,"tile_background":"dark","icon":"airsonic.png","sha":"90ef61a0cbc5d319b74567ef9140b7fc2b9989cf"},{"appid":"4a1349c03398a3e66f6efdf6395fb689d80f83fa","name":"AlarmPI","website":"https://github.com/bkbilly/AlarmPI","license":"MIT License","description":"AlarmPI is a home security system based on Raspberry PI. It supports wired sensors (PIR, Magnetic etc.) and wireless through MQTT or Hikvision.","enhanced":true,"tile_background":"dark","icon":"alarmpi.png","sha":"3544696e4939997b7a5e0606f6aad8894ef0c7ec"},{"appid":"9fe84adc4eb8248be3322c8754a0cf6219d122d6","name":"Alertmanager","website":"https://prometheus.io/docs/alerting/alertmanager","license":"Apache License 2.0","description":"The Alertmanager handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integrations such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts.","enhanced":false,"tile_background":"light","icon":"alertmanager.png","sha":"0629cd8d336db48d0ab01a71c6ad765268ec380e"},{"appid":"65f59ec6b1ecd6170d5044474043cca9560a8071","name":"AMP","website":"https://cubecoders.com/AMP","license":"Proprietary","description":"AMP is short for Application Management Panel. It's our next-generation server administration software built for both users, and service providers. It supports both Windows and Linux based servers and allows you to manage all your game servers from a single web interface.","enhanced":false,"tile_background":"light","icon":"amp.png","sha":"89159941ccea20ed6ee72c5a7856db11e7ee9888"},{"appid":"7779bfb41003301f1b395c0691002423773d68c1","name":"ArchiSteamFarm","website":"https://github.com/JustArchiNET/ArchiSteamFarm","license":"Apache License 2.0","description":"ASF is a C# application with primary purpose of idling Steam cards from multiple accounts simultaneously.","enhanced":true,"tile_background":"dark","icon":"archisteamfarm.png","sha":"49b0730720e68243dd66babcacced16dd8ad972e"},{"appid":"b74f349cf434a529c0fe8589315b5956a4562097","name":"ArchiveBox","website":"https://github.com/pirate/ArchiveBox","license":"MIT License","description":"The open-source self-hosted web archive. ArchiveBox takes a list of website URLs you want to archive, and creates a local, static, browsable HTML clone of the content from those websites (it saves HTML, JS, media files, PDFs, images and more).","enhanced":false,"tile_background":"light","icon":"archivebox.png","sha":"abc85e04ddf5f4e5a125e209245cd4c1ae2bfcd6"},{"appid":"5eef559f19eadb9593bafbd3ca6155dc6721a0d7","name":"ArchiveTeam Warrior","website":"https://www.archiveteam.org/index.php?title=ArchiveTeam_Warrior","license":"The Unlicense","description":"The Archive Team Warrior is a virtual archiving appliance. You can run it to help with the ArchiveTeam archiving efforts. It will download sites and upload them to their archive.","enhanced":false,"tile_background":"light","icon":"archiveteamwarrior.png","sha":"5df88f7b81586ddb802d452c505b2fae619322c7"},{"appid":"88dc19bddba6e23ec39f978777b5adc5784ca27a","name":"Argo CD","website":"https://argoproj.github.io/cd/","license":"Apache License 2.0","description":"Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.","enhanced":false,"tile_background":"dark","icon":"argocd.svg","sha":"d040df83847e75a8192e26ec06730ecc9045de2d"},{"appid":"a0f88a6334b03ff11dc56d1b627f122ccacb75ce","name":"AriaNg","website":"https://github.com/mayswind/AriaNg","license":"MIT License","description":"AriaNg is a modern web frontend making aria2 easier to use. AriaNg is written in pure html & javascript, thus it does not need any compilers or runtime environment. You can just put AriaNg in your web server and open it in your browser. AriaNg uses responsive layout, and supports any desktop or mobile devices.","enhanced":true,"tile_background":"dark","icon":"ariang.png","sha":"4afaa53f32568ccfb9ce2b2a6391c306a3db27c6"},{"appid":"4950589b19623304e3adb649d9eee6a3bf70c35b","name":"Artifactory","website":"https://jfrog.com/open-source","license":"MIT License","description":"Universal Repository Manager, OSS version","enhanced":true,"tile_background":"light","icon":"artifactory.png","sha":"916d921471eedd75eb016f539642c4c8e2adbb3d"},{"appid":"fa8a2fb9dfd946ec30d5e6b2ee69e24f8a252c5b","name":"Asrock Rack IPMI","website":"https://www.asrockrack.com/support/faq.de.asp?id=28","license":"Commercial","description":"Asrock Rack IPMI is an embedded server management technology by Asrock Rack.","enhanced":false,"tile_background":"light","icon":"asrockrackipmi.png","sha":"5061c764360a91c7f2827e079bf2bbdfaa2a1d3c"},{"appid":"6c6defee55d3919ddcc6ca1985984e305e971cb7","name":"Asuswrt","website":"https://www.asus.com/Networking-IoT-Servers/WiFi-Routers/All-series/","license":"MIT License","description":"Asuswrt is the firmware and web UI included on all Asus routers.","enhanced":false,"tile_background":"dark","icon":"asuswrt.png","sha":"d538776111b86233926835cf75fd1c18ec33d583"},{"appid":"4432738a5981dde89b94b751a0179c2fdae7b7cf","name":"Atlantis","website":"http://runatlantis.io","license":"Apache License 2.0","description":"A self-hosted golang application that listens for Terraform pull request events via webhooks.","enhanced":false,"tile_background":"light","icon":"atlantis.png","sha":"e3eb6f6709ef144676584ace82d925d386ba65cd"},{"appid":"c7ec3e2f2d9be6a4d313d2451184b08ade93ce47","name":"Audiobookshelf","website":"https://audiobookshelf.org","license":"GNU General Public License v3.0 or later","description":"Audiobookshelf is a self-hosted audiobook server for managing and playing your audiobooks.","enhanced":false,"tile_background":"dark","icon":"audiobookshelf.svg","sha":"6c26d587a5c66a952b075836a1794e2c335e990f"},{"appid":"34088ce0402f28fca7286fc2d833c0d68b0d28cf","name":"authentik","website":"https://goauthentik.io","license":"GNU General Public License v3.0 or later","description":"authentik is an open-source Identity Provider focused on flexibility and versatility. You can use authentik in an existing environment to add support for new protocols, implement sign-up/recovery/etc. in your application so you don't have to deal with it, and many other things.","enhanced":false,"tile_background":"light","icon":"authentik.svg","sha":"a1a09a62a9f9cd82095680f2596cc0a518dd5e14"},{"appid":"e8354374b262e6f1055e7412d11f24a164a50f79","name":"AVM Fritzbox","website":"https://avm.de","license":"GNU General Public License v2.0 only","description":"\"The\" Fritzbox, stylised as FRITZ!Box, is a series of residential gateway devices produced by the German company AVM GmbH. \r\nFRITZ!OS is the FRITZ!Box operating system and can be easily controlled via your browser. User-friendly menus, easy-to-understand wizards, and the optional advanced mode come in handy in all scenarios.","enhanced":true,"tile_background":"dark","icon":"avmfritzbox.png","sha":"0bede6a64ee25afa18dd232ab60c9110a49582cc"},{"appid":"47bf44c0ec908654f16bacf131107a5aac3ae7b4","name":"AWX","website":"https://github.com/ansible/awx","license":"Apache License 2.0","description":"AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is the upstream project for Tower, a commercial derivative of AWX.","enhanced":true,"tile_background":"dark","icon":"awx.svg","sha":"c9f7c92c713616480b658cde82208b3a33ae35b6"},{"appid":"808ff47f28ddce2652860f5da59a4c62a7e285dd","name":"Bacula","website":"https://www.bacula.org","license":"GNU Affero General Public License v3.0","description":"Bacula is a set of Open Source, computer programs that permit you (or the system administrator) to manage backup, recovery, and verification of computer data across a network of computers of different kinds.","enhanced":false,"tile_background":"light","icon":"bacula.png","sha":"55e77ec8914dcc56b1954a21a042d74b986eee9b"},{"appid":"2577aa56d31c9817a26e412e90d419f70ebc6353","name":"Baikal","website":"https://sabre.io/baikal","license":"GNU General Public License v3.0 only","description":"Baïkal is a lightweight CalDAV+CardDAV server. It offers an extensive web interface with easy management of users, address books and calendars. It is fast and simple to install and only needs a basic php capable server. The data can be stored in a MySQL or a SQLite database.","enhanced":false,"tile_background":"dark","icon":"baikal.png","sha":"5c04abe04e7906f8aea36577f0d1504aa08152ce"},{"appid":"bee3525621cf0e6eba6a30360edb25c79689d869","name":"Barcode Buddy","website":"https://github.com/Forceu/barcodebuddy","license":"GNU Affero General Public License v3.0","description":"Pass barcodes to Barcode Buddy. If already in the Grocys system, it will consume/add/open the product there.\r\nIf an unknown barcode is passed, the product name will be looked up and a corresponding product can be chosen in the Web UI.\r\nTags can be saved — if a new product contains the tag in the name, the product will be already preselected in the drop-down list.","enhanced":false,"tile_background":"light","icon":"barcodebuddy.png","sha":"bfbb13c6f400b440f32d75b3439eb122b0057568"},{"appid":"c07ac2e365e175d304c1cd409bcfc288ff18594f","name":"Bastillion","website":"https://www.bastillion.io","license":"GNU Affero General Public License v3.0 or later","description":"Bastillion is an open-source web-based SSH console that centrally manages administrative access to systems. A bastion host for administrators with features that promote infrastructure security, including key management and auditing.","enhanced":false,"tile_background":"dark","icon":"bastillion.png","sha":"e6b5d880b2e0a35484d3abb9bd6ed4b4ecc54b12"},{"appid":"085f0b437f9bf9c98bb68b745c8dcf323a7e0499","name":"Bazarr","website":"https://github.com/morpheus65535/bazarr","license":"GNU General Public License v3.0 only","description":"Bazarr is a companion application to Sonarr and Radarr. It manage and download subtitles based on your requirements. You defined your preferences by TV show or movies and Bazarr take care of everything for you.","enhanced":true,"tile_background":"dark","icon":"bazarr.png","config":{"type":"apikey","stat1":{"name":"missing series","url":":url:/api/episodes/wanted?apikey=:apikey:","key":"total","filter":"none","updateOnChange":"No"},"stat2":{"name":"missing movies","url":":url:/api/movies/wanted?apikey=:apikey:","key":"total","filter":"none","updateOnChange":"No"}},"sha":"7926f807d914abf0d165c8c3b92d967c620761d5"},{"appid":"8a846dca305866d821748c007cf6b64adf00ea22","name":"Bitwarden","website":"https://bitwarden.com","license":"GNU Affero General Public License v3.0","description":"Open source password management solutions for individuals, teams, and business organizations.","enhanced":false,"tile_background":"dark","icon":"bitwarden.svg","sha":"2a67c1eb11412b228577c993cf217fc866c66f04"},{"appid":"2d90dc53a735b852b3dfe664c991d24183b9484c","name":"BlueIris NVR","website":"https://blueirissoftware.com/","license":"Proprietary","description":"Video Management Software\r\nUse up to 64 cameras (webcams, network IP cams, analog cards, or your Windows PC desktop). Capture JPEG snapshots or movies in standard MP4, AVI, advanced DVR, or Windows Media file formats.","enhanced":true,"tile_background":"light","icon":"blueirisnvr.png","sha":"23db63e5b275e3ef2327f2ef9535952868c13e75"},{"appid":"091d3909d7e0bde850659125a13712c0122a6493","name":"Booksonic","website":"https://booksonic.org","license":"GPL","description":"Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also available on other platforms that have apps for subsonic.","enhanced":false,"tile_background":"dark","icon":"booksonic.png","sha":"4f9c86324a6a46e403cf8ee7545e5adb0c8d43ee"},{"appid":"348c49dd03dddd418929316668d2e67bf2d9ae88","name":"Bookstack","website":"https://www.bookstackapp.com","license":"MIT License","description":"BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information.","enhanced":true,"tile_background":"dark","icon":"bookstack.svg","sha":"3535aa06c2c6f1b4bb4f4bd61ffc102a986adbf4"},{"appid":"c7d8a6d722a1ec9a16fae165177c418d4fd63175","name":"Box","website":"https://box.com","license":"Commercial","description":"The company focuses on cloud content management and file sharing service for businesses.","enhanced":false,"tile_background":"dark","icon":"box.png","sha":"999df093b5bc2368c14ae06be71312e8437cbe93"},{"appid":"36cf09d76e7173b82ef23504aae37c05784b0215","name":"Cabot","website":"https://cabotapp.com","license":"MIT License","description":"Self-hosted watchdog for your websites and infrastructure.","enhanced":true,"tile_background":"light","icon":"cabot.png","sha":"ea42b83ff12dbc91846bd4461d78bd29cf12c430"},{"appid":"d0404064982ed19f24e76ca261e1fbb4d821c2a6","name":"CalibreWeb","website":"https://github.com/janeczku/calibre-web","license":"GNU General Public License v3.0","description":"Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.","enhanced":false,"tile_background":"dark","icon":"calibreweb.png","sha":"7edd0c3312991eb5038a9b301993aa9da8c7c6f0"},{"appid":"c20407dc14e5be5b31ee70f357cec88347e14853","name":"Cannery","website":"https://gitea.bubbletea.dev/shibao/cannery","license":"GNU Affero General Public License v3.0 or later","description":"The self-hosted firearm tracker website.\r\n\r\nEasy to Use: Cannery lets you easily keep an eye on your ammo levels before and after range day\r\nSecure: Self-host your own instance, or use an instance from someone you trust. Your data stays with you, period\r\nSimple: Access from any internet-capable device","enhanced":false,"tile_background":"dark","icon":"cannery.svg","sha":"c05e723d431b7aef13deb1000bb640960721913c"},{"appid":"9f2e2dd8217d1186f9ad484d91e009227efa5897","name":"Cardigann","website":"https://github.com/cardigann/cardigann","license":"MIT License","description":"A proxy server for adding new indexers to Sonarr, SickRage and other media managers","enhanced":false,"tile_background":"light","icon":"cardigann.png","sha":"bc33a93d5c5bab98e8f85b05e438eaceb257ebbb"},{"appid":"9cc25b34048c85c37f5fc6be33ac5caebf9e95c1","name":"Ceph","website":"https://docs.ceph.com/","license":"Creative Commons Attribution Share Alike 3.0 Unported","description":"Ceph uniquely delivers object, block, and file storage in one unified system.","enhanced":false,"tile_background":"dark","icon":"ceph.png","sha":"f190c15a2c8b02cc27aba5810b78da7f90ac77e0"},{"appid":"86c6a58798da154166de71097263f9c40804d636","name":"ChangeDetection.io","website":"https://changedetection.io","license":"Apache License 2.0","description":"Self-hosted change monitoring of web pages.\r\n\r\nKnow when web pages change! Stay ontop of new information!\r\n\r\nLive your data-life pro-actively instead of re-actively, do not rely on manipulative social media for consuming important information.","enhanced":false,"tile_background":"dark","icon":"changedetectionio.png","sha":"a00d472d7cf5ce8af9229b37263dc9a932b34ab9"},{"appid":"c5490738886244f3795807b7cd537fe34df0c274","name":"Channels DVR","website":"https://getchannels.com/dvr/","license":"Commercial","description":"Channels DVR Server runs on your computer or NAS device at home. There's no cloud to worry about. Your recordings and shows will always be available. Simply install Channels DVR Server on a device and Channels will magically see it from any TV or device you own.","enhanced":true,"tile_background":"dark","icon":"channelsdvr.svg","sha":"9dedb519ba07d73c982e8d8ce7b94ba7de239b1c"},{"appid":"ba15c0ff84b20ffe205935dbbf8ffb5f02648632","name":"Checkmk","website":"https://checkmk.com","license":"GNU General Public License v2.0 only","description":"Checkmk is a comprehensive Solution for IT Monitoring of applications, servers, and networks.","enhanced":false,"tile_background":"dark","icon":"checkmk.svg","sha":"e19412e31dc3350d03cccf964f3cd80d51ca8292"},{"appid":"d8a153c2cb84da8b2556b093d1f98659b89d7e26","name":"Chevereto","website":"https://chevereto.com","license":"GNU Affero General Public License v3.0 only","description":"Chevereto Free is a powerful and fast open source image hosting script that allows you to create your very own image hosting website in just minutes.","enhanced":false,"tile_background":"light","icon":"chevereto.png","sha":"36d27b675901547a2928927174c82ef0a386a887"},{"appid":"7799a0f63bdae67145c85519239860c8882f9a64","name":"Chronograf","website":"https://www.influxdata.com/time-series-platform/chronograf","license":"GNU Affero General Public License v3.0 or later","description":"Chronograf is an open-source web application designed to visualize\r\nmonitoring data and create alerting and automation rules.","enhanced":false,"tile_background":"dark","icon":"chronograf.png","sha":"26a32b40b860e0e63842363581b8e4e587b474b7"},{"appid":"e4b57a729acdf2e7eefcb9c3022796ed5fdb9aca","name":"Clarkson","website":"https://github.com/linuxserver/Clarkson","license":"MIT License","description":"Clarkson is a web-based dashboard application that gives you a neat and clean interface for logging your fuel fill-ups for all of your vehicles. The application has full multi-user support, as well as multiple vehicles per user. Whenever you fill-up your car or motorcycle, keep the receipt and record the data in Clarkson.","enhanced":false,"tile_background":"light","icon":"clarkson.png","sha":"76473b5600323b6c2a1aaa71eb0c7518cdd4878a"},{"appid":"4581fc009cf3e648c61a17a28e5764f5d034976c","name":"Clash","website":"https://github.com/Dreamacro/clash","license":"GNU General Public License v3.0 only","description":"A rule-based tunnel in Go.","enhanced":true,"tile_background":"light","icon":"clash.png","sha":"a3ea04fdb7b41603c196b33e7ba40aad5d6a4a7e"},{"appid":"6f968228bc1947fee1320a37c5b2429dfdbf8081","name":"Cloud CMD","website":"http://cloudcmd.io","license":"MIT License","description":"Cloud Commander a file manager for the web with console and editor. Will help you manage the server and work with files, directories and programs in browser from any computer, mobile or tablet.","enhanced":false,"tile_background":"dark","icon":"cloudcmd.png","sha":"685e5388778e819ab3adf67be074f46c605e9f8d"},{"appid":"f036f579066ad71bd653f5a6418dbede5b500370","name":"Cloudflare","website":"https://dash.cloudflare.com/","license":"Commercial","description":"Cloudflare DNS is an enterprise-grade authoritative DNS service that offers the fastest response time, unparalleled redundancy, and advanced security with built-in DDoS mitigation and DNSSEC.","enhanced":false,"tile_background":"dark","icon":"cloudflare.svg","sha":"4434f47ff1dccfa9b935a68e7485a10171f5c4e5"},{"appid":"e4475bc2121ed1ffd1e742c7c2521ca0f16cef93","name":"Cockpit","website":"https://cockpit-project.org","license":"GNU Lesser General Public License v2.1 only","description":"Cockpit is an interactive server admin interface. It is easy to use and very lightweight. Cockpit interacts directly with the operating system from a real Linux session in a browser.","enhanced":false,"tile_background":"dark","icon":"cockpit.png","sha":"f4b9706005a04ff8df78653ebd0b8081997d610f"},{"appid":"ca6a902fe117cd57f037f771998f6c6f35f87be2","name":"Cockpit CMS","website":"https://getcockpit.com","license":"MIT License","description":"Cockpit is an open source, self-hosted, headless and api-driven CMS. It's a simple content platform to manage any structured content.","enhanced":false,"tile_background":"light","icon":"cockpitcms.png","sha":"c009e397c56a3a5bffcc39a26fa55861a4fe7f36"},{"appid":"9eebc5964efd0e6656fe4f143474988bde6c9ef3","name":"Code server","website":"https://github.com/cdr/code-server","license":"MIT License","description":"code-server is VS Code running on a remote server, accessible through the browser.","enhanced":false,"tile_background":"light","icon":"codeserver.png","sha":"1cc504efd4cc517c9949a94a725441f80f26816b"},{"appid":"2ab436efba9e25585ac0ed6232c92fa57173a4aa","name":"CodiMD","website":"https://codimd.org","license":"GNU Affero General Public License v3.0","description":"CodiMD is a realtime, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.","enhanced":false,"tile_background":"light","icon":"codimd.png","sha":"5bc5a27853267f69357d1bc91b2fd331e40e0ccc"},{"appid":"03959669b24360f78cd9d5f092ac57a80074b3ac","name":"Concourse","website":"https://concourse-ci.org","license":"Apache License 2.0","description":"Concourse is an open-source continuous thing-doer.\r\n\r\nBuilt on the simple mechanics of resources, tasks, and jobs, Concourse presents a general approach to automation that makes it great for CI/CD.","enhanced":false,"tile_background":"light","icon":"concourse.png","sha":"5a2a8c29e16cf84bc5746912f4c27df1204453c1"},{"appid":"cfca44c2f5ed9c775cf5953ef3a3ab86eae6cb8a","name":"Confluence","website":"https://www.atlassian.com/software/confluence","license":"Commercial","description":"A shared workspace tool for documentation, planning and notes with powerful collaboration features and easy-to-use WYSIWYG editing.","enhanced":false,"tile_background":"dark","icon":"confluence.svg","sha":"da9016f20ecac9fce9202e60228699965b91990c"},{"appid":"8629d759d41163a10142fabb192a49dc33d4b959","name":"CouchPotato","website":"https://couchpota.to","license":"GNU General Public License v3.0 only","description":"Download movies automatically, easily and in the best quality as soon as they are released, via usenet or torrents.","enhanced":true,"tile_background":"dark","icon":"couchpotato.svg","sha":"d16aeff701e5d5f6661dcf0122dcf9394fdfd8df"},{"appid":"fef97bae9058a5beeacfc2ec9de3fec9c97969ec","name":"cPanel","website":"https://www.cpanel.net","license":"Proprietary","description":"cPanel & WHM is a suite of tools built for Linux OS that gives you the ability to automate web hosting tasks via a simple graphical user interface. Its goal — to make managing servers easier for you and managing websites easier for your customers.","enhanced":false,"tile_background":"light","icon":"cpanel.png","sha":"8da4e36fa950f3d9929c53f34a27ad3ff7fd89d4"},{"appid":"3d6a86d0b53584491e13b12173441f0b945307d2","name":"crowdsec","website":"https://crowdsec.net/","license":"MIT License","description":"CrowdSec is a free, modern & collaborative behavior detection engine, coupled with a global IP reputation network. It stacks on fail2ban's philosophy but is IPV6 compatible and 60x faster (Go vs Python), uses Grok patterns to parse logs and YAML scenario to identify behaviors. CrowdSec is engineered for modern Cloud / Containers / VM based infrastructures (by decoupling detection and remediation). Once detected you can remedy threats with various bouncers (firewall block, nginx http 403, Captchas, etc.) while the aggressive IP can be sent to CrowdSec for curation before being shared among all users to further improve everyone's security.","enhanced":false,"tile_background":"dark","icon":"crowdsec.png","sha":"cc965b4d99d51ae0e735458575c34a732b719edb"},{"appid":"e677af5c4f005d316f3a74b26b0134cfe5288033","name":"CryptPad","website":"https://cryptpad.fr","license":"GNU Affero General Public License v3.0 or later","description":"The Zero Knowledge, Self-Hosted Cloud. CryptPad is a private-by-design alternative to popular office tools and cloud services. All the content stored on CryptPad is encrypted before being sent, which means nobody can access your data unless you give them the keys (not even us).","enhanced":false,"tile_background":"light","icon":"cryptpad.png","sha":"e0184a7ae85b3630580bb5fa31e55183b2fef2bf"},{"appid":"ba8ed4dc9e438b22c9456a78a2c09652955be42c","name":"CUPS","website":"https://www.cups.org","license":"GNU General Public License v1.0 or later","description":"The standards-based, open source printing system developed by Apple for iOS®, iPadOS®, and macOS®. CUPS uses IPP Everywhere™ to support printing to local and network printers.","enhanced":false,"tile_background":"light","icon":"cups.svg","sha":"89a32d4659131e96b12e89bdb28e17c13b15e218"},{"appid":"f3319963720d2293ed504bb1f5c1c4a879147a34","name":"Dashdot","website":"https://getdashdot.com/","license":"MIT License","description":"Dash. (or Dashdot) is a modern server dashboard, running on the latest tech, designed with glassmorphism in mind. It is intended to be used for smaller VPS and private servers.","enhanced":false,"tile_background":"dark","icon":"dashdot.png","sha":"5d0f94065a29b773d0234e683d0f784e56379c03"},{"appid":"bc28bfa49a73fd2384cbecd6572ea72d0166aa28","name":"Deluge","website":"https://deluge-torrent.org","license":"GNU General Public License v3.0 only","description":"Deluge is a BitTorrent client written in Python. Deluge is cross-platform, using a front and back end architecture where libtorrent, a software library written in C++ which provides the application's networking logic, is connected to one of various front ends through the project's own Python bindings","enhanced":true,"config":{"auth_payload":{"method":"auth.login","id":1,"params":[":password:"]},"type":"apikey","stats":[{"name":"Queue","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.sizeleft","filter":"size","updateOnChange":"Yes","suffix":""},{"name":"Speed","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.speed","filter":"speed","updateOnChange":"Yes","suffix":""}],"stat1":{"name":"Queue","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.sizeleft","filter":"size","updateOnChange":"Yes","suffix":""},"stat2":{"name":"Speed","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.speed","filter":"speed","updateOnChange":"Yes","suffix":""}},"tile_background":"dark","icon":"deluge.svg","sha":"a35de4fe509f254d52a6f9bfb297dcdfd0255f6c"},{"appid":"3561ed8ae1660eadbe92128eedcff5e6f8e9280e","name":"Dillinger","website":"https://dillinger.io","license":"MIT License","description":"Dillinger is a cloud-enabled, mobile-ready, offline-storage compatible,\r\nAngularJS-powered HTML5 Markdown editor.","enhanced":false,"tile_background":"dark","icon":"dillinger.png","sha":"31a0873cff13ec58b8d729b46bb8ad2d54bc5f2c"},{"appid":"d8f39246e8c87704876f107fc4ca01c962abf53d","name":"DirectAdmin","website":"https://www.directadmin.com/","license":"Proprietary","description":"DirectAdmin is a graphical web-based web hosting control panel allowing administration of websites through a web browser. The software is configurable to enable standalone, reseller, and shared web hosting from a single instance. DirectAdmin also permits management of server tasks and upgrades to package software (such as Apache HTTP Server, PHP, and MySQL ) from within the control panel - simplifying server and hosting configuration.","enhanced":false,"tile_background":"dark","icon":"directadmin.svg","sha":"03ee57a37b17f55ce3d7c145e12c4e48d1edadee"},{"appid":"12764b8bb7cd332f7d4937851a2af2815df706ac","name":"Directus","website":"https://directus.io","license":"GNU General Public License v3.0 only","description":"Directus is a future-proof, open source, headless CMS to manage all your content in one place. It's elegant and easy user interface will enable you to craft powerfull content backend APIs in minutes.","enhanced":false,"tile_background":"dark","icon":"directus.png","sha":"7b9bc57245ca33420f1ad65ce429c926a0884558"},{"appid":"a17f1a47dbc391814d321ae33ad51c0c7695a08d","name":"DokuWiki","website":"https://www.dokuwiki.org","license":"GNU General Public License v2.0 only","description":"DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database.","enhanced":false,"tile_background":"dark","icon":"dokuwiki.png","sha":"701b523e48f2989fb2e3061f19bc8d0f5ccfd985"},{"appid":"17ea5305bc5cb99da61e121542864bb15e280f30","name":"Domoticz","website":"https://www.domoticz.com","license":"GNU General Public License v3.0 only","description":"Open source Home Automation System","enhanced":true,"tile_background":"dark","icon":"domoticz.png","sha":"4893b1af680483adc240ba6b3cd4ac4c4a1bec2a"},{"appid":"45468267c4cf4e7260419a2a7c24bab37dc5cbe9","name":"Double Commander","website":"https://doublecmd.sourceforge.io/","license":"GNU General Public License v2.0 or later","description":"Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.","enhanced":false,"tile_background":"dark","icon":"doublecommander.svg","sha":"560ac70f5f2f63f8874f76f43a4673167940bc3f"},{"appid":"176d99d897dbd7c02b1a1db4142054f74a76aa47","name":"Dozzle","website":"https://dozzle.dev","license":"MIT License","description":"Dozzle is a real-time log viewer for docker containers.","enhanced":false,"tile_background":"dark","icon":"dozzle.png","sha":"96a3bdfb32723bc9742363a9b8e34cb5c1713196"},{"appid":"1430fd26ed07651f08ab03098c8e6745701abf6a","name":"Drone","website":"https://github.com/drone/drone","license":"Apache License 2.0","description":"Drone is a Continuous Delivery system built on container technology. Drone uses a simple YAML configuration file, a superset of docker-compose, to define and execute Pipelines inside Docker containers.","enhanced":false,"tile_background":"light","icon":"drone.svg","sha":"42717ab152bddc89a5327e849bbf07d631129b8a"},{"appid":"ff96f6956d6ce73ca564a5843157a9849a8f1c58","name":"Droppy","website":"https://github.com/silverwind/droppy","license":"BSD Source Code Attribution","description":"droppy is a self-hosted file storage server with a web interface and capabilities to edit files and view media directly in the browser. It is particularly well-suited to be run on low-end hardware like the Raspberry Pi.","enhanced":false,"tile_background":"light","icon":"droppy.png","sha":"612d672ee02f3231b6d04cc98d134d4921f18b8c"},{"appid":"311aa8b0218a2cac6b81d9ed1bb7814531fbeb03","name":"Duet Web Control","website":"www.duet3d.com","license":"GNU General Public License v3.0 or later","description":"Duet3D is a manufacturer and maintainer of 3D and CNC control boards and firmware (RepRap Firmware). Their boards can be controlled via a lightweight web UI called Duet Web Control (DWC).","enhanced":true,"tile_background":"light","icon":"duetwebcontrol.png","sha":"f2ca8384b441d5e51a3dc1006ae8f140c99e3e4c"},{"appid":"9a5f55cd744dbbcb8b1cffdd748605565da9edce","name":"Duplicacy","website":"https://duplicacy.com","license":"Commercial","description":"Duplicacy is a new generation cross-platform cloud backup tool. Duplicacy backs up your files to many cloud storage locations with compression, client-side encryption, and the highest level of deduplication.\r\nFeature-Driven Design:\r\nIncremental backup - Only back up what has been changed\r\nFull snapshot - Although each backup is incremental, it must behave like a full snapshot for easy restore and deletion\r\nDeduplication - Identical files must be stored as one copy (file-level deduplication), and identical parts from different files must be stored as one copy (block-level deduplication)\r\nEncryption -Encrypt not only file contents but also file paths, sizes, times, etc.\r\nDeletion - Every backup can be deleted independently without affecting others\r\nConcurrent backup - Multiple clients can back up to the same storage at the same time\r\nBackup migration - All or selected backups can be migrated from one storage to another","enhanced":false,"tile_background":"dark","icon":"duplicacy.png","sha":"5b69ebbf7c7d88b59dca63bcf149e8a7a7a9afcc"},{"appid":"bc99430645db7c79e2901d65598bb8cf91f77b4e","name":"Duplicati","website":"https://www.duplicati.com","license":"GNU Lesser General Public License v2.1 only","description":"Free backup software to store backups online with strong encryption. Works with FTP, SSH, WebDAV, OneDrive, Amazon S3, Google Drive and many others.","enhanced":true,"tile_background":"dark","icon":"duplicati.png","sha":"f1586d174cbbe779472b05a346e37010f53e68e3"},{"appid":"dece05484839df110745b0a800297c33cc078287","name":"Element","website":"https://element.io","license":"Apache License 2.0","description":"All-in-one secure chat app for teams, friends and organisations. Keeps conversations in your control, safe from data-mining and ads. Talk to everyone through the open global Matrix network, protected by proper end-to-end encryption.","enhanced":false,"tile_background":"dark","icon":"element.png","sha":"594e67b829c6fdddb11955d7ee13e952c4b7687c"},{"appid":"3021fea57e9b932f14822d47e47d163f47812ef1","name":"Emby","website":"https://emby.media","license":"Proprietary","description":"Emby (formerly Media Browser) is a media server designed to organize, play, and stream audio and video to a variety of devices.","enhanced":true,"tile_background":"dark","icon":"emby.png","config":{"type":"apikey","stat1":{"name":"Movies","url":":url:emby/Items/Counts?api_key=:apikey:","key":"MovieCount","filter":"none","updateOnChange":"No","suffix":""},"stat2":{"name":"Series","url":":url:emby/Items/Counts?api_key=:apikey:","key":"SeriesCount","filter":"none","updateOnChange":"No","suffix":""}},"sha":"8c06b9dc08a01f7510355fdfb474000f1bc5f7ec"},{"appid":"226df5bc61e5f2e107911be546e20ef7f1397e07","name":"EmbyStat","website":"https://github.com/mregni/EmbyStat","license":"MIT License","description":"Multiplatform statistics server for Emby server.","enhanced":false,"tile_background":"dark","icon":"embystat.png","sha":"d9cb902fe5e1cdad529d0af101ff200248100bc8"},{"appid":"6b1df10bbb1575fb941f402500ccb516ac34b542","name":"ESPHome","website":"https://esphome.io","license":"MIT License","description":"ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.","enhanced":false,"tile_background":"light","icon":"esphome.png","sha":"fa62b7cc8d462d1a57bb26cd5a5debc48ba5f587"},{"appid":"0b0f769acf9c7ff5190df937cf4b57ec4036e56e","name":"Etherpad","website":"https://etherpad.org/","license":"Apache License 2.0","description":"Etherpad is a highly customizable open source online editor providing collaborative editing in really real-time.","enhanced":false,"tile_background":"dark","icon":"etherpad.png","sha":"bb2aafc6fdfea0fdec9d21fcc8b91b21fdb26690"},{"appid":"601c9ad5341b0ba351540520eabd0a6cb1526a86","name":"FileBot","website":"https://www.filebot.net","license":"Commercial","description":"FileBot is the ultimate tool for renaming and organizing your movies, TV shows and Anime. Match and rename media files against online databases, download artwork and cover images, fetch subtitles, write metadata, and more, all at once in matter of seconds. It's smart and just works.","enhanced":false,"tile_background":"dark","icon":"filebot.svg","sha":"1f152c107a112ec62742bf2c0c50c84cb83b8bfe"},{"appid":"ba05dd8e070851895ee6184eb9778cfa0753a490","name":"FileBrowser","website":"https://github.com/filebrowser/filebrowser","license":"Apache License 2.0","description":"filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.","enhanced":false,"tile_background":"dark","icon":"filebrowser.svg","sha":"3394274c805da4875610b0bf14160fdb94674440"},{"appid":"a3440558df5c42ea2fdaf402aa9624d5ee586515","name":"FileFlows","website":"https://fileflows.com","license":"Freemium","description":"Application that processes files using Flow based rules. Primarily designed to convert video files to specific formats automatically","enhanced":true,"tile_background":"dark","icon":"fileflows.png","sha":"d069f2578d166101a9e06cb318629a7c3835009f"},{"appid":"b8fa84fbe86d39557144410d201d466c53cb0c4e","name":"FileRun","website":"https://filerun.com","license":"Commercial","description":"FileRun is a self-hosted Google Drive alternative. It is a full featured web based file manager with an easy to use user interface. It is great for managing your photo, movie, audio collection, or sharing files with your family and friends.","enhanced":false,"tile_background":"light","icon":"filerun.svg","sha":"2e3e5815fc372edba15a88ddf75915724cc24853"},{"appid":"f798d73306e6c7b7145b163baf11d88f43c91527","name":"Firefly 3","website":"https://www.firefly-iii.org","license":"GNU General Public License v3.0 only","description":"\"Firefly III\" is a (self-hosted) manager for your personal finances. It can help you keep track of your expenses and income, so you can spend less and save more. Firefly III supports the use of budgets, categories and tags. It can import data from external sources and it has many neat financial reports available. (Taken from the README)","enhanced":false,"tile_background":"light","icon":"firefly.png","sha":"bc52f78310ed6dd7630cda76ceb7836bfb834e5e"},{"appid":"675e42556cab1552e279e17a1f2a363e334fd2f0","name":"Firefox Send","website":"https://send.firefox.com","license":"Mozilla Public License 2.0","description":"Firefox Send lets you share files with end-to-end encryption and a link that automatically expires. So you can keep what you share private and make sure your stuff doesn’t stay online forever.","enhanced":false,"tile_background":"light","icon":"firefoxsend.png","sha":"488d5bdcb766bd09fcf51d47135dac93719f3eff"},{"appid":"bbe5a51792acf2e90900e10d33bb02a86a50b6ff","name":"FlexGet","website":"https://www.flexget.com","license":"MIT License","description":"like sonarr and radarr etc. combined, but with integrations to trakt.tv etc. Actually very capable","enhanced":false,"tile_background":"dark","icon":"flexget.png","sha":"1d9d42524d2c6545c8ad1ca5781b2ea28d5d03f0"},{"appid":"ff0db992256ad5c44c979bf4be0234a919eccdc7","name":"Flood","website":"https://github.com/jfurrow/flood","license":"GNU General Public License v3.0 only","description":"A web UI for rTorrent with a Node.js backend and React frontend.","enhanced":false,"tile_background":"light","icon":"flood.png","sha":"c1808f0b6feecd076f4b6009c2cabb983e762030"},{"appid":"0619bf7cc62aeb10ccbf7566912d4d44bb42e7a5","name":"Focalboard","website":"https://www.focalboard.com","license":"Apache License 2.0","description":"Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.\r\nIt's a project management tool that helps define, organize, track and manage work across teams, using a familiar kanban board view.","enhanced":false,"tile_background":"light","icon":"focalboard.svg","sha":"1db7662ce076e1422b6f9418e1ce97a20d9a9e24"},{"appid":"d4f480701f176a366bb9175ce282f80d18da5122","name":"Folding@Home","website":"https://foldingathome.org","license":"Proprietary","description":"Folding@home is a project focused on disease research. The problems we’re solving require so many computer calcul­ations – and we need your help to find the cures!\r\nAccess the your F@H webUI directly from Heimdall.","enhanced":true,"tile_background":"dark","icon":"foldingathome.svg","sha":"9ab69768b367ef1e54c300b30b7e6c52476048d8"},{"appid":"4179f0ec44f292021561f0ef872892aaf604f670","name":"Fortinet FortiMonitor","website":"https://fortimonitor.forticloud.com","license":"Commercial","description":"FortiMonitor helps organizations modernize their performance-monitoring tools into a comprehensive digital experience monitoring platform to gain end-to-end visibility into the overall user experience. It doesn’t matter where the user resides or where the application is hosted.","enhanced":true,"tile_background":"light","icon":"fortinetfortimonitor.png","sha":"b119f8e238b07604af99d1ae1b3597ffcab9efb8"},{"appid":"3d258071fa9cd41a85627f6bf7fc6998c3a8f5cf","name":"Freenas","website":"https://www.freenas.org","license":"BSD-2-Clause","description":"FreeNAS is an embedded open source network-attached storage (NAS) operating system based on FreeBSD.","enhanced":true,"tile_background":"light","icon":"freenas.png","sha":"9143845d0b4624a8e26b698f6c6bd1ee7c72590c"},{"appid":"370f94c68bf709289a0193e0a5c83c6fbd1ac06e","name":"FreePBX","website":"https://www.freepbx.org/","license":"GNU General Public License v1.0 or later","description":"FreePBX is an open source community\r\nCompletely free to download and use, the power of FreePBX comes from a global community of developers who ensure it remains a high compatibility and customizable platform with all the key features needed to build a scalable business phone system on any budget.\r\n\r\nWith millions of installations worldwide and a very active development base, the FreePBX community continues to out-perform the telecom industry’s commercial efforts.","enhanced":false,"tile_background":"light","icon":"freepbx.png","sha":"0d53de427a89439c17cd3746ef7b8bc19b71d97c"},{"appid":"5c68de7acdaff4da4f680545bb51a847840c81da","name":"FreshRSS","website":"https://freshrss.org","license":"GNU Affero General Public License v3.0","description":"FreshRSS is a self-hosted RSS feed aggregator. It is lightweight, easy to work with, powerful and customizable.","enhanced":true,"tile_background":"dark","icon":"freshrss.svg","sha":"b64eed3e6ba6a5f19e625e8641456df2fc90c578"},{"appid":"d27d8db484c3e734262730b0673f158f1f88924d","name":"Frigate","website":"https://frigate.video/","license":"MIT License","description":"Frigate is an open source NVR built around real-time AI object detection. All processing is performed locally on your own hardware, and your camera feeds never leave your home.","enhanced":false,"tile_background":"light","icon":"frigate.svg","sha":"f25395f3b31fc32f928434744687acb533b3d16f"},{"appid":"36211c66ecd5984827673c89373ae184f06c000f","name":"Fronius","website":"https://www.fronius.com","license":"MIT License","description":"This app allows to monitor the electrical production of the photovoltaic panels connected to a Fronius inverter.\r\n\r\nThe enhanced app connects to the inverter API and shows the current production of the system, as well as the daily production.","enhanced":true,"tile_background":"dark","icon":"fronius.svg","sha":"8a7791f2fb65667c28467bff29de75a9999adf41"},{"appid":"7853f58e7245aa624ddec1f97d7b4c18ac0047c7","name":"Funkwhale","website":"https://funkwhale.audio","license":"GNU Affero General Public License v3.0 only","description":"Funkwhale is a community-driven project that lets you listen and share music and audio within a decentralized, open network.","enhanced":false,"tile_background":"light","icon":"funkwhale.svg","sha":"f26c47daec9176db985f751e2f67ca7614559f87"},{"appid":"c4745785181de931cfd5bd79294cb1687d82aea9","name":"Ghost","website":"https://ghost.org","license":"MIT License","description":"Fiercely independent, professional publishing. A fully open source, powerful platform for building and running modern publications, we power serious blogs, magazines and journalism from DuckDuckGo to OpenAI & Sky News.","enhanced":true,"tile_background":"light","icon":"ghost.png","sha":"150f1fdace314c2d9e48c2a16542c44228274ba7"},{"appid":"060b3b99f88e96085b4a68e095bc9e3d1d91e1bc","name":"Gitea","website":"https://gitea.io","license":"MIT License","description":"Gitea is a community managed fork of Gogs, lightweight code hosting solution written in Go and published under the MIT license.","enhanced":false,"tile_background":"dark","icon":"gitea.svg","sha":"9367839859b83454562a0dedf6eaea46947122ec"},{"appid":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044","name":"GitHub","website":"https://github.com","license":"MIT License","description":"GitHub brings together the world's largest community of developers to discover, share, and build better software.","enhanced":false,"tile_background":"light","icon":"github.svg","sha":"2142344091362df12eaba1ce71dcffae2ac27f24"},{"appid":"322f31631de66bcf71bd6c199b41606d516fe3f9","name":"GitLab","website":"https://gitlab.com","license":"MIT License","description":"From project planning and source code management to CI/CD and monitoring, GitLab is a single application for the entire DevOps lifecycle.","enhanced":true,"tile_background":"dark","icon":"gitlab.svg","sha":"94a2ed3b2643daeda04924d28de43dd2962c6d86"},{"appid":"8acd9f66ec707deda1345479909166aa1c31bdad","name":"Glances","website":"https://nicolargo.github.io/glances","license":"GNU Lesser General Public License v3.0 only","description":"Glances is a cross-platform monitoring tool which aims to present a large amount of monitoring information through a curses or Web based interface.","enhanced":false,"tile_background":"dark","icon":"glances.png","sha":"06c12bbb9bfd7839ba8e22d6166fb1ca36796dbc"},{"appid":"df505c6582933deef50ad5181747782f1f514713","name":"Gogs","website":"https://gogs.io","license":"MIT License","description":"A painless self-hosted Git service.","enhanced":false,"tile_background":"dark","icon":"gogs.png","sha":"d13fdfb5ee9cec86aaf529ccb4bb3f542bcf655d"},{"appid":"b3fdc0b49deb0e7db32311b64867b000409193e5","name":"Gotify","website":"https://gotify.net","license":"MIT License","description":"A self-hosted push notification service.","enhanced":false,"tile_background":"dark","icon":"gotify.png","sha":"f1a398a2e69050427261ca0e04f38f62ab3efa2e"},{"appid":"f519bce8b0ae84d8dbbc0a793bf6a180043be855","name":"Grafana","website":"https://grafana.com","license":"Apache License 2.0","description":"Data visualization & Monitoring with support for Graphite, InfluxDB, Prometheus, Elasticsearch and many more databases.","enhanced":false,"tile_background":"dark","icon":"grafana.svg","sha":"29551c5fdf968e4f43dcc016f58cba8350e4611f"},{"appid":"b1577ad1f7e68c2190f8c68885f945c855b0d5ea","name":"Grav","website":"https://getgrav.org","license":"MIT License","description":"Grav is a Fast, Simple, and Flexible, file-based Web-platform. There is Zero installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful Package Management System to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.","enhanced":false,"tile_background":"light","icon":"grav.png","sha":"d4405df18389204cc02565215a7c01483c841963"},{"appid":"6d88bccf40bf65b911fe79d78c7af98e382f0c1a","name":"Graylog","website":"https://www.graylog.org","license":"GNU General Public License v3.0 only","description":"Finally, all your log data available and accessible in one central location. Graylog is an open source log management platform.","enhanced":false,"tile_background":"dark","icon":"graylog.svg","sha":"15f3ea8e7d30d155435efee73c36d5e3fd7357cb"},{"appid":"c1292685cddb9472cece8e457c31fbf6446d5010","name":"Grocy","website":"https://grocy.info","license":"MIT License","description":"grocy is a web-based self-hosted groceries & household management solution for your home.","enhanced":false,"tile_background":"light","icon":"grocy.svg","sha":"9e0d4b84c27cf4565cb5f64e1e37338cde88364f"},{"appid":"1c772e7ff575c76274b2ab9f90d82b428029b50b","name":"Guacamole","website":"https://guacamole.apache.org","license":"Apache License 2.0","description":"Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.","enhanced":false,"tile_background":"dark","icon":"guacamole.png","sha":"ba0d694ab5050082479c6b152c2a28303e8619ed"},{"appid":"b96c7f74fe817b3fb2ea26bfefbf26efaffe6dea","name":"Handbrake","website":"https://handbrake.fr","license":"GNU General Public License v2.0 or later","description":"HandBrake is a tool for converting video from nearly any format to a selection of modern, widely supported codecs.\r\n\r\nThe GUI of the application is accessed through a modern web browser (no installation or configuration needed on client side) or via any VNC client.\r\n\r\nA fully automated mode is also available: drop files into a watch folder and let HandBrake process them without any user interaction.","enhanced":false,"tile_background":"dark","icon":"handbrake.png","sha":"cf7f321fac4776eae2a80282714117809e05d167"},{"appid":"b6ac1c3e3b1f6f4296faceeb0eaeda83d1f578a4","name":"HAProxy","website":"http://www.haproxy.org","license":"GNU General Public License v3.0 or later","description":"HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It is particularly suited for very high traffic web sites and powers quite a number of the world's most visited ones. Over the years it has become the de-facto standard opensource load balancer, is now shipped with most mainstream Linux distributions, and is often deployed by default in cloud platforms.","enhanced":false,"tile_background":"dark","icon":"haproxy.png","sha":"75d6da16b65372bc8e1e9677dd5c025c291368e1"},{"appid":"e347660d52d87798674d406f8c820aa07835b0be","name":"Harbor","website":"https://goharbor.io","license":"Apache License 2.0","description":"Harbor is an open source registry that secures artifacts with policies and role-based access control, ensures images are scanned and free from vulnerabilities, and signs images as trusted. Harbor, a CNCF Graduated project, delivers compliance, performance, and interoperability to help you consistently and securely manage artifacts across cloud native compute platforms like Kubernetes and Docker.","enhanced":false,"tile_background":"dark","icon":"harbor.svg","sha":"c0a167a624de7ce6e43f9ddf8e95239c4b6e62ea"},{"appid":"241e4d951466ee4a38bde6aa73f7c8f0fab3a3f2","name":"Hasura","website":"https://hasura.io","license":"Apache License 2.0","description":"Instantly make your data accessible over GraphQL.","enhanced":false,"tile_background":"light","icon":"hasura.svg","sha":"60e060c56c1e7fdaee152345803ba61b109fa5d7"},{"appid":"8fe021dbb159e76695ab080421f68fac90579b0c","name":"HDHomeRun","website":"https://www.silicondust.com","license":"Proprietary","description":"The DVR reimagined. Watch and Record all of your favorite live TV. Your way.","enhanced":true,"tile_background":"dark","icon":"hdhomerun.png","sha":"37b1772fc1d160098f8976089e6be773832d68e0"},{"appid":"355bf1cb47b9ff34cad71db2350056dfb2794c68","name":"Headphones","website":"https://github.com/rembo10/headphones","license":"GNU General Public License v3.0 only","description":"Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, µTorrent, Deluge and Blackhole.","enhanced":false,"tile_background":"dark","icon":"headphones.png","sha":"9c786b106f7bf68916d68177bebd78152ae3b26c"},{"appid":"2d97a1f26a2c0647566d6e0a1779a024607f9f1d","name":"Healthchecks","website":"https://healthchecks.io","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Instant alerts when your cron jobs fail silently.","enhanced":false,"tile_background":"light","icon":"healthchecks.png","sha":"40005b6ddc7143293f3cae8b7760bb61a009154b"},{"appid":"b2005b3bb19b3916425998c0edd72b97667ec1fc","name":"Heimdall","website":"https://heimdall.site/","license":"MIT License","description":"As the name suggests Heimdall Application Dashboard is a dashboard for all your web applications. It doesn't need to be limited to applications though, you can add links to anything you like.\r\nHeimdall is an elegant solution to organise all your web applications. It’s dedicated to this purpose so you won’t lose your links in a sea of bookmarks.\r\nWhy not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.","enhanced":true,"tile_background":"dark","icon":"heimdall.png","sha":"be75b2d1b62c83b8db8c7f8dd37a5eba38a3acab"},{"appid":"5c81a4f5ee23ebffa0724a22a040c54e6cb9d7c5","name":"HomeAssistant","website":"https://www.home-assistant.io","license":"Apache License 2.0","description":"Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.","enhanced":true,"tile_background":"dark","icon":"homeassistant.svg","sha":"53580b25cf28e06e914fe133cc50032cb8089ac4"},{"appid":"7d9fd30322f354d733c7c3b1b395f1655d12beb0","name":"Homebridge","website":"https://homebridge.io","license":"Apache License 2.0","description":"Homebridge is a lightweight NodeJS server you can run on your home network that emulates the iOS HomeKit API. It supports Plugins, which are community-contributed modules that provide a basic bridge from HomeKit to various 3rd-party APIs provided by manufacturers of \"smart home\" devices.\r\n\r\nSince Siri supports devices added through HomeKit, this means that with Homebridge you can ask Siri to control devices that don't have any support for HomeKit at all.","enhanced":true,"tile_background":"dark","icon":"homebridge.svg","sha":"bd7cc130c59547350c3d457d891546a0805ec19f"},{"appid":"8a30fca9ea5b46722cbdad24c7470a442718cac8","name":"Homer","website":"https://github.com/bastienwirtz/homer","license":"Apache License 2.0","description":"A very simple static homepage for your server.","enhanced":false,"tile_background":"dark","icon":"homer.svg","sha":"990c76392bc84c6f82abad1455badccb5c72129a"},{"appid":"e79bac4ca442f484164741d7d41ea4e2426b308e","name":"Hubitat","website":"https://hubitat.com","license":"Proprietary","description":"Hubitat is a home automation platform supporting z-wave, zigbee, and many other devices. It offers local administration and remote access.","enhanced":false,"tile_background":"dark","icon":"hubitat.png","sha":"3c822e0c421e74f0629546e5a08d78ab3033230c"},{"appid":"2403e3c8c1da513b11a77bf482cd494658695d05","name":"Huginn","website":"https://github.com/huginn/huginn","license":"MIT License","description":"Huginn is a system for building agents that perform automated tasks for you online. They can read the web, watch for events, and take actions on your behalf. Huginn's Agents create and consume events, propagating them along a directed graph. Think of it as a hackable version of IFTTT or Zapier on your own server.","enhanced":false,"tile_background":"dark","icon":"huginn.png","sha":"6893bed4a90d7c188552f4e0ccd8166bc8bace52"},{"appid":"13a2a3d6e668c91b77ccc436162118ce7568ee4e","name":"Icecast","website":"https://icecast.org","license":"GNU General Public License v2.0 only","description":"Icecast is a streaming media (audio/video) server which currently supports Ogg (Vorbis and Theora), Opus, WebM and MP3 streams.\r\nIt can be used to create an Internet radio station or a privately running jukebox and many things in between. It is very versatile in that new formats can be added relatively easily and supports open standards for communication and interaction.","enhanced":false,"tile_background":"dark","icon":"icecast.png","sha":"b3a9532f158505e78cb18de616f6e9c8ed846341"},{"appid":"d483256e2837a012106afa135d3e4ba1a03c8ddb","name":"Icinga Web","website":"https://icinga.com","license":"GNU General Public License v2.0 only","description":"Icinga Web 2 is a powerful PHP framework for web applications that comes in a clean and reduced design. It’s fast, responsive, accessible and easily extensible with modules.","enhanced":false,"tile_background":"light","icon":"icingaweb.svg","sha":"66e0096a5717f2316e79b5c3215520ee00ee969e"},{"appid":"2fa965004249898edbbd6030adfdb0ead5bc5f7c","name":"iDRAC","website":"https://dell.com","license":"Proprietary","description":"The Dell Remote Access Controller or DRAC is an out-of-band management platform on Dell servers.","enhanced":false,"tile_background":"dark","icon":"idrac.png","sha":"b520723bfd91c4687793d1db40e56343fb05e738"},{"appid":"ef49854fbbea334dbaf393d4b4ad9381cb931e91","name":"iLO","website":"https://www.hpe.com/us/en/servers/integrated-lights-out-ilo.html","license":"Proprietary","description":"HP Integrated Lights-Out, is an embedded server management technology by Hewlett-Packard ","enhanced":false,"tile_background":"light","icon":"ilo.svg","sha":"a31c72501f45b565f523ad5dad64017df63c3f6d"},{"appid":"5e1e914cba38acaa83d4e39139dadbec478fbb6e","name":"InfluxDB","website":"https://www.influxdata.com/products/influxdb","license":"MIT License","description":"InfluxDB is an open source time series platform. This includes APIs for storing and querying data, processing it in the background for ETL or monitoring and alerting purposes, user dashboards, and visualizing and exploring the data and more.","enhanced":false,"tile_background":"dark","icon":"influxdb.svg","sha":"a62e94f015dcb9d4cfa16a95719bb89449dcba6c"},{"appid":"c112604b5b33659f85dda854ac8bc271cb744b8a","name":"Infoblox","website":"https://infoblox.com","license":"Commercial","description":"The company focuses on managing and identifying devices connected to networks—specifically for the Domain Name System, Dynamic Host Configuration Protocol, and IP address management","enhanced":false,"tile_background":"dark","icon":"infoblox.svg","sha":"beead6c0a5aeb806f9fd28a08d21de3814165122"},{"appid":"44aae3efe784b1886f020103d8344287be143c58","name":"Invidious","website":"https://github.com/omarroth/invidious","license":"Apache License 2.0","description":"Self-hosted, Open Source YouTube Alternative","enhanced":false,"tile_background":"light","icon":"invidious.svg","sha":"9eadeffc0f26e9a40da1f9467bdb0b168c76b289"},{"appid":"f4a9130aed175372c50f1b36cbc740193aed5fdf","name":"Invoice Ninja","website":"https://www.invoiceninja.com","license":"Attribution Assurance License","description":"A feature-rich, easy to use, open source invoicing suite. You can use the hosted service or host it yourself.","enhanced":false,"tile_background":"dark","icon":"invoiceninja.png","sha":"2cc474dd1005dae5d7c25d67bb0e0ac7f53034f9"},{"appid":"e3e34703718888700cefb3c28a0e52cb6a903ff0","name":"ioBroker","website":"https://www.iobroker.net","license":"MIT License","description":"ioBroker is an integration platform for the Internet of Things, focused on Building Automation, Smart Metering, Ambient Assisted Living, Process Automation, Visualization and Data Logging","enhanced":false,"tile_background":"light","icon":"iobroker.png","sha":"4077ce9b29fbecdde8acfdce56dfbb96fba8b133"},{"appid":"dd62089241256d5f36415bf5ff40ed4cea29210f","name":"ISPConfig","website":"ispconfig.org","license":"BSD Source Code Attribution","description":"ISPConfig is an open source hosting control panel for Linux which is capable of managing multiple servers from one control panel. ISPConfig is licensed under the BSD license.","enhanced":false,"tile_background":"light","icon":"ispconfig.png","sha":"e36d39359c2a87d0782dfabd9a86593b9e6b87da"},{"appid":"9d24b65315557ddd848ba44b09191a6ab305966f","name":"Jackett","website":"https://github.com/Jackett/Jackett","license":"GNU General Public License v2.0 only","description":"Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar, DuckieTV, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software.","enhanced":false,"tile_background":"light","icon":"jackett.svg","sha":"43b92013c22bb5dba7da634febf7aa384f06886d"},{"appid":"917883dc82d936304725edacb6bf11e5cf537be6","name":"Jaeger","website":"https://www.jaegertracing.io","license":"Apache License 2.0","description":"Jaeger is a distributed tracing platform, which can be used for monitoring microservices-based distributed systems.","enhanced":true,"tile_background":"light","icon":"jaeger.svg","sha":"8b60b1dbd4a7d45bdff46aba631e94ce0ef1c65b"},{"appid":"af7b37e2841d9150f6abd5a936b32a1f681d6bda","name":"JDownloader","website":"http://jdownloader.org","license":"Creative Commons Attribution Non Commercial Share Alike 2.0 Generic","description":"JDownloader is a free, open-source download management tool with a huge community of developers that makes downloading as easy and fast as it should be.","enhanced":false,"tile_background":"dark","icon":"jdownloader.png","sha":"51697aba9ee1718436feeb8c6f18a5d8c51c0ede"},{"appid":"5c64032d583b4cf000188a68c373d41b8e1b34c1","name":"Jeedom","website":"https://www.jeedom.com/site/fr","license":"Open Source","description":"Open source Home Automation System","enhanced":false,"tile_background":"light","icon":"jeedom.png","sha":"a81b0c33b710746f70e473dd1bdad9fdee78a116"},{"appid":"3e0a7f109bd760b9474c78cb652e8c3e82669226","name":"Jellyfin","website":"https://jellyfin.github.io","license":"GNU General Public License v2.0 only","description":"Jellyfin is the Free Software Media System that puts you in control of managing and streaming your media. There are no strings attached, no premium licenses or features, and no hidden agendas.","enhanced":true,"tile_background":"dark","icon":"jellyfin.svg","sha":"eb2864a125d1fcb17e4b3bc07114ef89c75225f5"},{"appid":"0628c8d1a4868d6e6b994ae43a091f4e142ce642","name":"Jellyseerr","website":"https://github.com/Fallenbagel/jellyseerr","license":"MIT License","description":"Jellyseerr is a free and open source software application for managing requests for your media library. It is a a fork of Overseerr built to bring support for Jellyfin & Emby media servers!","enhanced":true,"tile_background":"dark","icon":"jellyseerr.png","sha":"d92fcfbb8710f5a85196debe9bce27280b45fb9f"},{"appid":"d95b56ce41a2e1ac4cecdd398defd7414407cc08","name":"Jenkins","website":"https://jenkins.io","license":"MIT License","description":"Jenkins is an open source automation server with an unparalleled plugin ecosystem to support practically every tool as part of your delivery pipelines.","enhanced":true,"tile_background":"light","icon":"jenkins.svg","sha":"155914d502565db9da37b012f02c691a99c1485a"},{"appid":"3fb76ec47a9913f61e1bba0337af66ff0c59cc74","name":"Jira","website":"https://www.atlassian.com/software/jira","license":"Commercial","description":"A bug tracking and agile project management software with powerful collaboration features and easy-to-use WYSIWYG editing","enhanced":false,"tile_background":"light","icon":"jira.svg","sha":"2475a912cb714bd39d35ca08871f90e2a4da1d9c"},{"appid":"5640232c98c04a627fbdcc1cb26cd34a4a0088bc","name":"Jitsi","website":"https://jitsi.org","license":"Apache License 2.0","description":"Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.","enhanced":false,"tile_background":"light","icon":"jitsi.png","sha":"86fe4ea0951ea117153f17e0c72b4276837f8bd7"},{"appid":"1f87fdb388c8208f77da09b7507b59635fb7ddcb","name":"Joomla","website":"https://www.joomla.org","license":"GNU General Public License v2.0 or later","description":"Joomla! is the mobile-ready and user-friendly way to build your website.","enhanced":false,"tile_background":"light","icon":"joomla.png","sha":"16035755382d880041e2134ee6a2bff3aee4370d"},{"appid":"7d93500c86ae587b3d9f4bf1b8cec36f221c8183","name":"Jupyter","website":"https://jupyter.org","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Open source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.","enhanced":false,"tile_background":"light","icon":"jupyter.svg","sha":"fecb68899a96fd634626fc51864f77b5f0360fa3"},{"appid":"43036744dd731a810155d82144c286cae5cb8ca3","name":"Kanboard","website":"https://kanboard.org","license":"MIT License","description":"Kanboard is a free and open source Kanban project management software.","enhanced":false,"tile_background":"light","icon":"kanboard.png","sha":"0d0b3e4fb82c6d7db097e02f7d3125fea2b73931"},{"appid":"deebb60d4aafd710c8f6a4cfd917b570748f2c0c","name":"Kavita","website":"https://www.kavitareader.com/","license":"GNU General Public License v3.0 only","description":"Kavita is a fast, feature rich, cross platform reading server. Built with a focus for manga and the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family.","enhanced":false,"tile_background":"dark","icon":"kavita.svg","sha":"326c9d615ffbb2778c6dedc5a288ef569b2a86cd"},{"appid":"d1081e351fbebe0deb0c2867d5f731c8f9cc3fd8","name":"Keycloak","website":"https://www.keycloak.org","license":"Apache License 2.0","description":"Open Source Identity and Access Management.","enhanced":false,"tile_background":"dark","icon":"keycloak.svg","sha":"bcf46e471dde71f9dcbae78c44a7e099b1ab1aba"},{"appid":"80d4015f1f71198cb285a89daf9796ebde0b5c29","name":"Kibana","website":"https://www.elastic.co/products/kibana","license":"Apache License 2.0","description":"Kibana lets you visualise your Elasticsearch data and navigate the Elastic Stack.","enhanced":false,"tile_background":"light","icon":"kibana.png","sha":"1cae3bf76063a7551dde51ccedff08191b05cbc1"},{"appid":"e928abf116d933773b1e4e31445213f1f1b01609","name":"Kimai","website":"https://www.kimai.org","license":"GNU General Public License v3.0 only","description":"Kimai is a free open source timetracker. It tracks work time and prints out a summary of your activities on demand. Yearly, monthly, daily, by customer, by project, by action …","enhanced":false,"tile_background":"dark","icon":"kimai.png","sha":"121758f01d7ff488655ab5fd11ce0f2885a2b2a1"},{"appid":"dcd2c1d3cbc33b14e439da0d94c1451e70d7536e","name":"Kitana","website":"https://github.com/pannal/Kitana","license":"MIT License","description":"Kitana exposes your Plex plugin interfaces \"to the outside world\". It does that by authenticating against Plex.TV, then connecting to the Plex Media Server you tell it to, and essentially proxying the plugin UI. It has full PMS connection awareness and allows you to connect locally, remotely, or even via relay.","enhanced":false,"tile_background":"light","icon":"kitana.png","sha":"59ddc8694d18bd5f7ad43fac954b60059bd3e9ed"},{"appid":"8ac539a79155a0032834264ac3f6dbd38f1c812d","name":"Kodi","website":"https://kodi.tv","license":"GNU General Public License v1.0 or later","description":"Kodi (formerly known as XBMC) is an award-winning free and open source (GPL) software media player and entertainment hub that can be installed on Linux, OSX, Windows, iOS and Android, featuring a 10-foot user interface for use with televisions and remote controls.","enhanced":true,"tile_background":"dark","icon":"kodi.svg","sha":"ac946a378f6683b4643abdbd70a9cd151e38c48d"},{"appid":"6cd97a5fefab651371f821cb5167733112fbc536","name":"Komga","website":"https://komga.org","license":"MIT License","description":"Komga is a free and open source comics/mangas server.","enhanced":true,"tile_background":"dark","icon":"komga.svg","sha":"7a6eb62f1dc46ca324e4a644f1e16c1bf10c3777"},{"appid":"22b161d97fbf69f88c548fa1dc938f0840abfd58","name":"Kopia","website":"https://kopia.io","license":"Apache License 2.0","description":"Kopia is a simple, cross-platform tool for managing encrypted backups in the cloud. It provides fast, incremental backups, secure, client-side end-to-end encryption, compression and data deduplication.","enhanced":false,"tile_background":"light","icon":"kopia.png","sha":"d8843389c902cb483ab3b5515cfcc14737d10452"},{"appid":"556651b611ac6cb9876f54eb950084090e060846","name":"Krusader","website":"https://krusader.org","license":"GNU General Public License v3.0 only","description":"Krusader is an advanced twin panel (commander style) file manager for KDE Plasma and other desktops in the *nix world, similar to Midnight or Total Commander.","enhanced":false,"tile_background":"dark","icon":"krusader.svg","sha":"6c656638ba437c0d8f542bd1eebf6f77b83df3c2"},{"appid":"211e5bfaaa8f220a748e1e9ef8a2513cb391f651","name":"Kubernetes Dashboard","website":"https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard","license":"Apache License 2.0","description":"Kubernetes Dashboard is a general purpose, web-based UI for Kubernetes clusters. It allows users to manage applications running in the cluster and troubleshoot them, as well as manage the cluster itself.","enhanced":false,"tile_background":"dark","icon":"kubernetesdashboard.svg","sha":"4c6303a2639a2adbc65d03e3b19f4bd58e036424"},{"appid":"49eac3c78f71626d0364c2691336b2113daedf4c","name":"LazyLibrarian","website":"https://lazylibrarian.gitlab.io","license":"CNRI Python Open Source GPL Compatible License Agreement","description":"LazyLibrarian is a program to follow authors and grab metadata for all your digital reading needs.","enhanced":false,"tile_background":"dark","icon":"lazylibrarian.png","sha":"b83fbdb8010c895cc3d7a013b20c20b4af53ce5c"},{"appid":"48b8edcabb38cf25b257b7da1042eb8f19d16248","name":"LemonLDAP::NG","website":"https://lemonldap-ng.org/welcome","license":"GNU General Public License v2.0 or later","description":"LemonLDAP::NG is a complete and modular Web-SSO system that can run with\r\nreverse-proxies or directly on application webservers. It can be used in\r\nconjunction with OpenID-Connect, CAS and SAML systems as identity or\r\nservice provider. It can also be used as proxy between those federation\r\nsystems.\r\nIt manages both authentication and authorization and provides headers for\r\naccounting. So you can have a full AAA protection. Authorizations are built by\r\nassociating a regular expression and a rule. Regular expression is applied on\r\nthe requested URL and the rule calculates if the user is authorized.","enhanced":false,"tile_background":"light","icon":"lemonldapng.png","sha":"90920fb7a2a174434f04cf16f343fac560127fa0"},{"appid":"3efb63c16a70f296c1cdb7992bd621c26423da99","name":"LibreNMS","website":"https://www.librenms.org","license":"GNU General Public License v3.0 or later","description":"LibreNMS, a fully featured network monitoring system that provides a wealth of features and device support","enhanced":false,"tile_background":"dark","icon":"librenms.png","sha":"212220212a4d341023d47e9fbe93716f2697ca64"},{"appid":"3771bfd8b92b695b317391d4e685d13fc9a14433","name":"LibreSpeed","website":"https://github.com/librespeed/speedtest","license":"GNU Lesser General Public License v3.0 or later","description":"A Free and Open Source Speedtest for HTML5 and more.","enhanced":false,"tile_background":"light","icon":"librespeed.png","sha":"4414423b3eebc460f517ac46caa69c51baa7949f"},{"appid":"c015fff30a3dc43f5987079c0142437e3e757fd0","name":"Lidarr","website":"https://lidarr.audio","license":"GNU General Public License v3.0 only","description":"Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them.","enhanced":true,"tile_background":"dark","icon":"lidarr.svg","sha":"8b3aafbb5df05063dd249edf7a0060d5b1c06971"},{"appid":"c7eef6a399bb48a066d4e11fc577e896bc142cf3","name":"LinkAce","website":"https://www.linkace.org","license":"GNU General Public License v3.0 only","description":"LinkAce is a self-hosted archive to collect links of your favorite websites. Save articles to read them later, tools to use them in your next project, or historic content to archive it for the long term. LinkAce comes with a lot of features while keeping a clean and minimal interface.","enhanced":true,"tile_background":"dark","icon":"linkace.svg","sha":"438362a49e311f8d26df945755c72f44c760c745"},{"appid":"4c1738fdd3a5743e76bc256be5e112d3e4dd511d","name":"Lychee","website":"https://lycheeorg.github.io","license":"MIT License","description":"Self-hosted photo-management done right","enhanced":false,"tile_background":"light","icon":"lychee.png","sha":"8332bd771edd85adfe63a48e45e6218a56f07e1c"},{"appid":"aeabf6597d765c42d67abdc8c1918c8ec5b18cb8","name":"Mailcow","website":"https://mailcow.email","license":"GNU General Public License v3.0 only","description":"Mailcow is a Docker based email server which provides an elegant web interface for managing domains, mailboxes and more.","enhanced":false,"tile_background":"dark","icon":"mailcow.svg","sha":"0a63af9fa00c98bf5f20cc212c3f7ec05bf6badf"},{"appid":"1ec48781d2c87a9e6dc9ee99e5eff0ab5958df09","name":"Mailcow - SOGo","website":"https://sogo.nu","license":"GNU GPL/LGPL v2 and above","description":"SOGo is a fully supported and trusted groupware server with a focus on scalability and open standards.\r\n\r\nPart of the Mailcow stack.","enhanced":false,"tile_background":"dark","icon":"mailcowsogo.svg","sha":"08b0426af5dfdf331e26146d5ce9e542709ba1c1"},{"appid":"cffc32ba3ead25ff79a6f34e163b120cf68ab9e2","name":"Mailhog","website":"https://github.com/mailhog/MailHog","license":"MIT License","description":"MailHog is an email testing tool for developers:\r\n\r\n- Configure your application to use MailHog for SMTP delivery\r\n- View messages in the web UI, or retrieve them with the JSON API\r\n- Optionally release messages to real SMTP servers for delivery","enhanced":false,"tile_background":"light","icon":"mailhog.png","sha":"971de7cc0182c40ef620eee6bf314f23e29289b3"},{"appid":"042c8e5dba563bf592d67d024ff2d66c011a9a69","name":"Mainsail","website":"https://github.com/meteyou/mainsail","license":"GNU General Public License v3.0 only","description":"Mainsail is a lightweight & responsive web interface for the Klipper 3D printer firmware. It communicates with the Moonraker (Klipper-API) from Arksine.","enhanced":false,"tile_background":"light","icon":"mainsail.png","sha":"1486304f650d8d52e66114e3416a536702640734"},{"appid":"0efc652ff6792fef6190e3f066133e37a050e52a","name":"Mastodon","website":"https://joinmastodon.org","license":"GNU Affero General Public License v3.0","description":"Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones. On Mastodon, users can publish anything they want: links, pictures, text, video. All Mastodon servers are interoperable as a federated network (users on one server can seamlessly communicate with users from another one, including non-Mastodon software that implements ActivityPub)!","enhanced":false,"tile_background":"light","icon":"mastodon.svg","sha":"cd0b01138bc7c34386f3b02e6b30b41dbded9e4d"},{"appid":"b3e1424fb69ca08481b03ad9d81e95488421997f","name":"Mattermost","website":"https://mattermost.com","license":"MIT License","description":"Mattermost provides high trust collaboration and messaging solutions through an open source, community-powered approach. Enjoy all the productivity benefits of workplace messaging across web, mobile and PC, with unlimited archiving, search and integrations within IT-controlled private environments in public clouds, including AWS and Azure, as well as on-premise in private clouds and virtual or physical servers.","enhanced":false,"tile_background":"light","icon":"mattermost.png","sha":"67d3ecbf62cb31ca5b128e86c20de4cebfc9eda5"},{"appid":"6b9e062ff02ea610df64e9b0eca1c973faf1b51d","name":"Mayan EDMS","website":"https://gitlab.com/mayan-edms/mayan-edms","license":"Apache License 2.0","description":"Mayan EDMS is an open-source document management system. Its main purpose is to store, introspect, and categorize files, with a strong emphasis on preserving the contextual and business information of documents. It can also OCR, preview, label, sign, send, and receive thoses files. Other features of interest are its workflow system, role based access control, and REST API.","enhanced":false,"tile_background":"light","icon":"mayanedms.png","sha":"696ce01fbfd3f63708a277250db3ee8924f64bd1"},{"appid":"1ca09632db905908f09e8c8e6fe6d64b6798aaaa","name":"McMyAdmin","website":"https://www.mcmyadmin.com","license":"Proprietary","description":"McMyAdmin is the leading web control panel and administration console for Minecraft servers. McMyAdmin makes it easy for you to control your Minecraft servers via it's straight forward user interface and mobile apps.","enhanced":false,"tile_background":"dark","icon":"mcmyadmin.png","sha":"7cce241097c67a8f8ca5241b6b4b418d29ac5c97"},{"appid":"95fc71dc5b7a31e5a244df43f457a6eedc966ac9","name":"Mealie","website":"https://github.com/hay-kot/mealie","license":"MIT License","description":"Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor.","enhanced":false,"tile_background":"dark","icon":"mealie.png","sha":"9022a5c36c59f9ca505c824ec052731a05a677da"},{"appid":"67dcc2f0c9930fb08b0eaa39ad076264965b2bd6","name":"MediaWiki","website":"https://www.mediawiki.org/wiki/MediaWiki","license":"GNU General Public License v2.0 or later","description":"MediaWiki is a collaboration and documentation platform brought to you by a vibrant community.","enhanced":false,"tile_background":"light","icon":"mediawiki.png","sha":"0dfcd6eefc0d47e3c718821fe6c7bb36dd679144"},{"appid":"7209e12ecf01afc45db4ff41be3602a898cf77f8","name":"Medusa","website":"https://pymedusa.com","license":"GNU General Public License v3.0 only","description":"Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic: automatic torrent/nzb searching, downloading, and processing at the qualities you want.","enhanced":false,"tile_background":"dark","icon":"medusa.png","sha":"379b5569c0eb9802dc8f8f4bf6912f154dcefcf2"},{"appid":"ad35ad6e82ecf7b9f4e279795d3ef30a496d2a21","name":"Meraki","website":"https://meraki.com","license":"Commercial","description":"Cloud web portal for Meraki device management.","enhanced":false,"tile_background":"light","icon":"meraki.png","sha":"3aa0368727025c7e22d4ea96b9d44460d58e4f21"},{"appid":"4a0a491219ae93bc0848b0d05efbe250ace4049c","name":"Metabase","website":"https://www.metabase.com/","license":"GNU Affero General Public License v3.0","description":"The simplest, fastest way to get business intelligence and analytics to everyone in your company 😋","enhanced":false,"tile_background":"light","icon":"metabase.svg","sha":"43b905e262187b40c9fccccd7286286af894dcc3"},{"appid":"757ff43646cf978b954d695926049f0ce636e3df","name":"MineOS","website":"https://minecraft.codeemo.com","license":"GNU General Public License v3.0 only","description":"MineOS is a platform-independent server front-end to create, host and manage Minecraft servers with a few mouse clicks.","enhanced":false,"tile_background":"dark","icon":"mineos.png","sha":"4d87fdcd937bb0551566dc74ca4a79a2cc22c4c2"},{"appid":"f1a89a23921939fc4ea89777cf9c7d6c08679fde","name":"Miniflux","website":"https://miniflux.app","license":"Apache License 2.0","description":"Miniflux is a lightweight RSS feed reader app.","enhanced":true,"tile_background":"dark","icon":"miniflux.png","sha":"aef715da1ea343541a4ed8653ce0116a3dd6a579"},{"appid":"30747605e1f6faad5d1cedb2c7953d31ffad3fd4","name":"Minio","website":"https://www.minio.io","license":"Apache License 2.0","description":"Minio is an object storage server released under Apache License v2.0. It is compatible with Amazon S3 cloud storage service. It is best suited for storing unstructured data such as photos, videos, log files, backups and container / VM images.","enhanced":false,"tile_background":"light","icon":"minio.png","sha":"35bb97b9dc37055ce9ddd2b57039729a55c77062"},{"appid":"96d53734fc1bd54d848cd30f98069b90333b1bb3","name":"Monica","website":"https://www.monicahq.com","license":"GNU Affero General Public License v3.0 only","description":"Monica is an open-source web application to organize the interactions with your loved ones. We call it a PRM, or Personal Relationship Management. Think of it as a CRM for your friends or family.","enhanced":true,"tile_background":"light","icon":"monica.png","sha":"8c3b31be29f34ccc03dd279c9af17f9be0058845"},{"appid":"3568f62a517667d3dae77d47746d8382dd3b9f3b","name":"Monit","website":"https://mmonit.com/monit","license":"GNU Affero General Public License v3.0 or later","description":"Monit is a small Open Source utility for managing and monitoring Unix systems. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations.","enhanced":true,"tile_background":"dark","icon":"monit.png","sha":"9892bdaec1dd898ba00ba715eeae720f833bb589"},{"appid":"19bd1c6a4f62ecc721b771b42e71d2eaff67824e","name":"MotionEye","website":"https://github.com/ccrisan/motioneye","license":"GNU General Public License v3.0 only","description":"motionEye is a web-based frontend for motion.","enhanced":false,"tile_background":"light","icon":"motioneye.png","sha":"8d4b2495c7b6fa8096921f0f44a59e9f3e2fa9c4"},{"appid":"756e9d172c05c14d07ff2428e6a75d5885bf5ae0","name":"Munin","website":"http://munin-monitoring.org","license":"GNU General Public License v2.0 only","description":"Munin is a networked resource monitoring tool that can help analyze resource trends and \"what just happened to kill our performance?\" problems. It is designed to be very plug and play. A default installation provides a lot of graphs with almost no work.","enhanced":false,"tile_background":"light","icon":"munin.png","sha":"4b4cf411987c625573879ba64473bedbd430d1f9"},{"appid":"8962c794c6557b091455fdd5ad0d1fc7a266cfe7","name":"MusicBrainz","website":"https://musicbrainz.org","license":"GNU General Public License v2.0 only","description":"MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.","enhanced":false,"tile_background":"dark","icon":"musicbrainz.svg","sha":"b8595ddf2df84d7f4291b31f29eaac72eb6221d6"},{"appid":"1c7c1eebcd96285956627a1d10006a6756d9c2b4","name":"Mylar","website":"https://github.com/evilhero/mylar","license":"GNU General Public License v3.0 only","description":"Mylar is an automated Comic Book (cbr/cbz) downloader program heavily-based on the Headphones template and logic (which is also based on Sick-Beard).","enhanced":true,"tile_background":"dark","icon":"mylar.png","sha":"4975bec5a3a45d2c3a8565c9eb6905d1467a49dc"},{"appid":"b69a8d8e93fa412531b8ef117c50ce520d71cd5a","name":"N8n","website":"https://n8n.io","license":"Apache License 2.0","description":"n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source code, be available to self-host, and allow you to add your own custom functions, logic and apps. n8n's node-based approach makes it highly versatile, enabling you to connect anything to everything.","enhanced":false,"tile_background":"light","icon":"n8n.svg","sha":"91ba7d520e8c1c4ceee2283629421afd4c9d1e6f"},{"appid":"fe2d0a7a5b34951b6ec3c46184f1ed3eae19459d","name":"Nagios","website":"https://www.nagios.com/products/nagios-core","license":"GNU General Public License v2.0 only","description":"The open source industry standard in IT infrastructure monitoring and alerting.","enhanced":false,"tile_background":"light","icon":"nagios.png","sha":"49434f122f1bbbd8f1a44fdd278dd4f0988f6a0b"},{"appid":"0e0c78c72d4215bccbe4a8ad0c0234bfb9998b88","name":"NAS","website":"https://en.wikipedia.org/wiki/Network-attached_storage","license":"Commercial","description":"Network-attached storage (NAS) is a file-level computer data storage server connected to a computer network providing data access to a heterogeneous group of clients. NAS is specialized for serving files either by its hardware, software, or configuration.","enhanced":false,"tile_background":"light","icon":"nas.svg","sha":"70eb3d0ab191c15e55cea39ecf0a52d4a3581b36"},{"appid":"31e028553b33bf830e42d88a888ee1093e3dd591","name":"Navidrome","website":"https://www.navidrome.org","license":"GNU General Public License v3.0 only","description":"Navidrome is a self-hosted, open source music server and streamer. It gives you freedom to listen to your music collection from any browser or mobile device.","enhanced":true,"tile_background":"dark","icon":"navidrome.svg","sha":"6f0c83fb3b53b5e5fdc43569eebd05d5a22412f3"},{"appid":"c47466c999c3113a3291ab09cab20b0df630d8e8","name":"Nessus","website":"https://www.tenable.com/products/nessus","license":"Commercial","description":"Nessus is trusted by more than 27,000 organizations worldwide as one of the most widely deployed security technologies on the planet - and the gold standard for vulnerability assessment.","enhanced":true,"tile_background":"light","icon":"nessus.png","sha":"de34f84fac1250119584167a2a7e59a1bbbfa81f"},{"appid":"81bf08fbb240b662b17c0d837c5cb9f30a7e89e5","name":"Netatmo","website":"https://www.netatmo.com/en-us/weather","license":"Commercial","description":"With the Netatmo Smart Home Weather Station and its accessories, measure, analyse, and understand your indoor and outdoor environment to adapt your daily life and optimise your comfort at home.","enhanced":false,"tile_background":"light","icon":"netatmo.png","sha":"243c1eb1305b812edb76290f09d89ebe9a714f7c"},{"appid":"3f903351ae2408404930a6af98e669510149abbd","name":"Netboot","website":"https://netboot.xyz","license":"Apache License 2.0","description":"netboot.xyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool.","enhanced":false,"tile_background":"dark","icon":"netboot.png","sha":"6ba7f71f810ce88448a50e4ace32777f92b539ae"},{"appid":"b42bf8635b4e7c528339fd4e073ddc9fecf1e5a7","name":"NetBox","website":"https://github.com/netbox-community/netbox","license":"Apache License 2.0","description":"NetBox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers.","enhanced":false,"tile_background":"light","icon":"netbox.png","sha":"de87ec6f4e7ba59115d212815d237cd6b07480bc"},{"appid":"810d3926feac8c1bd3957fdac48b6c9475b932d0","name":"Netdata","website":"https://my-netdata.io","license":"GNU General Public License v3.0 only","description":"Unparalleled insights, in real-time, of everything happening on your systems and applications, with stunning, interactive web dashboards and powerful performance and health alarms.","enhanced":true,"tile_background":"dark","icon":"netdata.svg","sha":"e538a52c5a44caf0a05f5b11adf4a336ccf59d8e"},{"appid":"13121fb95b2b5da427d75de170f479bc8e53ef09","name":"Netgear Orbi","website":"https://www.netgear.com/de/home/wifi/mesh/orbi/","license":"Commercial","description":"Netgear ORBI Dashboard","enhanced":false,"tile_background":"light","icon":"netgearorbi.png","sha":"eb9d46c532dddc1ffc70cd184de355797735456a"},{"appid":"26f4d706681b01c78c47bff7ea009845f9ed57ac","name":"Network UPS Tools","website":"https://networkupstools.org/","license":"GNU General Public License v2.0 or later","description":"The primary goal of the Network UPS Tools (NUT) project is to provide support for Power Devices, such as Uninterruptible Power Supplies, Power Distribution Units, Automatic Transfer Switches, Power Supply Units and Solar Controllers. NUT provides a common protocol and set of tools to monitor and manage such devices, and to consistently name equivalent features and data points, across a vast range of vendor-specific protocols and connection media types.","enhanced":false,"tile_background":"light","icon":"nut.png","sha":"2344aec130378e2e25b7415817ffe9af9aecd412"},{"appid":"f2baa52d02ca888455ce47823f47bf372d5eecb3","name":"Nextcloud","website":"https://nextcloud.com","license":"GNU Affero General Public License v3.0 only","description":"Nextcloud is an open source, self-hosted file share and communication platform. Access and sync your files, contacts, calendars and communicate and collaborate across your devices.","enhanced":true,"tile_background":"light","icon":"nextcloud.svg","config":{"type":"basic_auth","additional_headers":{"OCS-APIRequest":"true"},"stat1":{"name":"Total","url":":url:ocs/v1.php/cloud/users/:username:?format=json","key":"ocs.data.quota.total","filter":"size","updateOnChange":"No","suffix":""},"stat2":{"name":"Used","url":":url:ocs/v1.php/cloud/users/:username:?format=json","key":"ocs.data.quota.used","filter":"size","updateOnChange":"No","suffix":""}},"sha":"154ab558feaa115ad0f510e6cf68466566a890de"},{"appid":"90a7041cfbcecf6d11c2b8dfc599a07116d15ba6","name":"Nexus Repository Manager OSS 3.x","website":"https://www.sonatype.com/download-oss-sonatype","license":"Eclipse Public License 1.0","description":"The free artifact repository with universal format support.","enhanced":false,"tile_background":"dark","icon":"nexusrepositorymanageross3x.png","sha":"88d76759e0095dbe264c403f3b87e26ef9548e2d"},{"appid":"cbfad988a16a9fbcc1812bc206afcc1f73dd36de","name":"Nginx Proxy Manager","website":"https://nginxproxymanager.jc21.com","license":"MIT License","description":"This project comes as a pre-built docker image that enables you to easily forward to your websites running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt.","enhanced":true,"tile_background":"light","icon":"nginxproxymanager.png","sha":"51e2a10941cc278c6320ed13f32ff5a88f91d27b"},{"appid":"b0193185a6e5fe70dd102f701db350fbd0e79aa5","name":"Nightscout","website":"https://nightscout.github.io","license":"GNU Affero General Public License v3.0","description":"Nightscout (CGM in the Cloud) is an open source, DIY project that allows real time access to a CGM data via personal website, smartwatch viewers, or apps and widgets available for smartphones.","enhanced":false,"tile_background":"dark","icon":"nightscout.png","sha":"eca757240eb7b1cf48fb42ea3f50b7763aa16452"},{"appid":"570ecf8de333013382f0dc93aa7faacbccdee575","name":"Nitter","website":"https://github.com/zedeus/nitter","license":"GNU Affero General Public License v3.0","description":"A free and open source alternative Twitter front-end focused on privacy.","enhanced":false,"tile_background":"dark","icon":"nitter.svg","sha":"ac318bfd55cd7c0ab3005c2fae0f626c3076d471"},{"appid":"1608962f5295ccc488f3103ea8df2c6d45c62c65","name":"Node-Red","website":"https://nodered.org","license":"Apache License 2.0","description":"Node-RED is a flow-based development tool for visual programming developed originally by IBM for wiring together hardware devices, APIs and online services as part of the Internet of Things. \r\n\r\nNode-RED provides a browser-based flow editor, which can be used to create JavaScript functions. Elements of applications can be saved or shared for re-use. The runtime is built on Node.js. The flows created in Node-RED are stored using JSON. Since version 0.14 MQTT nodes can make properly configured TLS connections","enhanced":false,"tile_background":"dark","icon":"nodered.png","sha":"ca015804621e0000c37c226de6f3baec4729f8bd"},{"appid":"b3d874a5d85233d394ed569fc8f67f4864993308","name":"NowShowing","website":"https://github.com/ninthwalker/NowShowing","license":"MIT License","description":"Generates an email and web page of Plex recently added content. NowShowing is the successor of the popular plexReport docker.","enhanced":false,"tile_background":"light","icon":"nowshowing.png","sha":"622598b6c65d8387749807cd4356f3e39c5384c2"},{"appid":"361f712137443a3d7f1047a4f470bcf0158cc6d6","name":"ntopng","website":"https://www.ntop.org","license":"GNU General Public License v3.0 or later","description":"ntopng is the next generation version of the original ntop, a network traffic probe that monitors network usage. ntopng is based on libpcap and it has been written in a portable way in order to virtually run on every Unix platform, MacOSX and on Windows as well.","enhanced":false,"tile_background":"light","icon":"ntopng.png","sha":"c7fd6d2a375b717f9f7d464aafea753807f7c1b2"},{"appid":"533dc2434d2aee76aac442ece4bcc94b53fd7246","name":"NxFilter","website":"https://nxfilter.org","license":"Commercial","description":"NxFilter is a free DNS filter for commercial and non-commercial purposes. It's light, fast and easy.","enhanced":false,"tile_background":"light","icon":"nxfilter.png","sha":"4c38368cd5b91f09176e485f4f128f36578a0a05"},{"appid":"31a7b1d936c4e8503bb446e5ff8ada669d1846bd","name":"Nzbget","website":"https://nzbget.net","license":"GNU General Public License v2.0 only","description":"NZBGet is a binary downloader, which downloads files from Usenet based on information given in nzb-files. NZBGet is written in C++ and is known for its extraordinary performance and efficiency.","enhanced":true,"tile_background":"dark","icon":"nzbget.png","sha":"801a745d02a0d17cd2788c5efd19adefe2b4b051"},{"appid":"a5b4faf84287a35c98adc76f2117aa10d1ea6eb8","name":"NZBHydra","website":"https://github.com/theotherp/nzbhydra2","license":"Apache License 2.0","description":"NZBHydra is a meta search for NZB indexers. It provides easy access to a number of raw and newznab based indexers. You can search all your indexers from one place and use it as an indexer source for tools like Sonarr, Radarr or CouchPotato.","enhanced":false,"tile_background":"light","icon":"nzbhydra.png","sha":"b89cbd0ff93e7a48e5d6b06f6ebdc1913c89f76d"},{"appid":"99be0df8034cbcd7b5dfb3290839f7db21c1acbb","name":"Octoprint","website":"https://octoprint.org","license":"GNU Affero General Public License v3.0","description":"OctoPrint is the snappy web interface for your 3D printer that allows you to control and monitor all aspects of your printer and print jobs, right from your browser.","enhanced":true,"tile_background":"dark","icon":"octoprint.png","sha":"ee4540754e48c0c99fe8b030bb65ecea23db07f6"},{"appid":"5835041c77aa9f56cd2c4f97de2af9c41fbf7eb6","name":"OliveTin","website":"http://olivetin.app","license":"GNU Affero General Public License v3.0","description":"OliveTin gives safe and simple access to predefined shell commands from a web interface.","enhanced":false,"tile_background":"dark","icon":"olivetin.png","sha":"dd9a551b40987f69c93354d6881cfd5e6ffff234"},{"appid":"aeddfb31b642e8e30591a99b3b3c30b8a765be32","name":"Omada SDN Controller","website":"https://www.tp-link.com/us/omada-sdn","license":"No Limit Public License","description":"Omada’s Software Defined Networking (SDN) platform integrates network devices, including access points, switches and gateways, providing 100% centralized cloud management. Omada creates a highly scalable network—all controlled from a single interface. Seamless wireless and wired connections are provided, ideal for use in hospitality, education, retail, offices, and more.","enhanced":false,"tile_background":"dark","icon":"omadasdncontroller.png","sha":"2f030e1ce8990b45d8a3a394c6a11154100d4f0e"},{"appid":"57b25ceb94bd4c9ba9038ce17656f5ede9007e4c","name":"Ombi","website":"https://ombi.io","license":"GNU General Public License v2.0 only","description":"Ombi is a self-hosted web application that automatically gives your shared Plex or Emby users the ability to request content by themselves! Ombi can be linked to multiple TV Show and Movie DVR tools to create a seamless end-to-end experience for your users.","enhanced":true,"tile_background":"dark","icon":"ombi.png","sha":"cf1e703cac0fae98dd68e40335403203abd28a27"},{"appid":"fc4e407d69510b855b678aa4fba6083fbbfc5383","name":"OnlyOffice","website":"https://www.onlyoffice.com","license":"GNU Affero General Public License v3.0 or later","description":"ONLYOFFICE online editors for text documents, spreadsheets, and presentations with access to pro features and connect them to the platform of your choice with ready-to-use connectors: https://www.onlyoffice.com/download.aspx#connectors","enhanced":false,"tile_background":"light","icon":"onlyoffice.png","sha":"e707a83ee4b827376aabddaa7bbeba9e45115881"},{"appid":"c6a4fe0b25a74497e966f279f5186c99e5ce30e3","name":"openHAB","website":"https://www.openhab.org","license":"Eclipse Public License 1.0","description":"The open Home Automation Bus (openHAB) project aims at providing a universal integration platform for all things around home automation. It is a pure Java solution, fully based on OSGi.","enhanced":false,"tile_background":"light","icon":"openhab.png","sha":"5eb46e1940f2220562e3d055b5b8cd105316f957"},{"appid":"ce88c5ed9d12b302762ca57ee01d494b96466946","name":"OpenMapTiler","website":"https://openmaptiles.org","license":"BSD 3-Clause Clear License","description":"Open-source maps made for self-hosting","enhanced":false,"tile_background":"dark","icon":"openmaptiler.png","sha":"d70497c2ece0508715534a8e7d0e7354eb9b11ff"},{"appid":"68a90a2f21aad7a09a3533a2c6ab9a03dc94af49","name":"openmediavault","website":"https://www.openmediavault.org","license":"GNU General Public License v3.0 only","description":"openmediavault is the next generation network attached storage (NAS) solution based on Debian Linux.","enhanced":true,"tile_background":"dark","icon":"openmediavault.svg","sha":"58e9ad1bd7c35db59bcfdab0cdeaba6575cb1828"},{"appid":"a42cc8d686807c59dc3858e14faf1028d766abf0","name":"OpenSpeedTest","website":"https://openspeedtest.com","license":"Creative Commons Attribution No Derivatives 3.0 Unported","description":"OpenSpeedTest is a 100% browser-based speed test application. It allows you to test your network connection speed on any device using various web browsers without installing any additional apps or plugins (no Flash or Java Needed!).","enhanced":false,"tile_background":"light","icon":"openspeedtest.png","sha":"3db29498141163612fdf4c76fa94d915d435f8eb"},{"appid":"bd1d7a45d17d62fd7db0c3f69e8a52661eedcc5b","name":"OpenSprinkler","website":"https://opensprinkler.com","license":"GNU General Public License v3.0 only","description":"OpenSprinkler is an open-source, web-based sprinkler / irrigation controller. It’s a drop-in replacement for conventional sprinkler controllers that are not web connected.","enhanced":false,"tile_background":"light","icon":"opensprinkler.png","sha":"c5a9d412ecaaa664c6aebcfc79c2cf890194d303"},{"appid":"5d53e53a12af92b47e8c11af1a399b23b67efb61","name":"openvscode-server","website":"https://github.com/gitpod-io/openvscode-server","license":"MIT License","description":"This project provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser. It's based on the very same architecture used by Gitpod or GitHub Codespaces at scale.","enhanced":false,"tile_background":"dark","icon":"openvscodeserver.png","sha":"5aa4f32e7db4b701a805883a5296c102c997a739"},{"appid":"9b934cf284d9b196f48b43876d3e01912797242c","name":"OpenWrt","website":"https://openwrt.org","license":"GNU General Public License v2.0 or later","description":"OpenWrt is an open source project based on Linux, primarily used on devices to route network traffic\r\n\r\n#please use tile background color #578","enhanced":false,"tile_background":"light","icon":"openwrt.png","sha":"fd8aef0640b4568dd4dcca886bffa1e02fcc1944"},{"appid":"b7dcd77029f908fb21195dd01e29882ca52d4f3a","name":"OPNsense","website":"https://opnsense.org","license":"BSD 2-Clause \"Simplified\" License","description":"OPNsense is open source, FreeBSD-based firewall and routing software developed by Deciso. It is a fork of pfSense, which in turn was forked from m0n0wall.","enhanced":false,"tile_background":"light","icon":"opnsense.png","sha":"28d8c34811f7c4b38528feecdf5f286e4abc7071"},{"appid":"46ede88d6d440af5d3c7cc70cabbab6722245acd","name":"Oscarr","website":"https://github.com/morpheus65535/oscarr","license":"GNU General Public License v3.0 only","description":"Oscarr is a dashboard application for users of Plex, Emby, Sonarr, Radarr and Bazarr. It gives you and overview of your media management software.","enhanced":false,"tile_background":"light","icon":"oscarr.svg","sha":"f7052f13f075a2458fba91bb216cab8327b0d485"},{"appid":"727706dbdf86b593f7be63c2fcca20718fd8caca","name":"osTicket","website":"https://osticket.com","license":"GNU General Public License v2.0 only","description":"osTicket is a widely-used open source support ticket system.","enhanced":false,"tile_background":"dark","icon":"osticket.png","sha":"603f10eeaf5a37778a257fb8a8a606692208fa59"},{"appid":"989fb18945a331b430fc284edfe6451aa760f8e6","name":"Overseerr","website":"https://github.com/sct/overseerr","license":"MIT License","description":"Overseerr is a free and open source software application for managing requests for your media library. It integrates with your existing services such as Sonarr, Radarr and Plex!","enhanced":true,"tile_background":"dark","icon":"overseerr.svg","sha":"bf1718eabc214e8a7b87261fd3b3955f9aa16d32"},{"appid":"c8a6ea616b768fefc48e461390de52d11d36cfb4","name":"oVirt","website":"https://ovirt.org","license":"Apache License 2.0","description":"oVirt is an open-source distributed virtualization solution, designed to manage your entire enterprise infrastructure. oVirt uses the trusted KVM hypervisor and is built upon several other community projects, including libvirt, Gluster, PatternFly, and Ansible.","enhanced":true,"tile_background":"dark","icon":"ovirt.svg","sha":"4dea5886c63be6a10a87acd1d8b845c98e1ea6f3"},{"appid":"668b5fcda851fe516fef14e82973beffe32f385a","name":"ownCloud","website":"https://owncloud.org","license":"GNU Affero General Public License v3.0 or later","description":"ownCloud is a free and open source file hosting service. It also supports extensions for online document editing, calendar and contact synchronization. It's a safe home for all your data.","enhanced":false,"tile_background":"dark","icon":"owncloud.png","sha":"65b812eec22cac06cb224262436bcc726f717f6a"},{"appid":"742fb53dbb4fac003115e7f6ec7c46f39c797040","name":"OwnPhotos","website":"https://github.com/hooram/ownphotos","license":"MIT License","description":"Self hosted wannabe Google Photos clone, with a slight focus on cool graphs","enhanced":false,"tile_background":"light","icon":"ownphotos.png","sha":"d0b3711f5620a1618d0d9ea010d0bf89a00d97e6"},{"appid":"710f91b65aed9bbc884898b19b6b4bb17ec5b32c","name":"Palo Alto Networks","website":"https://www.paloaltonetworks.com","license":"Commercial","description":"Palo Alto ore products are a platform that includes advanced firewalls and cloud-based offerings that extend those firewalls to cover other aspects of security.","enhanced":false,"tile_background":"light","icon":"paloaltonetworks.png","sha":"fabb5ace9a541cbd68ef5c887b490faab5948122"},{"appid":"6249c08eaa417b9918c69ed2d32ac88b386bc1b2","name":"Paperless","website":"https://github.com/danielquinn/paperless","license":"GPL-3.0","description":"Scan, index, and archive all of your paper documents","enhanced":false,"tile_background":"light","icon":"paperless.png","sha":"38b403304dd5c63638d010ecdf83b945f3e7ad9c"},{"appid":"23e9c842d2423902706ae92996554f6fbd92c502","name":"PaperlessNgx","website":"https://github.com/paperless-ngx/paperless-ngx","license":"GNU General Public License v3.0 only","description":"Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.","enhanced":true,"tile_background":"dark","icon":"paperlessngx.svg","sha":"2149aa83ee0b9ae0dae23e260287a5452473271d"},{"appid":"e782bdad5e303d079375eac9d6b2bc03ed4fb7c5","name":"Papermerge","website":"https://www.papermerge.com/","license":"Apache License 2.0","description":"Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS. Papermerge DMS on its turn will extract text data from the scanned documents using Optical Character Recognition (OCR) technology the index it and make it searchable. You will be able to quickly find any (scanned!) document using full text search capabilities.\r\n\r\nPapermerge is perfect tool to manage documents in PDF, JPEG, TIFF and PNG formats.","enhanced":false,"tile_background":"dark","icon":"papermerge.svg","sha":"8b71c56ea9c410f4c615820b0c5fa8815f4ba0c9"},{"appid":"1194ad979d9724f6866d0d0f2347580a78a283cc","name":"PartKeepr","website":"https://partkeepr.org","license":"GNU General Public License v3.0 only","description":"PartKeepr is an inventory management software, primarily designed for electronic components.","enhanced":false,"tile_background":"light","icon":"partkeepr.png","sha":"49265c766dc8417ea67c890eb2b2286efc2bf8ae"},{"appid":"bf096d8f5ce86ff113f6cad2a36d565dc0f13ffc","name":"PeerTube","website":"https://joinpeertube.org","license":"GNU Affero General Public License v3.0 only","description":"PeerTube is an experimental decentralized federated video platform system that uses peer-to-peer technology to reduce load on individual servers.","enhanced":false,"tile_background":"light","icon":"peertube.png","sha":"77810eb827a0e5647cea667c3e0b6c454f308ed5"},{"appid":"f8ac7f280fe53cea71efe29c42f0d3bca430c02d","name":"pfSense","website":"https://www.pfsense.org","license":"Apache License 2.0","description":"pfSense is an open source firewall/router computer software distribution based on FreeBSD.","enhanced":false,"tile_background":"dark","icon":"pfsense.svg","sha":"d8a6d15900b010cd2dc0c2740f92deee091af032"},{"appid":"43784e464f66bfc0254a3bad48939f14a70c878e","name":"pgAdmin","website":"https://www.pgadmin.org","license":"PostgreSQL License","description":"pgAdmin is a feature rich open-source administration and development platform for PostgreSQL.","enhanced":false,"tile_background":"dark","icon":"pgadmin.png","sha":"9f10a4132859247241b29512b7e7963ed27d962f"},{"appid":"1d49c185b74e2b41addce38d2334000daf4c60d9","name":"Phoscon","website":"https://phoscon.de/en/app/doc","license":"BSD 4-Clause \"Original\" or \"Old\" License","description":"The Phoscon App is a powerful tool to configure and control small and larger smart light installations. Specializing in the popular wireless standard Zigbee, the Phoscon App supports a steadily growing number of lights, sensors and switches from various well-known manufacturers.","enhanced":false,"tile_background":"dark","icon":"phoscon.svg","sha":"65e2e6cba9513f2218e7bd52bdedaf2e6ce78ae0"},{"appid":"ec9dab93c7d9cba1c5171ed468dfee950b933c94","name":"Photonix","website":"https://photonix.org","license":"GNU Affero General Public License v3.0 only","description":"This is a photo management application based on web technologies. Run it on your home server and it will let you find what you want from your photo collection using any device. Smart filtering is made possible automatically by object recognition, location awareness, color analysis and other algorithms.","enhanced":false,"tile_background":"light","icon":"photonix.png","sha":"c558bd87f124b9ee0057f8e08a0f4797170e29ec"},{"appid":"f60f5b25d59c397989e3cd374f81cdd7710a4fca","name":"PhotoPrism","website":"https://photoprism.org","license":"GNU General Public License v3.0 only","description":"PhotoPrism is a server-based application for browsing, organizing and sharing your personal photo collection. It makes use of the latest technologies to automatically tag and find pictures without getting in your way. Say goodbye to solutions that force you to upload your visual memories to the cloud.","enhanced":true,"tile_background":"light","icon":"photoprism.png","sha":"08db94dfb53d55575650b8b8a081534c5624c48e"},{"appid":"d9946b11ca2139e9299705b734b94e3d3066d4ec","name":"Photoview","website":"https://photoview.github.io","license":"GNU Affero General Public License v3.0 or later","description":"Photoview is a simple and user-friendly photo gallery that's made for photographers and aims to provide an easy and fast way to navigate directories, with thousands of high-resolution photos.\r\n\r\nYou configure Photoview to look for photos and videos within a directory on your file system. The scanner automatically picks up your media and start to generate thumbnail images to make browsing super fast.\r\n\r\nWhen your media has been scanned they show up on the website, organised in the same way as on the filesystem.","enhanced":false,"tile_background":"dark","icon":"photoview.svg","sha":"aad167eccc34680bebe9b7cc3ce0f349a3094f8b"},{"appid":"db44aad188b5bbe570bd96e3e5a9e7f0e893bc90","name":"phpIPAM","website":"https://phpipam.net","license":"GNU General Public License v3.0 or later","description":"phpIPAM is an open-source web IP address management application. Its goal is to provide light, modern and useful IP address management. It is a php-based application with a MySQL database backend, using jQuery libraries, ajax and HTML5/CSS3 features.","enhanced":false,"tile_background":"light","icon":"phpipam.png","sha":"7250831b3bbf4d25ed2c7d6e6e79a8fb340d223e"},{"appid":"6a8263e6e3ad594a12e111f0f952e4cc57fe5077","name":"phpLDAPadmin","website":"http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page","license":"GNU General Public License v2.0 or later","description":"phpLDAPadmin (also known as PLA) is a web-based LDAP client. It provides easy, anywhere-accessible, multi-language administration for your LDAP server.\r\n\r\nIts hierarchical tree-viewer and advanced search functionality make it intuitive to browse and administer your LDAP directory. Since it is a web application, this LDAP browser works on many platforms, making your LDAP server easily manageable from any location.\r\n\r\nphpLDAPadmin is the perfect LDAP browser for the LDAP professional and novice alike. Its user base consists mostly of LDAP administration professionals.","enhanced":false,"tile_background":"light","icon":"phpldapadmin.png","sha":"5e28cc6266faa6dec9d56fa54469becf811cfca8"},{"appid":"51ca673ea8e89a868706fd309777a101ac63a409","name":"phpMyAdmin","website":"https://www.phpmyadmin.net","license":"GNU General Public License, version 2","description":"phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement.","enhanced":false,"tile_background":"light","icon":"phpmyadmin.png","sha":"27a196e07ed93545a80f573a99bd2ed583ed7290"},{"appid":"e7780295cba962fe2c4a2aa84c82794611b8942b","name":"Pi.Alert","website":"https://github.com/jokob-sk/Pi.Alert/","license":"GNU General Public License v3.0 only","description":"WIFI / LAN intruder detector.\r\n\r\nScan the devices connected to your WIFI / LAN and alert you the connection of unknown devices. It also warns if a \"always connected\" devices disconnects.","enhanced":false,"tile_background":"dark","icon":"pialert.png","sha":"825ffe5b6a873467a5df45d1b5e94a9791b00fde"},{"appid":"b897f0f558bc83256a49d5c7e8f1658d87cfe820","name":"PiAware","website":"https://github.com/flightaware/piaware","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Client-side package and programs for forwarding ADS-B data to FlightAware","enhanced":true,"tile_background":"light","icon":"piaware.png","sha":"593fe29a4d223d46fac48ac186de0940b5ab6a86"},{"appid":"b89920409bdce40e08ba1023480b0546061cd577","name":"Pi-hole","website":"https://pi-hole.net","license":"European Union Public License 1.2","description":"Pi-hole is a Linux network-level advertisement and internet tracker blocking application which acts as a DNS sinkhole, intended for use on a private network.","enhanced":true,"tile_background":"dark","icon":"pihole.svg","sha":"fb9cf47ecb04c1efee418161cef4209e8894929c"},{"appid":"3c8ecb5a9c477237e32b3776922fce3fd6e8a514","name":"PiKVM","website":"https://pikvm.org/","license":"GNU General Public License v3.0 or later","description":"A very simple and fully functional Raspberry Pi-based KVM over IP that you can make with your own hands without any soldering!","enhanced":false,"tile_background":"light","icon":"pikvm.png","sha":"d4472b1b28dd766aecd20decc8d3b3e5c1e16a27"},{"appid":"c0f951b12d14c47e4e488294584808ff31747eea","name":"PiVPN","website":"https://www.pivpn.io","license":"MIT License","description":"The simplest way to setup and manage a VPN, designed for Raspberry Pi.","enhanced":false,"tile_background":"light","icon":"pivpn.png","sha":"78b6eb621d00322ad55686ac289856c041131082"},{"appid":"73821d23ad8bb436e7478fec8305ad0636c17d7a","name":"Piwigo","website":"piwigo.org","license":"GNU General Public License v2.0 only","description":"Piwigo is an open source photo galley software. Designed as an alternative to Picasa or Flickr it can be self-hosted or used as a service. It offers many plugins, and offers full photo management capabilities","enhanced":false,"tile_background":"light","icon":"piwigo.png","sha":"ac68ae216dd5c41d7a0ae53946e71c5d81bc2301"},{"appid":"7ba6bc2c0f5fbf27166c29bc5b39f6527fb27835","name":"Pleroma","website":"https://pleroma.social","license":"GNU Affero General Public License v3.0 or later","description":"Pleroma is a free, federated social networking server built on open protocols. It is compatible with GNU Social, Mastodon, and many other ActivityPub implementations.","enhanced":false,"tile_background":"dark","icon":"pleroma.png","sha":"bac454d8982160eb01b22a492e5795969bc5b08f"},{"appid":"96bace2f6616fad61930a4ca021809c00a7e9e2a","name":"Plesk","website":"https://www.plesk.com","license":"Proprietary","description":"Plesk is a commercial web hosting platform with a control panel that allows a server administrator to set up new websites, reseller accounts, e-mail accounts and DNS entries through a web-based interface.","enhanced":false,"tile_background":"light","icon":"plesk.png","sha":"c16300ed9ddaf136643f32cd17d68b2f272695fa"},{"appid":"aebda823a279b219476c565be863d83739999502","name":"Plex","website":"https://www.plex.tv","license":"Freemium","description":"Plex media server allows you to aggregate all your personal media and access it anywhere you go. Enjoy your own content on all your devices with Plex.","enhanced":true,"tile_background":"dark","icon":"plex.png","sha":"a2adcd1b7c59861f74fc283951495f7044491e08"},{"appid":"6dec25c0d43491eadaf519800e0dbf6adfe86f1a","name":"PlexRequests","website":"http://plexrequests.8bits.ca","license":"MIT License","description":"Simple automated way for users to request new content for Plex.","enhanced":false,"tile_background":"dark","icon":"plexrequests.png","sha":"9c9b3cfbaed21a4a4beee419030998b74fbe8908"},{"appid":"e5289e584b9daf86b4ee2b2b394696cdd99a07cf","name":"Plume","website":"https://joinplu.me","license":"GNU Affero General Public License v3.0","description":"Plume is a federated blogging engine based on ActivityPub. It is written in Rust, with the Rocket framework, and Diesel to interact with the database. The front-end uses Ructe templates, WASM and SCSS.","enhanced":false,"tile_background":"light","icon":"plume.png","sha":"e76ad4011ad20eba89ef6a93cbeed83ebf8d36ed"},{"appid":"07b796b3a10eaa8b6f485ed2379187a39400b459","name":"Portainer","website":"https://portainer.io","license":"zlib License","description":"Portainer is a simple management solution for Docker. Easily manage your Docker hosts and Docker Swarm clusters via Portainer web user interface.","enhanced":true,"tile_background":"dark","icon":"portainer.svg","sha":"94a81b07f372894d0b6db212e2bb33681a1c839c"},{"appid":"a28abde6e5a823e9c7115a94d71c3fc628a0efd4","name":"Poste","website":"https://poste.io","license":"MIT License","description":"Full stack mailserver solution with SSL TLS support. POP3s, SMTP(s), IMAPs, RSPAMD, Clamav, Roundcube(HTTPS), SPF, DKIM with simple installation and web administration.","enhanced":false,"tile_background":"dark","icon":"Poste.png","sha":"bdb2c2ff52ec5ce2943ee8467c1279c3d6dc5216"},{"appid":"3d3221b2db3115d65e938a1c497f209256c6185f","name":"Printer","website":"https://en.wikipedia.org/wiki/Printer_(computing)","license":"Commercial","description":"A printer is a peripheral device which makes a persistent representation of graphics or text, usually on paper. Printers that have a network connection often include a built-in web server that lets you manage the printer from any browser on the network.","enhanced":false,"tile_background":"dark","icon":"printer.png","sha":"25e2a615ca4e98d50c8bb8f2140b457e990f3bce"},{"appid":"87ecbead58e42b5ab9e1a92ccc0b42075f4fba91","name":"Privatebin","website":"https://privatebin.info","license":"zlib/libpng License with Acknowledgement","description":"PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data.\r\n\r\nData is encrypted and decrypted in the browser using 256bit AES in Galois Counter mode.","enhanced":false,"tile_background":"light","icon":"privatebin.png","sha":"dde886b1df2528b447a68114d9c79be9a4ace54b"},{"appid":"91adc8832dfee8dea234877dad680682ab947980","name":"ProjectSend","website":"https://www.projectsend.org","license":"GNU General Public License v3.0 only","description":"ProjectSend is a self-hosted, free and open source, secure and user friendly file sharing software focusing on exchanging files between you and your clients.","enhanced":false,"tile_background":"light","icon":"projectsend.png","sha":"14bd805ea7cce460a82e274a1cece5f3f1191cec"},{"appid":"aad8f23c2fa06d46c52ae4e06c8d4bdac6074b8f","name":"Prometheus","website":"https://prometheus.io","license":"Apache License 2.0","description":"Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true.","enhanced":false,"tile_background":"light","icon":"prometheus.png","sha":"070ea4fbdd1cfa045a80ff6d8fb0e7a7df5dff71"},{"appid":"de6ff49c94538e6e13a77f75991141a4fe9af8bf","name":"Prowlarr","website":"https://prowlarr.com","license":"GNU General Public License v3.0 only","description":"Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).","enhanced":true,"tile_background":"dark","icon":"prowlarr.svg","sha":"6bbe26e5bf924ddd34ac0bb4a43430a0be2488db"},{"appid":"391f2b7f3fe853e1ea09723eeafc354fa291ab48","name":"Proxmox","website":"https://www.proxmox.com/en/","license":"GNU Affero General Public License v3.0 only","description":"Proxmox Virtual Environment is an open-source server virtualization environment. It allows deployment and management of virtual machines and containers","enhanced":true,"tile_background":"light","icon":"proxmox.svg","sha":"98ad9b1045c76a332b05f8500dae8ab476fe7041"},{"appid":"0ea6cd5e52e84ef9afd444f5693d09d216b10ba2","name":"PRTG","website":"https://www.paessler.com/prtg","license":"100 sensors free","description":"Monitor all systems, devices, traffic and applications of your IT infrastructure.","enhanced":true,"tile_background":"light","icon":"prtg.png","sha":"1b810e1f394ac51be691d3003383886bc7eca0d0"},{"appid":"1beb54ac8e91638c7a181fd04ca5a4a5ec5343c1","name":"PsiTransfer","website":"https://hub.docker.com/r/psitrax/psitransfer","license":"BSD with attribution","description":"A simple open source self-hosted file sharing app. Upload a file instantly anywhere around the world.","enhanced":false,"tile_background":"light","icon":"psitransfer.png","sha":"d7cd1ddc15a65108f9c89da617f596b835354420"},{"appid":"0a5cd6b94160a13583653d188b5083c3fa3cacdf","name":"Pterodactyl","website":"https://pterodactyl.io","license":"MIT License","description":"Pterodactyl is an open-source game server management panel built with PHP 7, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end-users.","enhanced":false,"tile_background":"light","icon":"pterodactyl.png","sha":"9067c8b7231714bc2e865dcd9d8997427a107ca7"},{"appid":"0e859100d4a94f55ca42b82db2dadce415aff7ad","name":"pyLoad","website":"https://pyload.net","license":"GNU General Public License v3.0 only","description":"Free and Open Source download manager written in Pure Python and designed to be extremely lightweight, fully customizable and remotely manageable","enhanced":false,"tile_background":"dark","icon":"pyload.png","sha":"4d95ac5fbde5facb56ea7d498b62d34b5e0043ae"},{"appid":"3ebd4dd8afe6308e392ccf09e3516eee99a1e8df","name":"qBittorrent","website":"https://www.qbittorrent.org","license":"GNU General Public License v2.0 only","description":"The qBittorrent project aims to provide an open-source software alternative to µTorrent.","enhanced":true,"tile_background":"dark","icon":"qbittorrent.svg","sha":"e4e9a2b23835f96582da71d499cd808412280771"},{"appid":"4095a83996a808dfa4ef0e283b08fa3684596bb4","name":"QNAP","website":"https://www.qnap.com","license":"commercial","description":"QNAP Systems, Inc. is a Taiwanese corporation that specializes in Network-attached storage (NAS) appliances used for file sharing, virtualization, storage management and surveillance applications.","enhanced":false,"tile_background":"light","icon":"qnap.png","sha":"2e5ece37991fbdc7c0d2dd3a73e77460756247a6"},{"appid":"d37a9628bc10a8816f3b679566d2505ab43b55a0","name":"RabbitMQ","website":"https://www.rabbitmq.com/","license":"Mozilla Public License 2.0","description":"RabbitMQ is a free, open-source and extensible message queuing solution. It is a message broker that understands AMQP (Advanced Message Queuing Protocol), but is also able to be used with other popular messaging solutions like MQTT. It is highly available, fault tolerant and scalable.","enhanced":true,"tile_background":"light","icon":"rabbitmq.svg","sha":"96d57ab095a576fc199732fcfe937a844d013f03"},{"appid":"8a5cd39a1a5dff323d63bbe45fffe0c9c03bd2e7","name":"Radarr","website":"https://radarr.video","license":"GNU General Public License v3.0 only","description":"Radarr is an independent fork of Sonarr reworked for automatically downloading movies via Usenet and BitTorrent.\r\n\r\nThe project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.","enhanced":true,"tile_background":"light","icon":"radarr.svg","config":{"type":"apikey","stat1":{"name":"Missing","url":":url:api/v3/movie?apikey=:apikey:","key":"","filter":"filter","filterBy":"hasFile","filterByValue":"false","updateOnChange":"no","suffix":""},"stat2":{"name":"Queue","url":":url:api/v3/queue?apikey=:apikey:","key":"totalRecords","filter":"none","updateOnChange":"no","suffix":""}},"sha":"389c3abe30d176e1d6857920dd20cb398f30c705"},{"appid":"10bde312e853977971f0fb1873afb70c713df2bf","name":"Rainloop","website":"https://www.rainloop.net","license":"GNU Affero General Public License v3.0","description":"Simple, modern & fast web-based email client","enhanced":false,"tile_background":"light","icon":"rainloop.png","sha":"e989a46e2cb6e67ca31b0fbf0fc857703430d448"},{"appid":"cb4fa9655f4c77e40e3a9c2a5e5841927fc7b8a6","name":"Rancher","website":"https://rancher.com","license":"Apache License 2.0","description":"Rancher is an open source project that provides a container management platform built for organizations that deploy containers in production.","enhanced":false,"tile_background":"dark","icon":"rancher.svg","sha":"8907f62e7bbc12e0a7cfaf1fe01cc50258ccd886"},{"appid":"8bfa46ba721763e4ee235d6a8caef46247735eda","name":"Raneto","website":"https://github.com/gilbitron/Raneto","license":"MIT License","description":"Raneto is a free, open, simple Markdown powered Knowledgebase for Node.js.","enhanced":false,"tile_background":"light","icon":"raneto.png","sha":"01991d90390575fb95e5953fbde98be874e8ce2b"},{"appid":"506c7a7e21b5c2b750eccf8fdf91f072a9826f52","name":"Rclone","website":"https://rclone.org","license":"MIT License","description":"Rclone (\"rsync for cloud storage\") is a command line program to sync files and directories to and from different cloud storage providers.","enhanced":false,"tile_background":"light","icon":"rclone.png","sha":"7c637eb900ed1a8ecfc23b4134e3fa61fa6128ae"},{"appid":"533ab349d29dba8f2ecc5a552ba8846a9453f82a","name":"Readarr","website":"https://readarr.com","license":"GNU General Public License v3.0 only","description":"Readarr is a ebook (and maybe eventually magazine/audiobook) collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new books from your favorite authors and will grab, sort and rename them.","enhanced":true,"tile_background":"dark","icon":"readarr.svg","sha":"9c110cf85bd784c9dc882d659d37a8f4918bc2fb"},{"appid":"8d6955fafc1996f6b6535739e8e2419d09e0d545","name":"Recalbox","website":"https://www.recalbox.com","license":"MIT License","description":"Recalbox allows you to re-play a variety of videogame consoles and platforms in your living room, with ease! Recalbox OS is free, open source and designed to let you create your very own Recalbox in no time! Use Raspberry Pi, ODROID or even PC (x86)!","enhanced":false,"tile_background":"dark","icon":"recalbox.png","sha":"2a2cf348c8f05ef04806cb88668dfefcdf6dbe1e"},{"appid":"fd3e5a20d3595a90e1b6d0243ab6e78ff18d68b4","name":"RedisInsight","website":"https://redis.com/redis-enterprise/redis-insight/","license":"Commercial","description":"RedisInsight is a visual tool that provides capabilities to design, develop and optimize your Redis application. Query, analyse and interact with your Redis data.","enhanced":false,"tile_background":"dark","icon":"redisinsight.svg","sha":"fd65caba9f0e87f3633754db69890b7226c095bf"},{"appid":"e7a69443c2470473fe7e5a90b049ec771472f6aa","name":"Requestrr","website":"https://github.com/darkalfx/requestrr","license":"MIT License","description":"Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat!","enhanced":false,"tile_background":"dark","icon":"requestrr.png","sha":"0af50b01f2e7292f37e126519e8a35d6f7223ff6"},{"appid":"891934b3a775769d929fabfaf93520db8205eaf6","name":"Resilio Sync","website":"https://www.resilio.com","license":"Proprietary","description":"Resilio Sync is a fast, reliable, and simple file sync and share solution, powered by P2P technology.","enhanced":false,"tile_background":"dark","icon":"resiliosync.png","sha":"4979cd5a10c9115ce95479b808961392662bea00"},{"appid":"c3fdfdc6801bd71a615317cf54a113b3b0bc0bf4","name":"Riot Web","website":"https://about.riot.im","license":"Apache License 2.0","description":"Communicate the way you want with Riot - a universal secure chat app entirely under your control.","enhanced":false,"tile_background":"light","icon":"riotweb.svg","sha":"5502761a3cbf463e3361868f62d2181ff8b71799"},{"appid":"eb7e7cd624a1170881103b23d78a4d6a9dc5536f","name":"Robonect","website":"www.robonect-shop.de","license":"No Limit Public License","description":"Robonect® Hx verbindet deinen Gardena / Husqvarna / Flymo / McCulloch Mähroboter mit deinem WLAN und sorgt so dafür, dass Du weltweit auf alle Einstellungen und Funktionen zu jeder Zeit zugreifen kannst - mit und ohne App!","enhanced":false,"tile_background":"light","icon":"robonect.png","sha":"cc1adc35a6bbb045616d53432a14269aee2b94b9"},{"appid":"404b6861a94932750a70d2779fd785f018d90e36","name":"RocketChat","website":"https://rocket.chat","license":"MIT License","description":"Open Source Slack like chat server","enhanced":false,"tile_background":"dark","icon":"rocketchat.png","sha":"066e46bb4d347755dafaf4703f296a95ebc6c8c3"},{"appid":"f54fdb78762ce2a47c25c0fb8508141d72e29777","name":"RompЯ","website":"https://fatg3erman.github.io/RompR","license":"Creative Commons Attribution Non Commercial Share Alike 4.0 International","description":"RompЯ is a music player with the emphasis on discovery - discovering more about the music you know, and discovering new music you don’t know yet. RompЯ is an interface that runs in a web browser on any device and controls a music player which can be on any other device. I recommend using Mopidy as the music player. When used with Mopidy and a Spotify Premium subscription RompЯ is a powerful Spotify client with many music discovery features.","enhanced":false,"tile_background":"dark","icon":"rompya.png","sha":"364bbc24468458fd8a7bf2806f26ba7f393c115d"},{"appid":"0faa0037bf071040588c082c0c5c8dee3e11f2cd","name":"Roundcube","website":"https://roundcube.net","license":"GNU General Public License v3.0 or later","description":"Roundcube webmail is a browser-based multilingual IMAP client with an application-like user interface. It provides full functionality you expect from an email client, including MIME support, address book, folder manipulation, message searching and spell checking.","enhanced":false,"tile_background":"light","icon":"roundcube.png","sha":"537de7714872cd6c6fa965ca3c05c9170b83b4a2"},{"appid":"77eb1db6cb81b3cb088d36ab7aae8f230dcfaa28","name":"Router","website":"https://en.wikipedia.org/wiki/Router_(computing)","license":"Commercial","description":"A router is a networking device that forwards data packets between computer networks.","enhanced":false,"tile_background":"light","icon":"router.svg","sha":"bbb9749b2e856f9667b36d723165014250b1d5dd"},{"appid":"5876529d5d47f91c435d9230576044bc4cad8547","name":"Rspamd","website":"https://rspamd.com","license":"Apache 2.0","description":"Fast, free and open-source spam filtering system.","enhanced":false,"tile_background":"dark","icon":"rspamd.png","sha":"79ae798f9e51dbf96d4b87e45fe3cf5daacc2617"},{"appid":"b0fab9d908b0feb45ae719849642031f157d56ae","name":"RSS-Bridge","website":"https://rss-bridge.github.io/rss-bridge/","license":"The Unlicense","description":"RSS-Bridge is free and open source software for generating Atom or RSS feeds from websites which don’t have one. It is written in PHP and intended to run on a Web server.","enhanced":false,"tile_background":"dark","icon":"rssbridge.png","sha":"28ed6176b6e9fd73dbde3852f41ae2c738698adc"},{"appid":"4bd81355b682b80389770b2d9a4e5a4c5685de34","name":"RSSHub","website":"https://github.com/DIYgod/RSSHub","license":"MIT License","description":"RSSHub is an open source, easy to use, and extensible RSS feed generator. It's capable of generating RSS feeds from pretty much everything.\r\n\r\nRSSHub delivers millions of contents aggregated from all kinds of sources, our vibrant open source community is ensuring the deliver of RSSHub's new routes, new features and bug fixes.\r\n\r\nRSSHub can be used with browser extension RSSHub Radar and mobile auxiliary app RSSBud (iOS) and RSSAid (Android)","enhanced":false,"tile_background":"light","icon":"rsshub.png","sha":"7200d3510261ad3b8f9ced879594febdda372088"},{"appid":"243338479393d415bba0b6a94f70db8dadd672db","name":"RStudio Server","website":"https://rstudio.com/products/rstudio/download-server","license":"GNU Affero General Public License v3.0","description":"RStudio Server provides a browser-based interface to the RStudio IDE for interacting with server-based deployments of R. R is a statistical programming language used by statisticians, analysts, and data scientists for for processing, modeling, and visualizing data.","enhanced":false,"tile_background":"light","icon":"rstudioserver.png","sha":"231a89162432a44976b8388d5534ca1f84e9004a"},{"appid":"eea19d4cce28c77d2a0c1449a508d6290d00f9dd","name":"Rundeck","website":"https://www.rundeck.com/open-source","license":"Apache License 2.0","description":"Rundeck is an open source automation service with a web console, command line tools and a WebAPI. It lets you easily run automation tasks across a set of nodes.","enhanced":false,"tile_background":"dark","icon":"rundeck.png","sha":"7f87f212f4de69dc9f11dad6eb19fc8e70db668f"},{"appid":"11f6ce44eb513a288ca4ef26cbbdb3fece2d6ec4","name":"RuneAudio","website":"http://www.runeaudio.com","license":"GNU General Public License v3.0 or later","description":"RuneAudio is a free and open source software that turns inexpensive, silent and low-consumption mini-PC into Hi-Fi music players.","enhanced":true,"tile_background":"dark","icon":"runeaudio.png","sha":"f6f19035e5d74f217e8881a5f4c4ddcbc640ec95"},{"appid":"fbf13ee99afeadddc4f73e1183fd1b52774b3474","name":"ruTorrent","website":"https://github.com/Novik/ruTorrent","license":"GNU General Public License v3.0 or later","description":"ruTorrent is a front-end for the popular Bittorrent client rtorrent.","enhanced":true,"tile_background":"dark","icon":"rutorrent.png","sha":"2860d752e88dcc02a477cb78d57a5162bc8e89de"},{"appid":"7aa898759f1d210aaa5edc8a184bfe5e1668b5bd","name":"SABnzbd","website":"https://sabnzbd.org","license":"GNU General Public License v2.0 or later","description":"SABnzbd is a multi-platform binary newsgroup downloader. The program works in the background and simplifies the downloading verifying and extracting of files from Usenet.","enhanced":true,"tile_background":"dark","icon":"sabnzbd.svg","config":{"type":"apikey","stat1":{"name":"Queue","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.sizeleft","filter":"none","updateOnChange":"Yes","suffix":""},"stat2":{"name":"Speed","url":":url:api?output=json&apikey=:apikey:&mode=queue","key":"queue.speed","filter":"speed","updateOnChange":"Yes","suffix":""}},"sha":"c39fd7ff643eab9e2447b99169a484912de1da2a"},{"appid":"40892c1b428213c21516114ade1eaeb8fe26fc96","name":"Scrutiny","website":"https://github.com/AnalogJ/scrutiny","license":"MIT License","description":"Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates.","enhanced":false,"tile_background":"light","icon":"scrutiny.png","sha":"a27f0ae0a6b514344d748102370c92fa5b2445a9"},{"appid":"055bbb599e68faa20cba22098b4802152b33b763","name":"Seafile","website":"https://www.seafile.com","license":"GNU General Public License v2.0 only","description":"Seafile is an open source enterprise file hosting platform with high reliability and performance. Put files on your own server. Sync and share files across different devices, or access all the files as a virtual disk.","enhanced":false,"tile_background":"dark","icon":"seafile.png","sha":"67e3b51b7fd7a61122b67bcfaa65b148f993f5ca"},{"appid":"d3f896182b5c10b07918e295fce8c5aef054d266","name":"Searx Metasearch Engine","website":"https://searx.me","license":"https://github.com/asciimoo/searx/blob/master/LICENSE","description":"A privacy-respecting, hackable metasearch engine.","enhanced":false,"tile_background":"dark","icon":"searxmetasearchengine.png","sha":"e83f0fc655c95416192331204c89e89f63dc651c"},{"appid":"3de4f901fffb30ac720b0e7eb654b4faa2dd03fa","name":"Server","website":"https://en.wikipedia.org/wiki/Server_(computing)","license":"Commercial","description":"In computing, a server is a piece of computer hardware or software (computer program) that provides functionality for other programs or devices, called \"clients\". This architecture is called the client–server model. Servers can provide various functionalities, often called \"services\", such as sharing data or resources among multiple clients, or performing computation for a client.","enhanced":false,"tile_background":"light","icon":"server.svg","sha":"ce77e236e600a043e236bee3edc66802db72fbb4"},{"appid":"8830438516d806a81d3d2650afa14af4f61bec1f","name":"Serviio","website":"http://serviio.org","license":"Free","description":"Serviio is a free media server. It allows you to stream your media files (music, video or images) to renderer devices (e.g. a TV set, Bluray player, games console or mobile phone) on your connected home network.","enhanced":false,"tile_background":"dark","icon":"serviio.png","sha":"637381d3273f6243f51e68b6e3d7949d59d4e58a"},{"appid":"dc616e4c8950e8347b77334581bb126fdf171a86","name":"sftpgo","website":"https://github.com/drakkan/sftpgo","license":"GNU Affero General Public License v3.0","description":"Fully featured and highly configurable SFTP server with optional HTTP/S, FTP/S and WebDAV support. Several storage backends are supported: local filesystem, encrypted local filesystem, S3 (compatible) Object Storage, Google Cloud Storage, Azure Blob Storage, SFTP.","enhanced":false,"tile_background":"dark","icon":"sftpgo.png","sha":"1b3d6ce7be33c9faf07bea35dc5e0acfa2d84a8f"},{"appid":"9db4c1b8312db195c8c176f4df4b31998bf1a534","name":"Shaarli","website":"https://github.com/shaarli/Shaarli","license":"GNU General Public License v3.0 only","description":"Shaarli is a minimalist, database-free self-hosted bookmarking and link sharing service. It is designed to be personal (single-user), fast and handy.","enhanced":false,"tile_background":"dark","icon":"shaarli.png","sha":"c4ad367e59f12fd88e30866f188040d4a7aef4b0"},{"appid":"dcf2874559e0304e2811c796cb873ae9aac07fa2","name":"Shinobi","website":"https://shinobi.video","license":"GNU Public License 3.0","description":"An open-source CCTV NVR for recording, monitoring, and streaming modern IP cameras. Lightweight, extremely compatible and simple to use.","enhanced":false,"tile_background":"dark","icon":"shinobi.png","sha":"e35e373c393116792cab0a37549ad7ba2fe6a39f"},{"appid":"f758b0b8b86303210695bf561763bf1d3aadfbb5","name":"Shiori","website":"https://github.com/go-shiori/shiori","license":"MIT License","description":"Shiori is a simple bookmarks manager written in the Go language. Intended as a simple clone of Pocket. You can use it as a command line application or as a web application.","enhanced":false,"tile_background":"dark","icon":"shiori.svg","sha":"698d13c54f5364eff9f4b0405e592cf6903db984"},{"appid":"23829a678218110cead136b504b2f256bd4bf2c7","name":"Sickchill","website":"https://sickchill.github.io","license":"GNU General Public License v3.0 or later","description":"Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.","enhanced":false,"tile_background":"light","icon":"sickchill.png","sha":"f851e0d2b9636789b4c9a4bb7506c54bf3a619a4"},{"appid":"675dd93307bd5235a9b5da4268f9fee3d95d6235","name":"SickGear","website":"https://github.com/SickGear/SickGear","license":"GNU General Public License v3.0 only","description":"SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.","enhanced":false,"tile_background":"dark","icon":"sickgear.png","sha":"51b1b15773ef14160f02b0d6d35a80f6f1e6edf4"},{"appid":"0ffe6c3e1f43f953bcfe3a5adb50759b5938aa36","name":"Slack","website":"https://slack.com","license":"Proprietary","description":"Slack is a cloud-based set of proprietary team collaboration tools and services.","enhanced":false,"tile_background":"dark","icon":"slack.svg","sha":"92d7656f6c5c80e2144dc04a53e731ad9f9014c1"},{"appid":"b914d6bc6d5e2eb2cb5c4722489521a6d949d8e3","name":"Snapdrop","website":"https://snapdrop.net","license":"GNU General Public License v3.0 or later","description":"Snapdrop - The easiest way to transfer files across devices. Local file sharing in your browser. Inspired by Apple's Airdrop.","enhanced":false,"tile_background":"dark","icon":"snapdrop.png","sha":"d7a100fbb4380d8de66361239aacfa611f5c27a1"},{"appid":"6c050d5bdf522fa20599560ff0f6b74e7dcd97a8","name":"Snibox","website":"https://github.com/snibox/snibox","license":"MIT License","description":"Snibox is a self-hosted, single-user (for now) snippet manager. Developed to collect and organize code snippets. Supports various programming languages, markdown, plain text.","enhanced":false,"tile_background":"dark","icon":"snibox.png","sha":"ed28c64c31205392a09627a987b19a1ba2aaa9ad"},{"appid":"d143b3a76b72591495655c5257c7523456bdd736","name":"SOGo","website":"https://sogo.nu","license":"GNU GPL/LGPL v2 and above","description":"SOGo is a fully supported and trusted groupware server with a focus on scalability and open standards.","enhanced":false,"tile_background":"light","icon":"sogo.svg","sha":"05e420d3b4779d9b57b49e623435182f7a64bee9"},{"appid":"68b3ab5f7810a9984bd8f46d53de0abf35f613f9","name":"SonarQube","website":"https://www.sonarqube.org","license":"GNU Lesser General Public License v3.0 only","description":"Catch bugs and vulnerabilities in your app, with thousands of automated Static Code Analysis rules.","enhanced":false,"tile_background":"dark","icon":"sonarqube.png","sha":"811c048f13d093a651622d276e6cc8b8eecdb12a"},{"appid":"6e2a525ceb737f9ed8badcef5eb20d1502e39656","name":"Sonarr","website":"https://sonarr.tv","license":"GNU General Public License v3.0 only","description":"Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.","enhanced":true,"tile_background":"dark","icon":"sonarr.svg","config":{"type":"apikey","stat1":{"name":"Missing","url":":url:api/v3/wanted/missing?sortKey=series.title&apikey=:apikey:","key":"totalRecords","filter":"none","updateOnChange":"No"},"stat2":{"name":"Queue","url":":url:api/v3/queue?apikey=:apikey:","key":null,"filter":"count","updateOnChange":"No"}},"sha":"737742945408ff02aadba4d4f8c790080aea6f25"},{"appid":"f491c749924e2532e3b6c4496b94e03fd2b54f27","name":"Sourcegraph","website":"https://sourcegraph.com","license":"Apache License 2.0","description":"Sourcegraph is a free, open-source, self-hosted code search and navigation tool for developers. Use it with any Git code host for teams of any size.","enhanced":false,"tile_background":"dark","icon":"sourcegraph.png","sha":"d9d6e3049f870aa5ce3d97a59f019e6e6c6fc3ce"},{"appid":"c106a4464d1b08d0e35edb92ddfabae6f9dc765f","name":"Speedtest Tracker","website":"https://github.com/henrywhitaker3/Speedtest-Tracker","license":"GNU General Public License v3.0 only","description":"This program runs a speedtest check every hour and graphs the results. The back-end is written in Laravel and the front-end uses React. It uses the Ookla's speedtest cli package to get the data and uses Chart.js to plot the results.","enhanced":true,"tile_background":"dark","icon":"speedtesttracker.png","sha":"01b545a81688399029861dd8237c7f316941d092"},{"appid":"c8714150b8061714a04b8cc146c8bf0210c05b62","name":"Splunk","website":"https://splunk.com","license":"Commercial","description":"Splunk (the product) captures, indexes and correlates real-time data in a searchable repository from which it can generate graphs, reports, alerts, dashboards and visualizations.","enhanced":false,"tile_background":"dark","icon":"splunk.png","sha":"a8deca71ae0b07dae97ffd3a5aa5cddde17add73"},{"appid":"8d40ec161e2793d4ad3526e66d1723b2043780b6","name":"Spotweb","website":"https://github.com/spotweb/spotweb","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Spotweb is a decentralized usenet community based on the Spotnet protocol.","enhanced":true,"tile_background":"dark","icon":"spotweb.png","sha":"e00aed9f16132f459f4c4916edfc982629dd3764"},{"appid":"dddd912a7abafef0d73bf3ca9e2575e33971c012","name":"Squidex","website":"https://squidex.io","license":"MIT License","description":"Squidex is an open source headless content management system (cms) with automatic API generation. It can manage all your backend content, for example: Dynamic elements for your mobile apps. Blog posts and articles for your website. Configuration data for your backend. Rich and structured data for your application.","enhanced":false,"tile_background":"dark","icon":"squidex.svg","sha":"a21b12445b01aefa97201e5f1f8558de040194ea"},{"appid":"585815f2ee7291f96ea30333fd94d20b5722693f","name":"Stash","website":"https://github.com/stashapp/stash","license":"MIT License","description":"Stash is a Go app which organizes and serves your porn.","enhanced":true,"tile_background":"dark","icon":"stash.svg","sha":"7664861788f0246a05f7ca06ede5eda3b9442ad1"},{"appid":"2a7e2a851e5597e23c2be647eeda17d9105933ba","name":"Statping","website":"https://github.com/hunterlong/statping","license":"GNU General Public License v3.0 only","description":"Status Page for monitoring your websites and applications with beautiful graphs, analytics, and plugins. Run on any type of environment.","enhanced":false,"tile_background":"light","icon":"statping.png","sha":"20c3370f3d34d14bd0c99e02c4276146fac73470"},{"appid":"f2c4ab39ad8485316cf9f0ed6c5951629e324feb","name":"Strapi","website":"https://strapi.io","license":"MIT License","description":"Strapi is an open source headless content management system (CMS). Keep control and deliver faster. Building self-hosted, customizable and performant Content API has never been easier.","enhanced":false,"tile_background":"light","icon":"strapi.png","sha":"59395b5ba169429538ce614c0eff61146ae468cb"},{"appid":"3e1575bb500ee1e3bb80d84d3a8fb2d90a707ba4","name":"Streama","website":"https://github.com/streamaserver/streama","license":"MIT License","description":"Ever had a huge bookshelf full of shows and movies? Ever wanted to digitalize them, but didn't have a good way of organizing the files? Worry no more! Streama is your own personal Netflix for just such a purpose!","enhanced":false,"tile_background":"light","icon":"streama.png","sha":"738c732c3d61068d030ce2ba66e4426271ff4354"},{"appid":"0680196c9ecb05c60ff8f8e757deff6fc7260754","name":"Supermicro IPMI","website":"https://www.supermicro.com/en/solutions/management-software/ipmi-utilities","license":"Commercial","description":"IPMI is a hardware solution for controlling and managing your servers. It has significant differences and benefits compared to system diagnosis software. For example, IPMI gives you the ability to manage servers in remote physical locations regardless of the installed operating system.","enhanced":false,"tile_background":"light","icon":"supermicroipmi.png","sha":"98c7144d809615b0b9e5324e4d790892f65a0ffa"},{"appid":"35bc724730476a47cf18f92f486cd9e7745d4f15","name":"Sympa","website":"https://www.sympa.org","license":"GNU General Public License v2.0 only","description":"Sympa is an open source mailing list manager. It provides advanced features with a rich and secure web interface.","enhanced":false,"tile_background":"light","icon":"sympa.svg","sha":"4553a0a19edc59dc979b31968277ea957fd05d41"},{"appid":"361732e3fd1161330a49bebcccb955241621e1b1","name":"Synclounge","website":"https://github.com/samcm/SyncLounge","license":"MIT License","description":"SyncLounge (Previously PlexTogether) is a tool to sync Plex content across multiple players in multiple locations.","enhanced":false,"tile_background":"dark","icon":"synclounge.png","sha":"1cb4ef954be18518d5f89805292963e7ef61f383"},{"appid":"7775c3bbf580fbaf57818e68ce7b1b48b8f93b95","name":"Syncthing","website":"https://syncthing.net","license":"Mozilla Public License 2.0","description":"Syncthing is a free, open-source peer-to-peer file synchronization application. It can sync files between devices on a local network, or between remote devices over the Internet.","enhanced":true,"tile_background":"dark","icon":"syncthing.svg","sha":"6ff89e67021f5f09a270c199ba9b541d2100c35d"},{"appid":"8521f6e426ad621f27a6b48be57a3c6056c9cfd3","name":"Synology","website":"http://synology.com","license":"commercial","description":"Synology is a popular NAS appliance","enhanced":false,"tile_background":"light","icon":"synology.png","sha":"edb5d2969d16b21e4dcb9864c5baa9d49fa2be87"},{"appid":"1de00f5662a5c44f3d23b50f9e13232cdd64f667","name":"Tachidesk","website":"https://github.com/Suwayomi/Tachidesk-Server","license":"Mozilla Public License 2.0","description":"A free and open source manga reader server that runs extensions built for Tachiyomi.\r\nTachidesk is an independent Tachiyomi compatible software and is not a Fork of Tachiyomi.","enhanced":false,"tile_background":"dark","icon":"tachidesk.png","sha":"fe83e1a22215d0c746d86fca8d0be5cd33e3b6dc"},{"appid":"4c0f3ebde3d0c13fce8b4b02d1d80fea4123e07a","name":"Taiga","website":"https://taiga.io","license":"GNU Affero General Public License v3.0","description":"Taiga is a project management platform for agile developers & designers and project managers who want a beautiful tool that makes work truly enjoyable. It's free, open source and simple to use.","enhanced":false,"tile_background":"dark","icon":"taiga.png","sha":"6f2d59268e9edc8b2a6928073ac33b18eacd620f"},{"appid":"15f90b18166400660896d011856a88cd88d68b33","name":"Tailscale","website":"https://tailscale.com/","license":"BSD 3-Clause Clear License","description":"A secure network that just works\r\nZero config VPN. Installs on any device in minutes, manages firewall rules for you, and works from anywhere.","enhanced":false,"tile_background":"light","icon":"tailscale.svg","sha":"94503e8437823de32a95cd931160852c3e55ae8e"},{"appid":"343eebd3e9330c34952dcb3bc5c94ba12bf07a67","name":"Tandoor Recipes","website":"https://docs.tandoor.dev","license":"GNU Affero General Public License v3.0","description":"The recipe manager that allows you to manage your ever growing collection of digital recipes.","enhanced":false,"tile_background":"light","icon":"tandoorrecipes.svg","sha":"4961aee77029658c65f929324d4b7c4f098e1d45"},{"appid":"44fb3ee60816316d3c253e7454f5e0ab5f46680a","name":"Tar1090","website":"https://github.com/wiedehopf/tar1090","license":"GNU General Public License v2.0 only","description":"Provides an improved webinterface for use with ADS-B decoders readsb / dump1090-fa","enhanced":true,"tile_background":"dark","icon":"tar1090.png","sha":"bf76540e36e8787ce074117fbe9344e7af0f903d"},{"appid":"0c0c3373606e00d765583eaf1fc2c1bca6c09df3","name":"Tartube","website":"https://github.com/axcore/tartube","license":"GNU General Public License v3.0 only","description":"Tartube is a GUI front-end for youtube-dl, yt-dlp and other compatible video downloaders.","enhanced":false,"tile_background":"dark","icon":"tartube.png","sha":"ee6da5f5b017678cdd7b03ee232f168925d4b311"},{"appid":"ecf26dc5795ae2ccb3afbfa44570237590d65145","name":"TasmoAdmin","website":"https://github.com/reloxx13/TasmoAdmin","license":"GNU General Public License v3.0 only","description":"TasmoAdmin (previously SonWEB) is an administrative Website for Devices flashed with Tasmota.","enhanced":false,"tile_background":"dark","icon":"tasmoadmin.png","sha":"ae68356d54abd9aef42616a92ecf7a007cdafbae"},{"appid":"0d318b04d2442102c6a9643405bce18b5df5cf78","name":"Tasmota","website":"https://github.com/arendst/Tasmota","license":"GNU General Public License v3.0 or later","description":"Alternative firmware for ESP8266 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX.","enhanced":true,"tile_background":"light","icon":"tasmota.png","sha":"01b9f39c87538cfb8b500d737960c246cdb31041"},{"appid":"93ce76191583a25ac33c1918c5ad0b8a5f260451","name":"Tautulli","website":"https://tautulli.com","license":"GNU General Public License v3.0 only","description":"A python based web application for monitoring, analytics and notifications for Plex Media Server.","enhanced":true,"tile_background":"light","icon":"tautulli.png","sha":"591fba61833ef0f85e4dc68b36138d48422dbd36"},{"appid":"279db11ace3924a4a2a36dfd59a34e3bd352a5b4","name":"Tdarr","website":"https://github.com/HaveAGitGat/Tdarr","license":"GNU General Public License v3.0 only","description":"Tdarr is a self hosted web-app for automating media library transcode/remux management and making sure your files are exactly how you need them to be in terms of codecs/streams/containers etc. Designed to work alongside Sonarr/Radarr and built with the aim of modularisation, parallelisation and scalability, each library you add has its own transcode settings, filters and schedule. Workers can be fired up and closed down as necessary, and are split into 3 types - 'general', 'transcode' and 'health check'. Worker limits can be managed by the scheduler as well as manually. For a desktop application with similar functionality please see HBBatchBeast.","enhanced":true,"tile_background":"dark","icon":"tdarr.png","sha":"4f24ddbc299a63ffde4dc134b08fad6c0c054360"},{"appid":"fe8ca35ebcfc6fa1fc949fbcac58e083a19f6381","name":"Technitium DNS","website":"https://technitium.com/dns","license":"GNU General Public License v3.0 only","description":"Technitium DNS Server is an open source authoritative as well as recursive DNS server that can be used for self hosting a DNS server for privacy & security. It works out-of-the-box with no or minimal configuration and provides a user friendly web console accessible using any modern web browser.","enhanced":false,"tile_background":"dark","icon":"technitiumdns.png","sha":"4c3384c57cf575b2d8aba643d3f655785d8c9180"},{"appid":"18bd5c19b49acc0a5030708e664fb1ed249a8fa5","name":"Teedy","website":"https://teedy.io","license":"GNU General Public License v2.0 only","description":"Teedy is a lightweight document management system packed with all the features you can expect from big expensive solutions but still easy to use.","enhanced":false,"tile_background":"dark","icon":"teedy.png","sha":"662efb1db47a40739e6728299999ba834cdb40ac"},{"appid":"5023ad25cdb679ee3bf1e659434da75ec0177924","name":"The Lounge","website":"https://thelounge.chat","license":"MIT License","description":"Modern multi-user web IRC client designed for self-hosting","enhanced":false,"tile_background":"dark","icon":"thelounge.png","sha":"c74e820a489f56104640cb7154476e7628d40329"},{"appid":"9a83dce0e30910276872015367d926660780e6d8","name":"Tiny Tiny RSS","website":"https://tt-rss.org","license":"GNU General Public License v3.0 only","description":"Tiny Tiny RSS is a free and open source web-based news feed (RSS/Atom) reader and aggregator","enhanced":false,"tile_background":"light","icon":"tinytinyrss.png","sha":"6ea4f1a05f9ef0d2b61ec112afb76c11fe323be3"},{"appid":"67f7ed18fb98b30dc7ee328877f789de10be4227","name":"Traccar","website":"https://www.traccar.org","license":"Apache License 2.0","description":"Server software for GPS tracking including device communication back-end and web interface","enhanced":false,"tile_background":"light","icon":"traccar.png","sha":"2600dc67747b6d3fff9b82eb2cbb0259abc46ecf"},{"appid":"a83e2ce54bbef3bef63aa7f02b08dbda7fdae4c5","name":"Traefik","website":"https://traefik.io","license":"MIT License","description":"Træfik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Træfik integrates with your existing infrastructure components and configures itself automatically and dynamically.","enhanced":true,"tile_background":"dark","icon":"traefik.svg","sha":"b61c6737c460e1688918a34aebcbe5240a34181e"},{"appid":"34899a33e3d7e33e1966b921ea250350fc71591a","name":"Transmission","website":"https://transmissionbt.com","license":"GNU General Public License v3.0 only","description":"Transmission is a BitTorrent client which features a variety of user interfaces on top of a cross-platform back-end.","enhanced":true,"tile_background":"dark","icon":"transmission.svg","sha":"d1349722785bd70f122feca3ed4529674ebf9594"},{"appid":"3add4f3aea6cc6eb1ec164d73b6935ce454b8f16","name":"Trilium","website":"https://github.com/zadam/trilium","license":"GNU Affero General Public License v3.0","description":"Build your personal knowledge base with Trilium Notes.","enhanced":false,"tile_background":"dark","icon":"trilium.png","sha":"75ba75b91c313fb5d9f7b3f90ff852ee0766d53d"},{"appid":"07f6df4f81edd2e3dadf7e5fb56c37d6fb8acef4","name":"TrueNAS","website":"https://www.truenas.com","license":"BSD-2-Clause","description":"TrueNAS is an embedded open source network-attached storage (NAS) operating system based on FreeBSD.","enhanced":false,"tile_background":"light","icon":"truenas.png","sha":"64cebc679507e1e184060e92a0bbb8dc56fb8f7f"},{"appid":"a1e408cd7144157cd6400993af4f68046bf77fd5","name":"TrueNAS CORE","website":"https://www.truenas.com/truenas-core","license":"BSD 2-Clause FreeBSD License","description":"TrueNAS CORE is enterprise-quality software-defined storage that can be used without restrictions or cost. It is also the core of the full-fledged enterprise edition, TrueNAS Enterprise, which provides the additional fault-tolerance, performance, and support that businesses and critical applications require.","enhanced":true,"tile_background":"dark","icon":"truenascore.png","sha":"96052f07b7724f5c7e07c08c749024b2cca6e800"},{"appid":"03eeace210850159a5e9d11ffe1f8923bc2f876b","name":"TrueNAS SCALE","website":"https://www.truenas.com/truenas-scale","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"TrueNAS® SCALE is an Open Source Hyperconverged Infrastructure (HCI) solution. Built on TrueNAS CORE, SCALE adds Linux Containers, VMs (KVM), and scale-out ZFS storage capabilities.","enhanced":false,"tile_background":"dark","icon":"truenasscale.png","sha":"a42d987170bb9ec184841223018114aba0259e36"},{"appid":"ac61e1834dac0f75ea1ab6d3a23976ffc4f46b74","name":"TVHeadend","website":"https://tvheadend.org","license":"GNU General Public License v3.0 only","description":"TVHeadend, sometimes TVH for short, is a server application that reads video streams from LinuxTV sources and publishes them as internet streams.","enhanced":false,"tile_background":"dark","icon":"tvheadend.png","sha":"49897023bdc8de854fdc3c9bd00eed4ce02b558b"},{"appid":"6bf857ca7de026fbed4ae790a809a0ea640901f4","name":"TYPO3","website":"https://typo3.org","license":"GNU General Public License v2.0 or later","description":"The Professional, Flexible Content Management System.\nTYPO3 CMS is an Open Source Enterprise Content Management System with a large global community, backed by the approximately 900 members of the TYPO3 Association.","enhanced":false,"tile_background":"light","icon":"typo3.svg","sha":"4bef2b76c8b2f3b8de64907b17eab40ee3e93e69"},{"appid":"cf79bd157a6af435240abdd8fbf9afb5f09abb7d","name":"Ubooquity","website":"https://vaemendis.net/ubooquity","license":"MIT License","description":"Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.","enhanced":false,"tile_background":"dark","icon":"ubooquity.png","sha":"7483f4b94b55e5587c8585df26822a034c19871b"},{"appid":"8cdba423d7bb49fad21662247750cd715f08cdc5","name":"UniFi","website":"https://unifi-sdn.ubnt.com","license":"Unknown","description":"The UniFi® Controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.","enhanced":false,"tile_background":"light","icon":"unifi.png","sha":"c5b9087190125eb2533d06dbc6106e8b058ee869"},{"appid":"a831f55ecba8054c0534210efcbb5cb9a3ea9b61","name":"UniFi Protect","website":"https://ui.com/camera-security","license":"Proprietary","description":"UniFi Protect is a security management application that runs on a UniFi OS Console. With it, you can configure your Protect devices, watch live camera streams and recordings, download footage, create recording schedules, customize detection-specific notifications, and much more!","enhanced":false,"tile_background":"light","icon":"unifiprotect.png","sha":"03e5f810ea654b47339be9e789013e702725caa2"},{"appid":"c4727509e4ae21f95d5ba4634add6742e8520b2d","name":"Unmanic","website":"https://docs.unmanic.app/","license":"GNU Affero General Public License v3.0 or later","description":"Unmanic is a simple tool for optimising your file library. You can use it to convert your files into a single, uniform format, manage file movements based on timestamps, or execute custom commands against a file based on its file size.","enhanced":false,"tile_background":"dark","icon":"unmanic.png","sha":"985ca5184df32743bd1d02a63b718101653ab993"},{"appid":"11b790731286c7538e27885bc827dc6f6ceb8db2","name":"Unraid","website":"https://unraid.net","license":"Proprietary","description":"Unraid is software for storing and managing digital files on a mass-storage server. It is an embedded Network Attached Storage (NAS) server operating system.","enhanced":false,"tile_background":"dark","icon":"unraid.png","sha":"15a2b01831df27bf9e15b7e29f4688a06c1a6b44"},{"appid":"366c6646eedab83cc4b349f198424d2291cbfa76","name":"Uptime Kuma","website":"https://uptime.kuma.pet","license":"MIT License","description":"It is a self-hosted monitoring tool like \"Uptime Robot\".","enhanced":false,"tile_background":"dark","icon":"uptimekuma.svg","sha":"292e87cee7c6a9cdbb6708686bdcdfa471b32921"},{"appid":"89f71687e2a69d7c9432b2ee76a9b638306e9fd5","name":"UrBackup","website":"https://www.urbackup.org","license":"GNU Affero General Public License v3.0 or later","description":"UrBackup is an easy to setup Open Source client/server backup system, that through a combination of image and file backups accomplishes both data safety and a fast restoration time.\r\nFile and image backups are made while the system is running without interrupting current processes.\r\nUrBackup also continuously watches folders you want backed up in order to quickly find differences to previous backups. Because of that, incremental file backups are really fast.\r\nYour files can be restored through the web interface, via the client or the Windows Explorer while the backups of drive volumes can be restored with a bootable CD or USB-Stick (bare metal restore).","enhanced":true,"tile_background":"light","icon":"urbackup.png","sha":"f008897bff2b8afc07196cbd12a73db57eb3939a"},{"appid":"998d84b49df198a35d23f332e998fd371a94ade5","name":"Valetudo","website":"https://valetudo.cloud/","license":"Apache License 2.0","description":"Valetudo is the de-facto-standard open-source software solution for cloud-free vacuum robots empowering thousands of users. Since it was started in 2018, it has matured to a reliable fire-and-forget solution that just works.","enhanced":true,"tile_background":"dark","icon":"valetudo.png","sha":"e65e30d09f3e0549507e02628ba6047c885ac04a"},{"appid":"5f0180fbeccdee64f7314b367e87e6994089f199","name":"ViMbAdmin","website":"https://www.vimbadmin.net","license":"GNU General Public License v3.0 only","description":"The ViMbAdmin project (vim-be-admin) provides a web based virtual mailbox administration system allowing mail administrators to manage domains, mailboxes and aliases.","enhanced":false,"tile_background":"light","icon":"vimbadmin.png","sha":"c82862012148055d6246c4d2761fdbf4b12a8f6a"},{"appid":"62484a2ddd0930286322c0a4364dd404951a1070","name":"Virtualmin","website":"https://www.virtualmin.com","license":"GNU General Public License v3.0 only","description":"Virtualmin is a domain hosting and website control panel, which gives the ability to create and manage many domains. As well as simplify both automation and tasks.","enhanced":false,"tile_background":"dark","icon":"virtualmin.svg","sha":"496d90d4c3d0c55c95bc00f4034d25421d75c10e"},{"appid":"c934574c40a11992b08ce4e659ca23310916436c","name":"Virtual Radar Server","website":"https://www.virtualradarserver.co.uk","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Virtual Radar Server is an open-source .NET application that runs a local web server. You can connect to the web server with any modern browser and see the aircraft plotted on a map. You will need a radio that is capable of receiving Mode-S transmissions. Virtual Radar Server was written and tested using Kinetic Avionic's SBS-1er and SBS-3 radios but it will work with any receiver or SDR that can produce the Kinetic text message format, Kinetic's SBS-3 binary format, the AVR \"*\", \"@\" or \":\" formats or the Mode-S Beast binary format.","enhanced":false,"tile_background":"light","icon":"virtualradarserver.png","sha":"546fa5e360e9c96ccd5995d78128ec8d2860f307"},{"appid":"39d2762d5690a6ebeb6ac1615d3ee5d58b07ab7e","name":"VMware ESXi","website":"https://www.vmware.com/products/esxi-and-esx.html","license":"Commercial","description":"VMware ESXi is an enterprise-class, type-1 hypervisor developed by VMware for deploying and serving virtual computers. As a type-1 hypervisor, ESXi is not a software application that is installed on an operating system; instead, it includes and integrates vital OS components, such as a kernel.","enhanced":false,"tile_background":"dark","icon":"vmwareesxi.png","sha":"f92f0dc64e5512d66c50a992d4482036b122d2e4"},{"appid":"b63d3ad41413da4056fbae6dc0ebc190668b3545","name":"vmware horizon","website":"https://www.vmware.com/products/horizon.html","license":"Commercial","description":"desktop and app virtualization.","enhanced":false,"tile_background":"dark","icon":"vmwarehorizon.png","sha":"75c13fb0bac17e29c0fcf1f9b5befba277c635d3"},{"appid":"a0a47ab17060b3437e3f16fed9cae275c7e8d43a","name":"VMware vCenter","website":"https://www.vmware.com/products/vcenter-server.html","license":"Proprietary","description":"VMware vCenter Server provides a centralized platform for managing your VMware vSphere environments, allowing you to automate and deliver a virtual infrastructure across the hybrid cloud with confidence.","enhanced":false,"tile_background":"light","icon":"vmwarevcenter.png","sha":"f1bcd542bc135833d1c525b9309f23b4fbe3a613"},{"appid":"90c60ebc78d163e508d41233af19bf9b31706012","name":"Volumio","website":"https://volumio.org","license":"GNU General Public License v3.0 only","description":"Volumio is an open source audiophile music player. It is designed and fine-tuned for high-quality music playback and it runs on a variety of devices such as Raspberry PI and other microcomputers as well as PCs and Notebooks.","enhanced":true,"tile_background":"light","icon":"volumio.png","sha":"783917750ea7fe4b65dcdbc49c78cc2237e6bc4d"},{"appid":"095afe286edc44dd8241e7a33138bc6d","name":"VuPlus","website":"http://vuplus.com","license":"commercial","description":"The Vu+ (pronounced VuPlus), is a series of Linux-powered DVB satellite, terrestrial digital television receivers (set-top box)","enhanced":true,"tile_background":"light","icon":"vuplus.png","sha":"4056dee499ba11fa2777eec7f4ef4a9c2195bf0b"},{"appid":"9dc07af7d1d88c183c6ae42c903650ab19ada2bb","name":"Wallabag","website":"https://www.wallabag.org/en","license":"MIT License","description":"Wallabag is a self hostable application for saving web pages: Save and classify articles. Read them later. Freely.","enhanced":false,"tile_background":"dark","icon":"wallabag.png","sha":"4a3d8b688ab297a58f82d6862cae05cee2fed5d5"},{"appid":"dc115cfaac280c4b97289484356c21428af565be","name":"WaniKani","website":"https://www.wanikani.com","license":"Proprietary","description":"WaniKani is a Japanese radicals, kanji, and vocabulary learning web app that uses mnemonics and SRS to make kanji learning simple.","enhanced":true,"tile_background":"light","icon":"wanikani.png","sha":"e95bb933bbabf50697b0b22835af87948d20bb77"},{"appid":"785ad2ec16dcf34b4fc83b025b930818c6372567","name":"Watcher","website":"https://github.com/nosmokingbandit/Watcher3","license":"Apache License 2.0","description":"Watcher is an automated movie NZB & Torrent searcher and snatcher. You can add a list of wanted movies and Watcher will automatically send the NZB or Torrent to your download client.","enhanced":false,"tile_background":"dark","icon":"watcher.png","sha":"43bd3c64e5fb58c37b74fefbdd3609af24a498dc"},{"appid":"b9726e44ef09db12f6e010af8977d55dc971b841","name":"Webmin","website":"http://www.webmin.com","license":"BSD 3-Clause \"New\" or \"Revised\" License","description":"Webmin is a web-based system configuration tool for Unix-like systems, although recent versions can also be installed and run on Windows.","enhanced":false,"tile_background":"dark","icon":"webmin.svg","sha":"c84edde77d20e5ee345d1b66cebc50f3dde6d553"},{"appid":"11915e3ab4fbb44453d956eb4d5163cad8050d6b","name":"WebTools","website":"https://github.com/ukdtom/WebTools.bundle","license":"Mozilla Public License 2.0","description":"WebTools is a collection of tools for Plex Media Server. Like the Unsupported AppStore (UAS)","enhanced":false,"tile_background":"dark","icon":"webtools.png","sha":"93905afd4b4e92119e77a7529f2055c0bf596c80"},{"appid":"b4021dd275593e7b96610fc7b6300af8cdca8765","name":"Wekan","website":"https://wekan.github.io","license":"MIT License","description":"Wekan is an open source, collaborative kanban board application.","enhanced":false,"tile_background":"dark","icon":"wekan.png","sha":"3ea2b407834d596c5d7bb14978fee941d69e3bb7"},{"appid":"9b4e87ab376cf2327facda32fa98617676dfccd9","name":"Wetty","website":"https://github.com/krishnasrinivas/wetty","license":"MIT License","description":"WeTTy = Web + TTy. Terminal web app in browser over http/https. (Ajaxterm/Anyterm alternative, but much better). WeTTy is an alternative to ajaxterm and anyterm but much better than them because WeTTy uses xterm.js which is a full fledged implementation of terminal emulation written entirely in JavaScript. WeTTy uses websockets rather then Ajax and hence better response time.","enhanced":false,"tile_background":"dark","icon":"wetty.png","sha":"d45dfa11f9f0908b9710f1d064ff5bd7522d2371"},{"appid":"daec766cafab4e5297d8c2359810b3dfcc7626fd","name":"Wg Gen Web","website":"https://github.com/vx3r/wg-gen-web","license":"Do What The F*ck You Want To Public License","description":"Simple Web based configuration generator for WireGuard","enhanced":false,"tile_background":"dark","icon":"wggenweb.png","sha":"e0011d6b528b8112d1f56bf25d5af9c30bee60a8"},{"appid":"170b7d7a0634e8d51a768a113f00d7601fa9b182","name":"Whoogle","website":"https://github.com/benbusby/whoogle-search","license":"MIT License","description":"A self-hosted, ad-free, privacy-respecting metasearch engine. Get Google search results, but without any ads, javascript, AMP links, cookies, or IP address tracking.","enhanced":false,"tile_background":"light","icon":"whoogle.png","sha":"48d235a73617e03e1484cbdbd4ea835951b1525f"},{"appid":"cf796459bad1da470debfed16506e47aab347dbe","name":"Wiki.js","website":"https://wiki.js.org","license":"GNU Affero General Public License v3.0","description":"Wiki.js | A modern, lightweight and powerful wiki app built on Node.js","enhanced":false,"tile_background":"light","icon":"wikijs.png","sha":"ca1c48b5f5b7e4059de256e9a710e8bcc573316b"},{"appid":"9d3283ea8d3bb69f327af06870657a63ab3bbf6d","name":"Windows Admin Center","website":"https://www.microsoft.com/en-us/windows-server/windows-admin-center","license":"Proprietary","description":"Windows Admin Center is a locally deployed, browser-based app for managing Windows servers, clusters, hyper-converged infrastructure, as well as Windows 10 PCs. It is a free product and is ready to use in production.","enhanced":false,"tile_background":"dark","icon":"windowsadmincenter.png","sha":"da5a8a92c4ce13e10a4708c4d273287e6fd81204"},{"appid":"afef2217e82ee20638490bb102605f6e09789093","name":"WireGuard","website":"https://www.wireguard.com","license":"CNRI Python Open Source GPL Compatible License Agreement","description":"WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.","enhanced":false,"tile_background":"dark","icon":"wireguard.png","sha":"624c151835424392cdb6fb99c7a4f6d6da63e042"},{"appid":"ac894a3a9399f135f6eb87f27fb742c71189cc86","name":"WLED","website":"https://wled.me","license":"MIT License","description":"A fast and feature-rich implementation of an ESP8266/ESP32 webserver to control NeoPixel (WS2812B, WS2811, SK6812) LEDs or also SPI based chipsets like the WS2801 and APA102! More Info see wled.me","enhanced":false,"tile_background":"dark","icon":"wled.png","sha":"aea26dffdc056b5da965d68354540f4581c9f3f1"},{"appid":"b1909932aac1c5510c044de0cb8c0f3ef049a250","name":"WordPress","website":"https://wordpress.org","license":"GNU General Public License v2.0 only","description":"WordPress is open source software you can use to create a beautiful website, blog, or app.","enhanced":false,"tile_background":"dark","icon":"wordpress.svg","sha":"0ef26137a5179a972debc881a49dae7fd9c0f61d"},{"appid":"d1d0f952ebdcb6b8918bdd7ddbf55793dca5fa93","name":"Xen-Orchestra","website":"https://xen-orchestra.com","license":"GNU Affero General Public License v3.0","description":"XO is a web interface to visualize and administer your XenServer (or XAPI enabled) hosts.","enhanced":false,"tile_background":"dark","icon":"xenorchestra.png","sha":"41af3ba5cb66d08c7bc8daf5f29a03db8a85eee8"},{"appid":"8304785b9937bf6d4e04c2d7aaa786b3577fb10c","name":"Xigmanas","website":"https://www.xigmanas.com","license":"BSD 2-Clause \"Simplified\" License","description":"XigmaNAS is an Open Source Storage NAS (Network-Attached Storage) distribution based on FreeBSD.","enhanced":false,"tile_background":"dark","icon":"xigmanas.png","sha":"e03fe9f8ae31151ad207c9c90656fe88d2d4e922"},{"appid":"cb6a8a853393228efd2b7b1963f50d56b7f0d818","name":"xTeVe","website":"https://xteve.de","license":"MIT License","description":"M3U Proxy for Plex DVR and Emby Live TV","enhanced":false,"tile_background":"dark","icon":"xteve.png","sha":"138435716a4fb9baabafae918700a22e6dd15223"},{"appid":"991894ca059d0faa7400a50c0aefb30d252346e7","name":"XWiki","website":"https://www.xwiki.org","license":"GNU Lesser General Public License v2.1 only","description":"Advanced Open Source Enterprise Wiki","enhanced":false,"tile_background":"light","icon":"xwiki.png","sha":"bd5de482464c2685043af7864125c8d0492c78cb"},{"appid":"56eb3a3ec734e5a66d4f1746ef58961d266fdabe","name":"Yacht","website":"https://github.com/SelfhostedPro/Yacht","license":"MIT License","description":"Yacht is a container management UI with a focus on templates and 1-click deployments.","enhanced":false,"tile_background":"light","icon":"yacht.svg","sha":"f667eb2cfa0d2f838bdb1f2fea234d1c535572b0"},{"appid":"d5dc44619c761e1012648613619006016a669ee7","name":"YNAB","website":"https://www.youneedabudget.com","license":"Commercial","description":"You Need a Budget (YNAB) (pronounced Why-nab) is an multi-platform personal budgeting program based on the envelope method.","enhanced":false,"tile_background":"light","icon":"ynab.png","sha":"2b1159c2e65d57a52490be822e143cfe0f34d711"},{"appid":"f23460c5b2dba5711733151081cd82ecc9106964","name":"YOURLS","website":"https://yourls.org","license":"MIT License","description":"YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener, on your server. You'll have full control over your data, detailed stats, analytics, plugins, and more. It's free and open-source.","enhanced":false,"tile_background":"dark","icon":"yourls.svg","sha":"8d1505ef8b9031ef71875ab4d92518afad8b9059"},{"appid":"6c87650cad54af69bf838f03b190280f7537c03d","name":"Your Spotify","website":"https://github.com/Yooooomi/your_spotify","license":"MIT License","description":"Your Spotify is a self-hosted application that tracks what you listen and offers you a dashboard to explore statistics about it! It's composed of a web server which polls the Spotify API every now and then and a web application on which you can explore your statistics.","enhanced":false,"tile_background":"light","icon":"yourspotify.svg","sha":"d0a65a3880fcdd9604dce7b44b830a9b0f998820"},{"appid":"6e4a451c7c654ae2bc5c75689e690966a5fd29ee","name":"youtube-dl","website":"https://youtube-dl.org","license":"The Unlicense","description":"youtube-dl is a command-line program to download videos from YouTube.com and a few more sites","enhanced":false,"tile_background":"light","icon":"youtubedl.png","sha":"9b7b0b66ccc04d885f30e82f55b43e1b7270da29"},{"appid":"19132c3f80c33d38bbe4c51828f05b081e9f66cd","name":"Zabbix","website":"https://www.zabbix.com","license":"GNU General Public License v2.0 only","description":"Zabbix is a mature and effortless enterprise-class open source monitoring solution for network monitoring and application monitoring of millions of metrics.","enhanced":false,"tile_background":"dark","icon":"zabbix.svg","sha":"8cc7d92d5c9026bccbc661617721a9dc91712363"},{"appid":"4caf560ca51d18d1be6dd09a48fafa883c293462","name":"Zammad","website":"https://zammad.org","license":"GNU Affero General Public License v3.0","description":"Zammad is a web-based, open source user support/ticketing solution.","enhanced":false,"tile_background":"dark","icon":"zammad.svg","sha":"02eee9b18fed9e879f394d8cd540d1f9720c95a1"},{"appid":"563c45bed29a24c1a1a2981af1a93bdeb692713b","name":"ZNC","website":"https://wiki.znc.in/ZNC","license":"Apache License","description":"IRC bouncer","enhanced":false,"tile_background":"dark","icon":"znc.png","sha":"52a897d4d595ddc9c74b2b77a7fa9236c4525725"},{"appid":"e7ebe523e3dcf616e0553e60747f415d47a6fe22","name":"ZoneMinder","website":"https://zoneminder.com","license":"GNU General Public License v2.0 only","description":"A full-featured, open source, state-of-the-art video surveillance software system.\r\n\r\nMonitor your home, office, or wherever you want. Using off the shelf hardware with any camera, you can design a system as large or as small as you need.","enhanced":false,"tile_background":"dark","icon":"zoneminder.png","sha":"8e391cdcba5f644250acca8831e23f462d457624"},{"appid":"d17139efd0d8e0cba9bf8380c9818838911dfe0f","name":"Zulip","website":"https://zulipchat.com","license":"Apache License 2.0","description":"Powerful open source team chat. Zulip combines the immediacy of real-time chat with an email threading model. With Zulip, you can catch up on important conversations while ignoring irrelevant ones.","enhanced":false,"tile_background":"light","icon":"zulip.png","sha":"3a0df46433fcc2077745b553566c7064958c5092"}]} \ No newline at end of file diff --git a/webpack.mix.js b/webpack.mix.js index 5adaf892..b15a6df2 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -14,7 +14,7 @@ const mix = require("laravel-mix"); mix .babel( [ - // 'resources/assets/js/jquery-ui.min.js', + "resources/assets/js/jquery-ui.min.js", "resources/assets/js/huebee.js", "resources/assets/js/app.js", "resources/assets/js/keyBindings.js", diff --git a/yarn.lock b/yarn.lock index 636291ad..7c87565b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,7 +22,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz" integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== -"@babel/core@^7.15.8": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.15.8", "@babel/core@^7.4.0-0": version "7.20.2" resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz" integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== @@ -964,7 +964,16 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -991,7 +1000,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -1017,7 +1026,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1442,7 +1451,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== @@ -1466,7 +1475,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1476,7 +1485,17 @@ ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.8.0: +ajv@^8.0.0: + version "8.11.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" + integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^8.8.0, ajv@^8.8.2: version "8.11.2" resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== @@ -1523,16 +1542,16 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-includes@^3.1.4: version "3.1.6" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" @@ -1648,7 +1667,17 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: +bn.js@^4.0.0: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^4.1.0: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== @@ -1777,7 +1806,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.21.3, browserslist@^4.21.4: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.21.3, browserslist@^4.21.4, "browserslist@>= 4.21.0": version "4.21.4" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -1879,7 +1908,7 @@ charenc@0.0.2: resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2, chokidar@^3.5.3: +chokidar@^3.5.2, chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0": version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -1967,16 +1996,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colord@^2.9.1: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" @@ -1987,7 +2016,12 @@ colorette@^2.0.10, colorette@^2.0.14: resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -commander@^2.20.0, commander@^2.9.0: +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^2.9.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -2282,7 +2316,7 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -debug@2.6.9, debug@^2.6.9: +debug@^2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2303,6 +2337,13 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: dependencies: ms "2.1.2" +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" @@ -2328,16 +2369,16 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" @@ -2424,7 +2465,14 @@ domhandler@^3.0.0: dependencies: domelementtype "^2.0.1" -domhandler@^4.2.0, domhandler@^4.3.1: +domhandler@^4.2.0: + version "4.3.1" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^4.3.1: version "4.3.1" resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== @@ -2622,7 +2670,7 @@ eslint-module-utils@^2.7.3: dependencies: debug "^3.2.7" -eslint-plugin-import@^2.26.0: +eslint-plugin-import@^2.25.2, eslint-plugin-import@^2.26.0: version "2.26.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== @@ -2648,14 +2696,6 @@ eslint-plugin-prettier@^4.2.1: dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-scope@^7.1.1: version "7.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" @@ -2664,6 +2704,14 @@ eslint-scope@^7.1.1: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-utils@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" @@ -2681,7 +2729,7 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.28.0: +"eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^7.32.0 || ^8.2.0", eslint@^8.28.0, eslint@>=5, eslint@>=7.0.0, eslint@>=7.28.0: version "8.28.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz" integrity sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ== @@ -2754,7 +2802,12 @@ estraverse@^4.1.1: resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: +estraverse@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estraverse@^5.2.0: version "5.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -3270,6 +3323,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -3281,16 +3344,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -3348,7 +3401,7 @@ ignore@^5.1.1, ignore@^5.2.0: resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -imagemin@^7.0.1: +"imagemin@^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", imagemin@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz" integrity sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w== @@ -3402,7 +3455,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3431,16 +3484,16 @@ interpret@^2.2.0: resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" @@ -3620,10 +3673,10 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jquery@^3.6.1: - version "3.6.1" - resolved "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz" - integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw== +jquery@^3.6.3: + version "3.6.3" + resolved "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz" + integrity sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg== js-sdsl@^4.1.4: version "4.2.0" @@ -3787,7 +3840,16 @@ loader-runner@^4.2.0: resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@^1.0.2: + version "1.4.2" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^1.1.0: version "1.4.2" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== @@ -3936,7 +3998,7 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -3989,16 +4051,16 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +ms@^2.1.1, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -4638,7 +4700,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.2.15: +"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3.11, postcss@>=8.0.9: version "8.4.19" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz" integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== @@ -4659,7 +4721,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.8.1: +prettier@^2.8.1, prettier@>=2.0.0: version "2.8.1" resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz" integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== @@ -4699,11 +4761,6 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - punycode@^1.2.4: version "1.4.1" resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" @@ -4714,6 +4771,11 @@ punycode@^2.1.0: resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + qs@6.11.0: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" @@ -4779,7 +4841,16 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.3.3, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.6.0: +readable-stream@^3.0.6: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -4947,15 +5018,20 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex-test@^1.0.0: version "1.0.0" @@ -4966,7 +5042,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -4979,7 +5055,7 @@ sass-loader@13.*: klona "^2.0.4" neo-async "^2.6.2" -sass@^1.56.1: +sass@^1.3.0, sass@^1.56.1: version "1.56.1" resolved "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz" integrity sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ== @@ -4997,7 +5073,25 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== @@ -5033,7 +5127,22 @@ selfsigned@^2.1.1: dependencies: node-forge "^1" -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^6.1.1: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^6.1.2: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -5174,7 +5283,7 @@ source-list-map@^2.0.0: resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: +source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0": version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -5220,16 +5329,16 @@ stable@^0.1.8: resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + std-env@^3.0.1: version "3.3.1" resolved "https://registry.npmjs.org/std-env/-/std-env-3.3.1.tgz" @@ -5254,6 +5363,20 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -5281,20 +5404,6 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.20.4" -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -5524,7 +5633,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -5557,13 +5666,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@0.10.3: - version "0.10.3" - resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== - dependencies: - inherits "2.0.1" - util@^0.11.0: version "0.11.1" resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz" @@ -5571,6 +5673,13 @@ util@^0.11.0: dependencies: inherits "2.0.3" +util@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== + dependencies: + inherits "2.0.1" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" @@ -5614,7 +5723,7 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -webpack-cli@^4.9.1: +webpack-cli@^4.9.1, webpack-cli@4.x.x: version "4.10.0" resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz" integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== @@ -5707,7 +5816,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.60.0: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.27.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.60.0, webpack@>=2, "webpack@3 || 4 || 5", "webpack@4.x.x || 5.x.x": version "5.75.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz" integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== @@ -5747,7 +5856,7 @@ webpackbar@^5.0.0-3: pretty-time "^1.1.0" std-env "^3.0.1" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==