Files
CTFd/CTFd/themes/admin/static/js/pages/challenge.min.js
Kevin Chung 9264e96428 Mark 3.1.0 (#1634)
# 3.1.0 / 2020-09-08

**General**

- Loosen team password confirmation in team settings to also accept the team captain's password to make it easier to change the team password
- Adds the ability to add custom user and team fields for registration/profile settings.
- Improve Notifications pubsub events system to use a subscriber per server instead of a subscriber per browser. This should improve the reliability of CTFd at higher load and make it easier to deploy the Notifications system

**Admin Panel**

- Add a comments functionality for admins to discuss challenges, users, teams, pages
- Adds a legal section in Configs where users can add a terms of service and privacy policy
- Add a Custom Fields section in Configs where admins can add/edit custom user/team fields
- Move user graphs into a modal for Admin Panel

**API**

- Add `/api/v1/comments` to manipulate and create comments

**Themes**

- Make scoreboard caching only cache the score table instead of the entire page. This is done by caching the specific template section. Refer to #1586, specifically the changes in `scoreboard.html`.
- Add rel=noopener to external links to prevent tab napping attacks
- Change the registration page to reference links to Terms of Service and Privacy Policy if specified in configuration

**Miscellaneous**

- Make team settings modal larger in the core theme
- Update tests in Github Actions to properly test under MySQL and Postgres
- Make gevent default in serve.py and add a `--disable-gevent` switch in serve.py
- Add `tenacity` library for retrying logic
- Add `pytest-sugar` for slightly prettier pytest output
- Add a `listen()` method to `CTFd.utils.events.EventManager` and `CTFd.utils.events.RedisEventManager`.
  - This method should implement subscription for a CTFd worker to whatever underlying notification system there is. This should be implemented with gevent or a background thread.
  - The `subscribe()` method (which used to implement the functionality of the new `listen()` function) now only handles passing notifications from CTFd to the browser. This should also be implemented with gevent or a background thread.
2020-09-08 00:08:35 -04:00

1 line
80 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

!function(d){function e(e){for(var t,o,n=e[0],a=e[1],s=e[2],i=0,l=[];i<n.length;i++)o=n[i],c[o]&&l.push(c[o][0]),c[o]=0;for(t in a)Object.prototype.hasOwnProperty.call(a,t)&&(d[t]=a[t]);for(m&&m(e);l.length;)l.shift()();return u.push.apply(u,s||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var o=u[t],n=!0,a=1;a<o.length;a++){var s=o[a];0!==c[s]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=o[0]))}return e}var o={},c={4:0,8:0},u=[];function i(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return d[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=d,i.c=o,i.d=function(e,t,o){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(o,n,function(e){return t[e]}.bind(null,n));return o},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/themes/admin/static/js";var t=window.webpackJsonp=window.webpackJsonp||[],n=t.push.bind(t);t.push=e,t=t.slice();for(var a=0;a<t.length;a++)e(t[a]);var m=n;u.push(["./CTFd/themes/admin/assets/js/pages/challenge.js",0,1,2]),r()}({"./CTFd/themes/admin/assets/js/challenges/files.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.addFile=function(e){e.preventDefault();var t=e.target,o={challenge:window.CHALLENGE_ID,type:"challenge"};s.default.files.upload(t,o,function(e){setTimeout(function(){window.location.reload()},700)})},t.deleteFile=function(e){var t=(0,n.default)(this).attr("file-id"),o=(0,n.default)(this).parent().parent();(0,i.ezQuery)({title:"Delete Files",body:"Are you sure you want to delete this file?",success:function(){a.default.fetch("/api/v1/files/"+t,{method:"DELETE"}).then(function(e){return e.json()}).then(function(e){e.success&&o.remove()})}})};var n=l(o("./node_modules/jquery/dist/jquery.js")),a=l(o("./CTFd/themes/core/assets/js/CTFd.js")),s=l(o("./CTFd/themes/core/assets/js/helpers.js")),i=o("./CTFd/themes/core/assets/js/ezq.js");function l(e){return e&&e.__esModule?e:{default:e}}},"./CTFd/themes/admin/assets/js/challenges/flags.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.deleteFlag=function(e){e.preventDefault();var t=(0,s.default)(this).attr("flag-id"),o=(0,s.default)(this).parent().parent();(0,n.ezQuery)({title:"Delete Flag",body:"Are you sure you want to delete this flag?",success:function(){i.default.fetch("/api/v1/flags/"+t,{method:"DELETE"}).then(function(e){return e.json()}).then(function(e){e.success&&o.remove()})}})},t.addFlagModal=function(e){s.default.get(i.default.config.urlRoot+"/api/v1/flags/types",function(e){var t=e.data,o=(0,s.default)("#flags-create-select");o.empty();var n=(0,s.default)("<option> -- </option>");for(var a in o.append(n),t)t.hasOwnProperty(a)&&(n=(0,s.default)("<option value='{0}'>{1}</option>".format(a,t[a].name)),o.append(n));(0,s.default)("#flag-edit-modal").modal()}),(0,s.default)("#flag-edit-modal form").submit(function(e){e.preventDefault();var t=(0,s.default)(this).serializeJSON(!0);t.challenge=window.CHALLENGE_ID,i.default.fetch("/api/v1/flags",{method:"POST",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)}).then(function(e){return e.json()}).then(function(e){window.location.reload()})}),(0,s.default)("#flag-edit-modal").modal()},t.editFlagModal=function(e){e.preventDefault();var n=(0,s.default)(this).attr("flag-id"),a=(0,s.default)(this).parent().parent();s.default.get(i.default.config.urlRoot+"/api/v1/flags/"+n,function(e){var o=e.data;s.default.get(i.default.config.urlRoot+o.templates.update,function(e){(0,s.default)("#edit-flags form").empty(),(0,s.default)("#edit-flags form").off();var t=l.default.compile(e);(0,s.default)("#edit-flags form").append(t.render(o)),(0,s.default)("#edit-flags form").submit(function(e){e.preventDefault();var t=(0,s.default)("#edit-flags form").serializeJSON();i.default.fetch("/api/v1/flags/"+n,{method:"PATCH",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)}).then(function(e){return e.json()}).then(function(e){e.success&&((0,s.default)(a).find(".flag-content").text(e.data.content),(0,s.default)("#edit-flags").modal("toggle"))})}),(0,s.default)("#edit-flags").modal()})})},t.flagTypeSelect=function(e){e.preventDefault();var t=(0,s.default)(this).find("option:selected").text();s.default.get(i.default.config.urlRoot+"/api/v1/flags/types/"+t,function(e){var t=e.data;s.default.get(i.default.config.urlRoot+t.templates.create,function(e){var t=l.default.compile(e);(0,s.default)("#create-keys-entry-div").html(t.render()),(0,s.default)("#create-keys-button-div").show()})})};var s=a(o("./node_modules/jquery/dist/jquery.js")),i=a(o("./CTFd/themes/core/assets/js/CTFd.js")),l=a(o("./node_modules/nunjucks/browser/nunjucks.js")),n=o("./CTFd/themes/core/assets/js/ezq.js");function a(e){return e&&e.__esModule?e:{default:e}}},"./CTFd/themes/admin/assets/js/challenges/hints.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.showHintModal=function(e){e.preventDefault(),(0,a.default)("#hint-edit-modal form").find("input, textarea").val("").trigger("change"),(0,a.default)("#hint-edit-form textarea").each(function(e,t){t.hasOwnProperty("codemirror")&&t.codemirror.refresh()}),(0,a.default)("#hint-edit-modal").modal()},t.showEditHintModal=function(e){e.preventDefault();var t=(0,a.default)(this).attr("hint-id");s.default.fetch("/api/v1/hints/"+t+"?preview=true",{method:"GET",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"}}).then(function(e){return e.json()}).then(function(e){e.success&&((0,a.default)("#hint-edit-form input[name=content],textarea[name=content]").val(e.data.content).trigger("change"),(0,a.default)("#hint-edit-modal").on("shown.bs.modal",function(){(0,a.default)("#hint-edit-form textarea").each(function(e,t){t.hasOwnProperty("codemirror")&&t.codemirror.refresh()})}).on("hide.bs.modal",function(){(0,a.default)("#hint-edit-form textarea").each(function(e,t){(0,a.default)(t).val("").trigger("change"),t.hasOwnProperty("codemirror")&&t.codemirror.refresh()})}),(0,a.default)("#hint-edit-form input[name=cost]").val(e.data.cost),(0,a.default)("#hint-edit-form input[name=id]").val(e.data.id),(0,a.default)("#hint-edit-modal").modal())})},t.deleteHint=function(e){e.preventDefault();var t=(0,a.default)(this).attr("hint-id"),o=(0,a.default)(this).parent().parent();(0,n.ezQuery)({title:"Delete Hint",body:"Are you sure you want to delete this hint?",success:function(){s.default.fetch("/api/v1/hints/"+t,{method:"DELETE"}).then(function(e){return e.json()}).then(function(e){e.success&&o.remove()})}})},t.editHint=function(e){e.preventDefault();var t=(0,a.default)(this).serializeJSON(!0);t.challenge=window.CHALLENGE_ID;var o="POST",n="/api/v1/hints";t.id&&(o="PATCH",n="/api/v1/hints/"+t.id);s.default.fetch(n,{method:o,credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)}).then(function(e){return e.json()}).then(function(e){e.success&&window.location.reload()})};var a=i(o("./node_modules/jquery/dist/jquery.js")),s=i(o("./CTFd/themes/core/assets/js/CTFd.js")),n=o("./CTFd/themes/core/assets/js/ezq.js");function i(e){return e&&e.__esModule?e:{default:e}}},"./CTFd/themes/admin/assets/js/challenges/requirements.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.addRequirement=function(e){e.preventDefault();var t=(0,a.default)("#prerequisite-add-form").serializeJSON();if(!t.prerequisite)return;window.CHALLENGE_REQUIREMENTS.prerequisites.push(parseInt(t.prerequisite));var o={requirements:window.CHALLENGE_REQUIREMENTS};s.default.fetch("/api/v1/challenges/"+window.CHALLENGE_ID,{method:"PATCH",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(o)}).then(function(e){return e.json()}).then(function(e){e.success&&window.location.reload()})},t.deleteRequirement=function(e){var t=(0,a.default)(this).attr("challenge-id"),o=(0,a.default)(this).parent().parent();window.CHALLENGE_REQUIREMENTS.prerequisites.pop(t);var n={requirements:window.CHALLENGE_REQUIREMENTS};s.default.fetch("/api/v1/challenges/"+window.CHALLENGE_ID,{method:"PATCH",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(n)}).then(function(e){return e.json()}).then(function(e){e.success&&o.remove()})};var a=n(o("./node_modules/jquery/dist/jquery.js")),s=n(o("./CTFd/themes/core/assets/js/CTFd.js"));function n(e){return e&&e.__esModule?e:{default:e}}},"./CTFd/themes/admin/assets/js/challenges/tags.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.deleteTag=i,t.addTag=function(e){if(13!=e.keyCode)return;var t=(0,n.default)(this),o={value:t.val(),challenge:window.CHALLENGE_ID};a.default.api.post_tag_list({},o).then(function(e){if(e.success){var t=(0,n.default)("<span class='badge badge-primary mx-1 challenge-tag'><span>{0}</span><a class='btn-fa delete-tag' tag-id='{1}'>&times;</a></span>".format(e.data.value,e.data.id));(0,n.default)("#challenge-tags").append(t),t.click(i)}}),t.val("")};var n=s(o("./node_modules/jquery/dist/jquery.js")),a=s(o("./CTFd/themes/core/assets/js/CTFd.js"));function s(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=(0,n.default)(this),o=t.attr("tag-id");a.default.api.delete_tag({tagId:o}).then(function(e){e.success&&t.parent().remove()})}},"./CTFd/themes/admin/assets/js/pages/challenge.js":function(e,t,o){o("./CTFd/themes/admin/assets/js/pages/main.js");var n=o("./CTFd/themes/core/assets/js/utils.js"),i=j(o("./node_modules/jquery/dist/jquery.js"));o("./node_modules/bootstrap/js/dist/tab.js");var l=j(o("./CTFd/themes/core/assets/js/CTFd.js")),a=o("./CTFd/themes/core/assets/js/ezq.js"),d=j(o("./CTFd/themes/core/assets/js/helpers.js")),s=o("./CTFd/themes/admin/assets/js/challenges/files.js"),r=o("./CTFd/themes/admin/assets/js/challenges/tags.js"),c=o("./CTFd/themes/admin/assets/js/challenges/requirements.js"),u=o("./CTFd/themes/admin/assets/js/styles.js"),m=j(o("./node_modules/vue/dist/vue.esm.browser.js")),p=j(o("./CTFd/themes/admin/assets/js/components/comments/CommentBox.vue")),f=o("./CTFd/themes/admin/assets/js/challenges/hints.js"),h=o("./CTFd/themes/admin/assets/js/challenges/flags.js");function j(e){return e&&e.__esModule?e:{default:e}}function g(e){l.default.api.get_hint({hintId:e,preview:!0}).then(function(e){e.data.content&&function(e){(0,a.ezAlert)({title:"Hint",body:e.html,button:"Got it!"})}(e.data)})}function _(e,t){var o=e.data,n=(0,i.default)("#result-message"),a=(0,i.default)("#result-notification"),s=(0,i.default)("#submission-input");a.removeClass(),n.text(o.message),"authentication_required"!==o.status?("incorrect"===o.status?(a.addClass("alert alert-danger alert-dismissable text-center"),a.slideDown(),s.removeClass("correct"),s.addClass("wrong"),setTimeout(function(){s.removeClass("wrong")},3e3)):"correct"===o.status?(a.addClass("alert alert-success alert-dismissable text-center"),a.slideDown(),(0,i.default)(".challenge-solves").text(parseInt((0,i.default)(".challenge-solves").text().split(" ")[0])+1+" Solves"),s.val(""),s.removeClass("wrong"),s.addClass("correct")):"already_solved"===o.status?(a.addClass("alert alert-info alert-dismissable text-center"),a.slideDown(),s.addClass("correct")):"paused"===o.status?(a.addClass("alert alert-warning alert-dismissable text-center"),a.slideDown()):"ratelimited"===o.status&&(a.addClass("alert alert-warning alert-dismissable text-center"),a.slideDown(),s.addClass("too-fast"),setTimeout(function(){s.removeClass("too-fast")},3e3)),setTimeout(function(){(0,i.default)(".alert").slideUp(),(0,i.default)("#challenge-submit").removeClass("disabled-button"),(0,i.default)("#challenge-submit").prop("disabled",!1)},3e3),t&&t(o)):window.location=l.default.config.urlRoot+"/login?next="+l.default.config.urlRoot+window.location.pathname+window.location.hash}function v(t){l.default._internal.challenge={},i.default.getScript(l.default.config.urlRoot+t.scripts.view,function(){var e=t.create;(0,i.default)("#create-chal-entry-div").html(e),(0,u.bindMarkdownEditors)(),i.default.getScript(l.default.config.urlRoot+t.scripts.create,function(){(0,i.default)("#create-chal-entry-div form").submit(function(e){e.preventDefault();var t=(0,i.default)("#create-chal-entry-div form").serializeJSON();l.default.fetch("/api/v1/challenges",{method:"POST",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)}).then(function(e){return e.json()}).then(function(e){e.success&&((0,i.default)("#challenge-create-options #challenge_id").val(e.data.id),(0,i.default)("#challenge-create-options").modal())})})})})}function y(a){a.preventDefault();var s=(0,i.default)(a.target).serializeJSON(!0),o={challenge_id:s.challenge_id,content:s.flag||"",type:s.flag_type,data:s.flag_data?s.flag_data:""};Promise.all([new Promise(function(t,e){0!=o.content.length?l.default.fetch("/api/v1/flags",{method:"POST",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(o)}).then(function(e){t(e.json())}):t()}),new Promise(function(e,t){var o=a.target,n={challenge:s.challenge_id,type:"challenge"};(0,i.default)(o.elements.file).val()&&d.default.files.upload(o,n),e()})]).then(function(e){l.default.fetch("/api/v1/challenges/"+s.challenge_id,{method:"PATCH",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({state:s.state})}).then(function(e){return e.json()}).then(function(e){e.success&&setTimeout(function(){window.location=l.default.config.urlRoot+"/admin/challenges/"+s.challenge_id},700)})})}(0,i.default)(function(){(0,i.default)(".preview-challenge").click(function(e){l.default._internal.challenge={},i.default.get(l.default.config.urlRoot+"/api/v1/challenges/"+window.CHALLENGE_ID,function(t){var o=t.data;o.solves=null,i.default.getScript(l.default.config.urlRoot+o.type_data.scripts.view,function(){var e=l.default._internal.challenge;e.data=t.data,(0,i.default)("#challenge-window").empty(),e.preRender(),(0,i.default)("#challenge-window").append(o.view),(0,i.default)("#challenge-window #challenge-input").addClass("form-control"),(0,i.default)("#challenge-window #challenge-submit").addClass("btn btn-md btn-outline-secondary float-right"),(0,i.default)(".challenge-solves").hide(),(0,i.default)(".nav-tabs a").click(function(e){e.preventDefault(),(0,i.default)(this).tab("show")}),(0,i.default)("#challenge-window").on("hide.bs.modal",function(e){(0,i.default)("#challenge-input").removeClass("wrong"),(0,i.default)("#challenge-input").removeClass("correct"),(0,i.default)("#incorrect-key").slideUp(),(0,i.default)("#correct-key").slideUp(),(0,i.default)("#already-solved").slideUp(),(0,i.default)("#too-fast").slideUp()}),(0,i.default)(".load-hint").on("click",function(e){g((0,i.default)(this).data("hint-id"))}),(0,i.default)("#challenge-submit").click(function(e){e.preventDefault(),(0,i.default)("#challenge-submit").addClass("disabled-button"),(0,i.default)("#challenge-submit").prop("disabled",!0),l.default._internal.challenge.submit(!0).then(_)}),(0,i.default)("#challenge-input").keyup(function(e){13==e.keyCode&&(0,i.default)("#challenge-submit").click()}),e.postRender(),window.location.replace(window.location.href.split("#")[0]+"#preview"),(0,i.default)("#challenge-window").modal()})})}),(0,i.default)(".delete-challenge").click(function(e){(0,a.ezQuery)({title:"Delete Challenge",body:"Are you sure you want to delete {0}".format("<strong>"+(0,n.htmlEntities)(window.CHALLENGE_NAME)+"</strong>"),success:function(){l.default.fetch("/api/v1/challenges/"+window.CHALLENGE_ID,{method:"DELETE"}).then(function(e){return e.json()}).then(function(e){e.success&&(window.location=l.default.config.urlRoot+"/admin/challenges")})}})}),(0,i.default)("#challenge-update-container > form").submit(function(e){e.preventDefault();var o=(0,i.default)(e.target).serializeJSON(!0);l.default.fetch("/api/v1/challenges/"+window.CHALLENGE_ID+"/flags",{method:"GET",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"}}).then(function(e){return e.json()}).then(function(e){function t(){l.default.fetch("/api/v1/challenges/"+window.CHALLENGE_ID,{method:"PATCH",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(o)}).then(function(e){return e.json()}).then(function(e){if(e.success){switch((0,i.default)(".challenge-state").text(e.data.state),e.data.state){case"visible":(0,i.default)(".challenge-state").removeClass("badge-danger").addClass("badge-success");break;case"hidden":(0,i.default)(".challenge-state").removeClass("badge-success").addClass("badge-danger")}(0,a.ezToast)({title:"Success",body:"Your challenge has been updated!"})}})}0===e.data.length&&"visible"===o.state?(0,a.ezQuery)({title:"Missing Flags",body:"This challenge does not have any flags meaning it may be unsolveable. Are you sure you'd like to update this challenge?",success:t}):t()})}),(0,i.default)("#challenge-create-options form").submit(y),(0,i.default)("#tags-add-input").keyup(r.addTag),(0,i.default)(".delete-tag").click(r.deleteTag),(0,i.default)("#prerequisite-add-form").submit(c.addRequirement),(0,i.default)(".delete-requirement").click(c.deleteRequirement),(0,i.default)("#file-add-form").submit(s.addFile),(0,i.default)(".delete-file").click(s.deleteFile),(0,i.default)("#hint-add-button").click(f.showHintModal),(0,i.default)(".delete-hint").click(f.deleteHint),(0,i.default)(".edit-hint").click(f.showEditHintModal),(0,i.default)("#hint-edit-form").submit(f.editHint),(0,i.default)("#flag-add-button").click(h.addFlagModal),(0,i.default)(".delete-flag").click(h.deleteFlag),(0,i.default)("#flags-create-select").change(h.flagTypeSelect),(0,i.default)(".edit-flag").click(h.editFlagModal);var e=m.default.extend(p.default),t=document.createElement("div");document.querySelector("#comment-box").appendChild(t),new e({propsData:{type:"challenge",id:window.CHALLENGE_ID}}).$mount(t),i.default.get(l.default.config.urlRoot+"/api/v1/challenges/types",function(e){var t=e.data;v(t.standard),(0,i.default)("#create-chals-select input[name=type]").change(function(){v(t[this.value])})})})},"./CTFd/themes/admin/assets/js/pages/main.js":function(e,t,o){var n=m(o("./CTFd/themes/core/assets/js/CTFd.js")),a=m(o("./node_modules/jquery/dist/jquery.js")),s=m(o("./node_modules/moment/moment.js")),i=m(o("./node_modules/nunjucks/browser/nunjucks.js")),l=o("./node_modules/howler/dist/howler.js"),d=m(o("./CTFd/themes/core/assets/js/events.js")),r=m(o("./CTFd/themes/core/assets/js/times.js")),c=m(o("./CTFd/themes/admin/assets/js/styles.js")),u=m(o("./CTFd/themes/core/assets/js/helpers.js"));function m(e){return e&&e.__esModule?e:{default:e}}n.default.init(window.init),window.CTFd=n.default,window.helpers=u.default,window.$=a.default,window.Moment=s.default,window.nunjucks=i.default,window.Howl=l.Howl,(0,a.default)(function(){(0,c.default)(),(0,r.default)(),(0,d.default)(n.default.config.urlRoot)})},"./CTFd/themes/admin/assets/js/styles.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.showMediaLibrary=r,t.bindMarkdownEditors=c,t.default=void 0,o("./node_modules/bootstrap/dist/js/bootstrap.bundle.js");var n=o("./CTFd/themes/core/assets/js/utils.js"),a=d(o("./node_modules/jquery/dist/jquery.js")),s=d(o("./node_modules/easymde/src/js/easymde.js")),i=d(o("./node_modules/vue/dist/vue.esm.browser.js")),l=d(o("./CTFd/themes/admin/assets/js/components/files/MediaLibrary.vue"));function d(e){return e&&e.__esModule?e:{default:e}}function r(e){var t=i.default.extend(l.default),o=document.createElement("div");document.querySelector("main").appendChild(o);var n=new t({propsData:{editor:e}}).$mount(o);(0,a.default)("#media-modal").on("hidden.bs.modal",function(e){n.$destroy(),(0,a.default)("#media-modal").remove()}),(0,a.default)("#media-modal").modal()}function c(){(0,a.default)("textarea.markdown").each(function(e,t){if(!1===t.hasOwnProperty("mde")){var o=new s.default({autoDownloadFontAwesome:!1,toolbar:["bold","italic","heading","|","quote","unordered-list","ordered-list","|","link","image",{name:"media",action:function(e){r(e)},className:"fas fa-file-upload",title:"Media Library"},"|","preview","guide"],element:this,initialValue:(0,a.default)(this).val(),forceSync:!0,minHeight:"200px"});this.mde=o,this.codemirror=o.codemirror,(0,a.default)(this).on("change keyup paste",function(){o.codemirror.getDoc().setValue((0,a.default)(this).val()),o.codemirror.refresh()})}})}t.default=function(){(0,a.default)(":input").each(function(){(0,a.default)(this).data("initial",(0,a.default)(this).val())}),(0,a.default)(function(){(0,a.default)("tr[data-href], td[data-href]").click(function(){if(!getSelection().toString()){var e=(0,a.default)(this).attr("data-href");e&&(window.location=e)}return!1}),(0,a.default)("[data-checkbox]").click(function(e){(0,a.default)(e.target).is("input[type=checkbox]")?e.stopImmediatePropagation():((0,a.default)(this).find("input[type=checkbox]").click(),e.stopImmediatePropagation())}),(0,a.default)("[data-checkbox-all]").on("click change",function(e){var t=(0,a.default)(this).prop("checked"),o=(0,a.default)(this).index()+1;(0,a.default)(this).closest("table").find("tr td:nth-child(".concat(o,") input[type=checkbox]")).prop("checked",t),e.stopImmediatePropagation()}),(0,a.default)("tr[data-href] a, tr[data-href] button").click(function(e){(0,a.default)(this).attr("data-dismiss")||e.stopPropagation()}),(0,a.default)(".page-select").change(function(){var e=new URL(window.location);e.searchParams.set("page",this.value),window.location.href=e.toString()}),(0,a.default)('a[data-toggle="tab"]').on("shown.bs.tab",function(e){sessionStorage.setItem("activeTab",(0,a.default)(e.target).attr("href"))});var e=sessionStorage.getItem("activeTab");if(e){var t=(0,a.default)('.nav-tabs a[href="'.concat(e,'"], .nav-pills a[href="').concat(e,'"]'));t.length?t.tab("show"):sessionStorage.removeItem("activeTab")}c(),(0,n.makeSortableTables)(),(0,a.default)('[data-toggle="tooltip"]').tooltip()})}},"./CTFd/themes/core/assets/js/CTFd.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(o("./CTFd/themes/core/assets/js/fetch.js")),a=r(o("./CTFd/themes/core/assets/js/config.js")),s=o("./CTFd/themes/core/assets/js/api.js");o("./CTFd/themes/core/assets/js/patch.js");var i=r(o("./node_modules/markdown-it/index.js")),l=r(o("./node_modules/jquery/dist/jquery.js")),d=r(o("./CTFd/themes/core/assets/js/ezq.js"));function r(e){return e&&e.__esModule?e:{default:e}}function c(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var u=new s.API("/"),m={},p={ezq:d.default},f={$:l.default,markdown:function(e){var t=function(t){for(var e=1;e<arguments.length;e++)if(e%2){var o=null!=arguments[e]?arguments[e]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),n.forEach(function(e){c(t,e,o[e])})}else Object.defineProperties(t,Object.getOwnPropertyDescriptors(arguments[e]));return t}({},{html:!0,linkify:!0},{},e),o=(0,i.default)(t);return o.renderer.rules.link_open=function(e,t,o,n,a){return e[t].attrPush(["target","_blank"]),a.renderToken(e,t,o)},o}},h=!1,j={run:function(e){e(g)}};var g={init:function(e){h||(h=!0,a.default.urlRoot=e.urlRoot||a.default.urlRoot,a.default.csrfNonce=e.csrfNonce||a.default.csrfNonce,a.default.userMode=e.userMode||a.default.userMode,u.domain=a.default.urlRoot+"/api/v1",m.id=e.userId)},config:a.default,fetch:n.default,user:m,ui:p,api:u,lib:f,_internal:{},plugin:j},_=g;t.default=_},"./CTFd/themes/core/assets/js/api.js":function(e,t,o){var c=n(o("./CTFd/themes/core/assets/js/fetch.js")),l=n(o("./node_modules/q/q.js"));function n(e){return e&&e.__esModule?e:{default:e}}function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var s=function(){"use strict";function e(e){var t="object"===a(e)?e.domain:e;if(this.domain=t||"",0===this.domain.length)throw new Error("Domain parameter must be specified as a string.")}function i(o,n){return o.$queryParameters&&Object.keys(o.$queryParameters).forEach(function(e){var t=o.$queryParameters[e];n[e]=t}),n}return e.prototype.request=function(e,t,o,n,a,s,i,l){var d=s&&Object.keys(s).length?function(e){var t=[];for(var o in e)e.hasOwnProperty(o)&&t.push(encodeURIComponent(o)+"="+encodeURIComponent(e[o]));return t.join("&")}(s):null,r=t+(d?"?"+d:"");n&&!Object.keys(n).length&&(n=void 0),(0,c.default)(r,{method:e,headers:a,body:JSON.stringify(n)}).then(function(e){return e.json()}).then(function(e){l.resolve(e)}).catch(function(e){l.reject(e)})},e.prototype.post_award_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/awards",e,{},a,n,{},t),t.promise},e.prototype.delete_award=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/awards/{award_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{award_id}",e.awardId),void 0===e.awardId?t.reject(new Error("Missing required parameter: awardId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_award=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/awards/{award_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{award_id}",e.awardId),void 0===e.awardId?t.reject(new Error("Missing required parameter: awardId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_challenge_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/challenges",e,{},a,n,{},t),t.promise},e.prototype.get_challenge_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/challenges",e,{},a,n,{},t),t.promise},e.prototype.post_challenge_attempt=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/challenges/attempt",e,{},a,n,{},t),t.promise},e.prototype.get_challenge_types=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/challenges/types",e,{},a,n,{},t),t.promise},e.prototype.patch_challenge=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/challenges/{challenge_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{challenge_id}",e.challengeId),void 0===e.challengeId?t.reject(new Error("Missing required parameter: challengeId")):(a=i(e,a),this.request("PATCH",o+n,e,{},s,a,{},t)),t.promise},e.prototype.delete_challenge=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/challenges/{challenge_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{challenge_id}",e.challengeId),void 0===e.challengeId?t.reject(new Error("Missing required parameter: challengeId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_challenge=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/challenges/{challenge_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{challenge_id}",e.challengeId),void 0===e.challengeId?t.reject(new Error("Missing required parameter: challengeId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_challenge_files=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/challenges/{challenge_id}/files",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],void 0!==e.id&&(a.id=e.id),n=n.replace("{challenge_id}",e.challengeId),void 0===e.challengeId?t.reject(new Error("Missing required parameter: challengeId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_challenge_flags=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/challenges/{challenge_id}/flags",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],void 0!==e.id&&(a.id=e.id),n=n.replace("{challenge_id}",e.challengeId),void 0===e.challengeId?t.reject(new Error("Missing required parameter: challengeId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_challenge_hints=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/challenges/{challenge_id}/hints",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],void 0!==e.id&&(a.id=e.id),n=n.replace("{challenge_id}",e.challengeId),void 0===e.challengeId?t.reject(new Error("Missing required parameter: challengeId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_challenge_solves=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/challenges/{challenge_id}/solves",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],void 0!==e.id&&(a.id=e.id),n=n.replace("{challenge_id}",e.challengeId),void 0===e.challengeId?t.reject(new Error("Missing required parameter: challengeId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_challenge_tags=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/challenges/{challenge_id}/tags",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],void 0!==e.id&&(a.id=e.id),n=n.replace("{challenge_id}",e.challengeId),void 0===e.challengeId?t.reject(new Error("Missing required parameter: challengeId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_config_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/configs",e,{},a,n,{},t),t.promise},e.prototype.patch_config_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("PATCH",o+"/configs",e,{},a,n,{},t),t.promise},e.prototype.get_config_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/configs",e,{},a,n,{},t),t.promise},e.prototype.patch_config=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/configs/{config_key}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{config_key}",e.configKey),void 0===e.configKey?t.reject(new Error("Missing required parameter: configKey")):(a=i(e,a),this.request("PATCH",o+n,e,{},s,a,{},t)),t.promise},e.prototype.delete_config=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/configs/{config_key}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{config_key}",e.configKey),void 0===e.configKey?t.reject(new Error("Missing required parameter: configKey")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_config=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/configs/{config_key}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{config_key}",e.configKey),void 0===e.configKey?t.reject(new Error("Missing required parameter: configKey")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_files_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/files",e,{},a,n,{},t),t.promise},e.prototype.get_files_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/files",e,{},a,n,{},t),t.promise},e.prototype.delete_files_detail=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/files/{file_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{file_id}",e.fileId),void 0===e.fileId?t.reject(new Error("Missing required parameter: fileId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_files_detail=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/files/{file_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{file_id}",e.fileId),void 0===e.fileId?t.reject(new Error("Missing required parameter: fileId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_flag_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/flags",e,{},a,n,{},t),t.promise},e.prototype.get_flag_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/flags",e,{},a,n,{},t),t.promise},e.prototype.get_flag_types=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/flags/types",e,{},a,n,{},t),t.promise},e.prototype.get_flag_types_1=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/flags/types/{type_name}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{type_name}",e.typeName),void 0===e.typeName?t.reject(new Error("Missing required parameter: typeName")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.patch_flag=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/flags/{flag_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{flag_id}",e.flagId),void 0===e.flagId?t.reject(new Error("Missing required parameter: flagId")):(a=i(e,a),this.request("PATCH",o+n,e,{},s,a,{},t)),t.promise},e.prototype.delete_flag=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/flags/{flag_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{flag_id}",e.flagId),void 0===e.flagId?t.reject(new Error("Missing required parameter: flagId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_flag=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/flags/{flag_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{flag_id}",e.flagId),void 0===e.flagId?t.reject(new Error("Missing required parameter: flagId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_hint_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/hints",e,{},a,n,{},t),t.promise},e.prototype.get_hint_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/hints",e,{},a,n,{},t),t.promise},e.prototype.patch_hint=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/hints/{hint_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{hint_id}",e.hintId),void 0===e.hintId?t.reject(new Error("Missing required parameter: hintId")):(a=i(e,a),this.request("PATCH",o+n,e,{},s,a,{},t)),t.promise},e.prototype.delete_hint=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/hints/{hint_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{hint_id}",e.hintId),void 0===e.hintId?t.reject(new Error("Missing required parameter: hintId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_hint=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/hints/{hint_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{hint_id}",e.hintId),void 0===e.hintId?t.reject(new Error("Missing required parameter: hintId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_notification_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/notifications",e,{},a,n,{},t),t.promise},e.prototype.get_notification_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/notifications",e,{},a,n,{},t),t.promise},e.prototype.delete_notification=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/notifications/{notification_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{notification_id}",e.notificationId),void 0===e.notificationId?t.reject(new Error("Missing required parameter: notificationId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_notification=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/notifications/{notification_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{notification_id}",e.notificationId),void 0===e.notificationId?t.reject(new Error("Missing required parameter: notificationId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_page_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/pages",e,{},a,n,{},t),t.promise},e.prototype.get_page_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/pages",e,{},a,n,{},t),t.promise},e.prototype.patch_page_detail=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/pages/{page_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{page_id}",e.pageId),void 0===e.pageId?t.reject(new Error("Missing required parameter: pageId")):(a=i(e,a),this.request("PATCH",o+n,e,{},s,a,{},t)),t.promise},e.prototype.delete_page_detail=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/pages/{page_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{page_id}",e.pageId),void 0===e.pageId?t.reject(new Error("Missing required parameter: pageId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_page_detail=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/pages/{page_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{page_id}",e.pageId),void 0===e.pageId?t.reject(new Error("Missing required parameter: pageId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_scoreboard_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/scoreboard",e,{},a,n,{},t),t.promise},e.prototype.get_scoreboard_detail=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/scoreboard/top/{count}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{count}",e.count),void 0===e.count?t.reject(new Error("Missing required parameter: count")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_challenge_solve_statistics=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/statistics/challenges/solves",e,{},a,n,{},t),t.promise},e.prototype.get_challenge_solve_percentages=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/statistics/challenges/solves/percentages",e,{},a,n,{},t),t.promise},e.prototype.get_challenge_property_counts=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/statistics/challenges/{column}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{column}",e.column),void 0===e.column?t.reject(new Error("Missing required parameter: column")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_submission_property_counts=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/statistics/submissions/{column}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{column}",e.column),void 0===e.column?t.reject(new Error("Missing required parameter: column")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_team_statistics=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/statistics/teams",e,{},a,n,{},t),t.promise},e.prototype.get_user_statistics=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/statistics/users",e,{},a,n,{},t),t.promise},e.prototype.get_user_property_counts=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/statistics/users/{column}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{column}",e.column),void 0===e.column?t.reject(new Error("Missing required parameter: column")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_submissions_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/submissions",e,{},a,n,{},t),t.promise},e.prototype.get_submissions_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/submissions",e,{},a,n,{},t),t.promise},e.prototype.delete_submission=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/submissions/{submission_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{submission_id}",e.submissionId),void 0===e.submissionId?t.reject(new Error("Missing required parameter: submissionId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_submission=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/submissions/{submission_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{submission_id}",e.submissionId),void 0===e.submissionId?t.reject(new Error("Missing required parameter: submissionId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_tag_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/tags",e,{},a,n,{},t),t.promise},e.prototype.get_tag_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/tags",e,{},a,n,{},t),t.promise},e.prototype.patch_tag=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/tags/{tag_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{tag_id}",e.tagId),void 0===e.tagId?t.reject(new Error("Missing required parameter: tagId")):(a=i(e,a),this.request("PATCH",o+n,e,{},s,a,{},t)),t.promise},e.prototype.delete_tag=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/tags/{tag_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{tag_id}",e.tagId),void 0===e.tagId?t.reject(new Error("Missing required parameter: tagId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_tag=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/tags/{tag_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{tag_id}",e.tagId),void 0===e.tagId?t.reject(new Error("Missing required parameter: tagId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_team_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/teams",e,{},a,n,{},t),t.promise},e.prototype.get_team_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/teams",e,{},a,n,{},t),t.promise},e.prototype.patch_team_private=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],void 0!==e.teamId&&(n.team_id=e.teamId),n=i(e,n),this.request("PATCH",o+"/teams/me",e,{},a,n,{},t),t.promise},e.prototype.get_team_private=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],void 0!==e.teamId&&(n.team_id=e.teamId),n=i(e,n),this.request("GET",o+"/teams/me",e,{},a,n,{},t),t.promise},e.prototype.patch_team_public=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/teams/{team_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{team_id}",e.teamId),void 0===e.teamId?t.reject(new Error("Missing required parameter: teamId")):(a=i(e,a),this.request("PATCH",o+n,e,{},s,a,{},t)),t.promise},e.prototype.delete_team_public=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/teams/{team_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{team_id}",e.teamId),void 0===e.teamId?t.reject(new Error("Missing required parameter: teamId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_team_public=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/teams/{team_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{team_id}",e.teamId),void 0===e.teamId?t.reject(new Error("Missing required parameter: teamId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_team_awards=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/teams/{team_id}/awards",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{team_id}",e.teamId),void 0===e.teamId?t.reject(new Error("Missing required parameter: teamId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_team_fails=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/teams/{team_id}/fails",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{team_id}",e.teamId),void 0===e.teamId?t.reject(new Error("Missing required parameter: teamId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_team_solves=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/teams/{team_id}/solves",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{team_id}",e.teamId),void 0===e.teamId?t.reject(new Error("Missing required parameter: teamId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.post_unlock_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/unlocks",e,{},a,n,{},t),t.promise},e.prototype.get_unlock_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/unlocks",e,{},a,n,{},t),t.promise},e.prototype.post_user_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("POST",o+"/users",e,{},a,n,{},t),t.promise},e.prototype.get_user_list=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/users",e,{},a,n,{},t),t.promise},e.prototype.patch_user_private=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("PATCH",o+"/users/me",e,{},a,n,{},t),t.promise},e.prototype.get_user_private=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n={},a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],n=i(e,n),this.request("GET",o+"/users/me",e,{},a,n,{},t),t.promise},e.prototype.patch_user_public=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/users/{user_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{user_id}",e.userId),void 0===e.userId?t.reject(new Error("Missing required parameter: userId")):(a=i(e,a),this.request("PATCH",o+n,e,{},s,a,{},t)),t.promise},e.prototype.delete_user_public=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/users/{user_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{user_id}",e.userId),void 0===e.userId?t.reject(new Error("Missing required parameter: userId")):(a=i(e,a),this.request("DELETE",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_user_public=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/users/{user_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{user_id}",e.userId),void 0===e.userId?t.reject(new Error("Missing required parameter: userId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_user_awards=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/users/{user_id}/awards",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{user_id}",e.userId),void 0===e.userId?t.reject(new Error("Missing required parameter: userId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_user_fails=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/users/{user_id}/fails",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{user_id}",e.userId),void 0===e.userId?t.reject(new Error("Missing required parameter: userId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e.prototype.get_user_solves=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/users/{user_id}/solves",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{user_id}",e.userId),void 0===e.userId?t.reject(new Error("Missing required parameter: userId")):(a=i(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise},e}();t.API=s},"./CTFd/themes/core/assets/js/config.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={urlRoot:"",csrfNonce:"",userMode:""}},"./CTFd/themes/core/assets/js/events.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=o("./node_modules/howler/dist/howler.js"),n=o("./node_modules/event-source-polyfill/src/eventsource.js"),i=o("./CTFd/themes/core/assets/js/ezq.js"),l=o("./CTFd/themes/core/assets/js/utils.js"),d=n.NativeEventSource||n.EventSourcePolyfill;t.default=function(e){var t=new d(e+"/events"),o=new l.WindowController,n=new s.Howl({src:[e+"/themes/core/static/sounds/notification.webm",e+"/themes/core/static/sounds/notification.mp3"]});function a(e){switch(e.type){case"toast":(0,l.inc_notification_counter)();var t=50<e.content.length?e.content.substring(0,47)+"...":e.content,o=!1;(0,i.ezToast)({title:e.title,body:t,onclick:function(){(0,i.ezAlert)({title:e.title,body:e.content,button:"Got it!",success:function(){o=!0,(0,l.dec_notification_counter)()}})},onclose:function(){o||(0,l.dec_notification_counter)()}});break;case"alert":(0,l.inc_notification_counter)(),(0,i.ezAlert)({title:e.title,body:e.content,button:"Got it!",success:function(){(0,l.dec_notification_counter)()}});break;case"background":default:(0,l.inc_notification_counter)()}e.sound&&n.play()}(0,l.init_notification_counter)(),o.notification=function(e){a(e)},o.masterDidChange=function(){this.isMaster?t.addEventListener("notification",function(e){var t=JSON.parse(e.data);o.broadcast("notification",t),a(t)},!1):t&&t.close()}}},"./CTFd/themes/core/assets/js/ezq.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.ezAlert=p,t.ezToast=f,t.ezQuery=h,t.ezProgressBar=j,t.ezBadge=g,t.default=void 0,o("./node_modules/bootstrap/js/dist/modal.js");var n,l=(n=o("./node_modules/jquery/dist/jquery.js"))&&n.__esModule?n:{default:n};var s='<div class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">{0}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> </div> <div class="modal-footer"> </div> </div> </div></div>',d='<div class="toast m-3" role="alert"> <div class="toast-header"> <strong class="mr-auto">{0}</strong> <button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="toast-body">{1}</div></div>',i='<div class="progress"> <div class="progress-bar progress-bar-success progress-bar-striped progress-bar-animated" role="progressbar" style="width: {0}%"> </div></div>',a='<div class="alert alert-danger alert-dismissable" role="alert">\n <span class="sr-only">Error:</span>\n {0}\n <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>\n</div>',r='<div class="alert alert-success alert-dismissable submit-row" role="alert">\n <strong>Success!</strong>\n {0}\n <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>\n</div>',c='<button type="button" class="btn btn-primary" data-dismiss="modal">{0}</button>',u='<button type="button" class="btn btn-danger" data-dismiss="modal">No</button>',m='<button type="button" class="btn btn-primary" data-dismiss="modal">Yes</button>';function p(e){var t=s.format(e.title),o=(0,l.default)(t);"string"==typeof e.body?o.find(".modal-body").append("<p>".concat(e.body,"</p>")):o.find(".modal-body").append((0,l.default)(e.body));var n=(0,l.default)(c.format(e.button));return e.success&&(0,l.default)(n).click(function(){e.success()}),e.large&&o.find(".modal-dialog").addClass("modal-lg"),o.find(".modal-footer").append(n),(0,l.default)("main").append(o),o.modal("show"),(0,l.default)(o).on("hidden.bs.modal",function(){(0,l.default)(this).modal("dispose")}),o}function f(e){(0,l.default)("#ezq--notifications-toast-container").length||(0,l.default)("body").append((0,l.default)("<div/>").attr({id:"ezq--notifications-toast-container"}).css({position:"fixed",bottom:"0",right:"0","min-width":"20%"}));var t=d.format(e.title,e.body),o=(0,l.default)(t);if(e.onclose&&(0,l.default)(o).find("button[data-dismiss=toast]").click(function(){e.onclose()}),e.onclick){var n=(0,l.default)(o).find(".toast-body");n.addClass("cursor-pointer"),n.click(function(){e.onclick()})}var a=!1!==e.autohide,s=!1!==e.animation,i=e.delay||1e4;return(0,l.default)("#ezq--notifications-toast-container").prepend(o),o.toast({autohide:a,delay:i,animation:s}),o.toast("show"),o}function h(e){var t=s.format(e.title),o=(0,l.default)(t);"string"==typeof e.body?o.find(".modal-body").append("<p>".concat(e.body,"</p>")):o.find(".modal-body").append((0,l.default)(e.body));var n=(0,l.default)(m),a=(0,l.default)(u);return o.find(".modal-footer").append(a),o.find(".modal-footer").append(n),(0,l.default)("main").append(o),(0,l.default)(o).on("hidden.bs.modal",function(){(0,l.default)(this).modal("dispose")}),(0,l.default)(n).click(function(){e.success()}),o.modal("show"),o}function j(e){if(e.target){var t=(0,l.default)(e.target);return t.find(".progress-bar").css("width",e.width+"%"),t}var o=i.format(e.width),n=s.format(e.title),a=(0,l.default)(n);return a.find(".modal-body").append((0,l.default)(o)),(0,l.default)("main").append(a),a.modal("show")}function g(e){var t={success:r,error:a}[e.type].format(e.body);return(0,l.default)(t)}var _={ezAlert:p,ezToast:f,ezQuery:h,ezProgressBar:j,ezBadge:g};t.default=_},"./CTFd/themes/core/assets/js/fetch.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,o("./node_modules/whatwg-fetch/fetch.js");var n,a=(n=o("./CTFd/themes/core/assets/js/config.js"))&&n.__esModule?n:{default:n};var s=window.fetch;t.default=function(e,t){return void 0===t&&(t={method:"GET",credentials:"same-origin",headers:{}}),e=a.default.urlRoot+e,void 0===t.headers&&(t.headers={}),t.credentials="same-origin",t.headers.Accept="application/json",t.headers["Content-Type"]="application/json",t.headers["CSRF-Token"]=a.default.csrfNonce,s(e,t)}},"./CTFd/themes/core/assets/js/patch.js":function(e,t,o){var n,l=(n=o("./node_modules/q/q.js"))&&n.__esModule?n:{default:n},a=o("./CTFd/themes/core/assets/js/api.js");function s(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function d(e,t){return function(t){for(var e=1;e<arguments.length;e++)if(e%2){var o=null!=arguments[e]?arguments[e]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),n.forEach(function(e){s(t,e,o[e])})}else Object.defineProperties(t,Object.getOwnPropertyDescriptors(arguments[e]));return t}({},e,{},t)}a.API.prototype.requestRaw=function(e,t,o,n,a,s,i,l){var d=s&&Object.keys(s).length?function(e){var t=[];for(var o in e)e.hasOwnProperty(o)&&t.push(encodeURIComponent(o)+"="+encodeURIComponent(e[o]));return t.join("&")}(s):null,r=t+(d?"?"+d:"");n&&!Object.keys(n).length&&(n=void 0),fetch(r,{method:e,headers:a,body:n}).then(function(e){return e.json()}).then(function(e){l.resolve(e)}).catch(function(e){l.reject(e)})},a.API.prototype.patch_user_public=function(e,t){void 0===e&&(e={});var o=l.default.defer(),n=this.domain,a="/users/{user_id}",s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],a=a.replace("{user_id}",e.userId),void 0===e.userId?o.reject(new Error("Missing required parameter: userId")):this.request("PATCH",n+a,e,t,s,{},{},o),o.promise},a.API.prototype.patch_user_private=function(e,t){void 0===e&&(e={});var o=l.default.defer(),n=this.domain,a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],this.request("PATCH",n+"/users/me",e,t,a,{},{},o),o.promise},a.API.prototype.post_unlock_list=function(e,t){var o=l.default.defer(),n=this.domain,a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],this.request("POST",n+"/unlocks",e,t,a,{},{},o),o.promise},a.API.prototype.post_notification_list=function(e,t){void 0===e&&(e={});var o=l.default.defer(),n=this.domain,a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],this.request("POST",n+"/notifications",e,t,a,{},{},o),o.promise},a.API.prototype.post_files_list=function(e,t){var o=l.default.defer(),n=this.domain,a={};return a.Accept=["application/json"],a["Content-Type"]=["application/json"],this.requestRaw("POST",n+"/files",e,t,a,{},{},o),o.promise},a.API.prototype.patch_config=function(e,t){void 0===e&&(e={});var o=l.default.defer(),n=this.domain,a="/configs/{config_key}",s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],a=a.replace("{config_key}",e.configKey),void 0===e.configKey?o.reject(new Error("Missing required parameter: configKey")):this.request("PATCH",n+a,e,t,s,{},{},o),o.promise},a.API.prototype.patch_config_list=function(e,t){void 0===e&&(e={});var o=l.default.defer(),n=this.domain,a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],a=d(e,a),this.request("PATCH",n+"/configs",e,t,s,a,{},o),o.promise},a.API.prototype.post_tag_list=function(e,t){void 0===e&&(e={});var o=l.default.defer(),n=this.domain,a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],a=d(e,a),this.request("POST",n+"/tags",e,t,s,a,{},o),o.promise},a.API.prototype.patch_team_public=function(e,t){void 0===e&&(e={});var o=l.default.defer(),n=this.domain,a="/teams/{team_id}",s={},i={};return i.Accept=["application/json"],i["Content-Type"]=["application/json"],a=a.replace("{team_id}",e.teamId),void 0===e.teamId?o.reject(new Error("Missing required parameter: teamId")):(s=d(e,s),this.request("PATCH",n+a,e,t,i,s,{},o)),o.promise},a.API.prototype.post_challenge_attempt=function(e,t){void 0===e&&(e={});var o=l.default.defer(),n=this.domain,a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],a=d(e,a),this.request("POST",n+"/challenges/attempt",e,t,s,a,{},o),o.promise},a.API.prototype.get_hint=function(e){void 0===e&&(e={});var t=l.default.defer(),o=this.domain,n="/hints/{hint_id}",a={},s={};return s.Accept=["application/json"],s["Content-Type"]=["application/json"],n=n.replace("{hint_id}",e.hintId),void 0===e.hintId?t.reject(new Error("Missing required parameter: hintId")):(delete e.hintId,a=d(e,a),this.request("GET",o+n,e,{},s,a,{},t)),t.promise}},"./CTFd/themes/core/assets/js/times.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=s(o("./node_modules/moment/moment.js")),a=s(o("./node_modules/jquery/dist/jquery.js"));function s(e){return e&&e.__esModule?e:{default:e}}t.default=function(){(0,a.default)("[data-time]").each(function(e,t){t.innerText=(0,n.default)((0,a.default)(t).data("time")).local().format("MMMM Do, h:mm:ss A")})}},"./CTFd/themes/core/assets/js/utils.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.WindowController=a,t.colorHash=function(e){for(var t=0,o=0;o<e.length;o++)t=e.charCodeAt(o)+((t<<5)-t);for(var n="#",a=0;a<3;a++){n+=("00"+(t>>4*a&255).toString(16)).substr(-2)}return n},t.htmlEntities=function(e){return(0,i.default)("<div/>").text(e).html()},t.cumulativeSum=function(e){for(var t=e.concat(),o=0;o<e.length;o++)t[o]=e.slice(0,o+1).reduce(function(e,t){return e+t});return t},t.init_notification_counter=function(){var e=s.getItem(l);null===e?s.setItem(l,0):0<e&&(0,i.default)(".badge-notification").text(e)},t.set_notification_counter=function(e){s.setItem(l,e)},t.inc_notification_counter=function(){var e=s.getItem(l)||0;s.setItem(l,++e),(0,i.default)(".badge-notification").text(e)},t.dec_notification_counter=function(){var e=s.getItem(l)||0;0<e&&(s.setItem(l,--e),(0,i.default)(".badge-notification").text(e));0==e&&d()},t.clear_notification_counter=d,t.copyToClipboard=function(e,t){(0,i.default)(t).select(),document.execCommand("copy"),(0,i.default)(e.target).tooltip({title:"Copied!",trigger:"manual"}),(0,i.default)(e.target).tooltip("show"),setTimeout(function(){(0,i.default)(e.target).tooltip("hide")},1500)},t.makeSortableTables=function(){function s(e,t){return(0,i.default)(e).children("td").eq(t).text()}(0,i.default)("th.sort-col").append(' <i class="fas fa-sort"></i>'),(0,i.default)("th.sort-col").click(function(){var e=(0,i.default)(this).parents("table").eq(0),t=e.find("tr:gt(0)").toArray().sort(function(a){return function(e,t){var o=s(e,a),n=s(t,a);return i.default.isNumeric(o)&&i.default.isNumeric(n)?o-n:o.toString().localeCompare(n)}}((0,i.default)(this).index()));this.asc=!this.asc,this.asc||(t=t.reverse());for(var o=0;o<t.length;o++)e.append(t[o])})};var n,i=(n=o("./node_modules/jquery/dist/jquery.js"))&&n.__esModule?n:{default:n};function a(){this.id=Math.random(),this.isMaster=!1,this.others={},window.addEventListener("storage",this,!1),window.addEventListener("unload",this,!1),this.broadcast("hello");var t=this;this._checkTimeout=setTimeout(function e(){t.check(),t._checkTimeout=setTimeout(e,9e3)},500),this._pingTimeout=setTimeout(function e(){t.sendPing(),t._pingTimeout=setTimeout(e,17e3)},17e3)}i.default.fn.serializeJSON=function(o){var n={},a=(0,i.default)(this),e=a.serializeArray();return(e=(e=e.concat(a.find("input[type=checkbox]:checked").map(function(){return{name:this.name,value:!0}}).get())).concat(a.find("input[type=checkbox]:not(:checked)").map(function(){return{name:this.name,value:!1}}).get())).map(function(e){if(o)if(null!==e.value&&""!==e.value)n[e.name]=e.value;else{var t=a.find(":input[name='".concat(e.name,"']"));t.data("initial")!==t.val()&&(n[e.name]=e.value)}else n[e.name]=e.value}),n},String.prototype.format=String.prototype.f=function(){for(var e=this,t=arguments.length;t--;)e=e.replace(new RegExp("\\{"+t+"\\}","gm"),arguments[t]);return e},String.prototype.hashCode=function(){var e,t,o=0;if(0==this.length)return o;for(e=0,t=this.length;e<t;e++)o=(o<<5)-o+this.charCodeAt(e),o|=0;return o},a.prototype.destroy=function(){clearTimeout(this._pingTimeout),clearTimeout(this._checkTimeout),window.removeEventListener("storage",this,!1),window.removeEventListener("unload",this,!1),this.broadcast("bye")},a.prototype.handleEvent=function(e){if("unload"===e.type)this.destroy();else if("broadcast"===e.key)try{var t=JSON.parse(e.newValue);t.id!==this.id&&this[t.type](t)}catch(e){}},a.prototype.sendPing=function(){this.broadcast("ping")},a.prototype.hello=function(e){this.ping(e),e.id<this.id?this.check():this.sendPing()},a.prototype.ping=function(e){this.others[e.id]=+new Date},a.prototype.bye=function(e){delete this.others[e.id],this.check()},a.prototype.check=function(e){var t,o=+new Date,n=!0;for(t in this.others)this.others[t]+23e3<o?delete this.others[t]:t<this.id&&(n=!1);this.isMaster!==n&&(this.isMaster=n,this.masterDidChange())},a.prototype.masterDidChange=function(){},a.prototype.broadcast=function(e,t){var o={id:this.id,type:e};for(var n in t)o[n]=t[n];try{localStorage.setItem("broadcast",JSON.stringify(o))}catch(e){console.log(e)}};var s=window.localStorage,l="unread_notifications";function d(){s.setItem(l,0),(0,i.default)(".badge-notification").empty()}},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":function(e,t,o){var n={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-SG":"./node_modules/moment/locale/en-SG.js","./en-SG.js":"./node_modules/moment/locale/en-SG.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function a(e){var t=s(e);return o(t)}function s(e){var t=n[e];if(t+1)return t;var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}a.keys=function(){return Object.keys(n)},a.resolve=s,(e.exports=a).id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},0:function(e,t){}});