diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index e47c942fe83a503bb66657ee59c1952962eeb7c9..acef3c5e7096396b0dbb83dccacc424be580277e 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -2,6 +2,13 @@ 0.10.7.1-1.1.x +12/01/2018 + + 5 + -fixes + -added ability to overwrite saves + -removed a long term, ever increasing problem related to sugarcube + 11/30/2018 4 diff --git a/devNotes/sugarcube stuff/important for updating sugarcube.txt b/devNotes/sugarcube stuff/important for updating sugarcube.txt index ad4f0a619d782d1857a9605ca7567c9bc60d2ab2..dc87ab303bead6b0a366c9618beb4bae2afebd39 100644 --- a/devNotes/sugarcube stuff/important for updating sugarcube.txt +++ b/devNotes/sugarcube stuff/important for updating sugarcube.txt @@ -11,12 +11,18 @@ Edit the sugarcube header and change: ... return Object.freeze + + {return LZString.compressToUTF16(JSON.stringify(e))}},{key:"_deserialize",value:function(e){return JSON.parse(LZString.decompressFromUTF16(e))}}]),e}(); + + Into this [{key:"_serialize",value:function(e) + /* look here for changes */ {return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}(); /* changes end here */ + return Object.freeze @@ -42,3 +48,22 @@ into this: This uses two separate methods to detect if we are returning to the same page. Just checking sugarcube should actually be sufficient, but no harm in this approach either. + +CHANGE 3: Ignore expired array +============================== + + return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[].concat(_toConsumableArray(V))),null!==F&&(t.seed=F.seed),t}function a(e,t){ + + into + + return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[]),null!==F&&(t.seed=F.seed),t}function a(e,t){ + + +CHANGE 4: Save overwriting? +=========================== + + d.append(e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){ + + into + + d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save),e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){ \ No newline at end of file diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt index b912fd3013c9f187340f2c22e25ce86327016286..34ef147e6420886d86279cb8af9d708e59675746 100644 --- a/devNotes/twine JS.txt +++ b/devNotes/twine JS.txt @@ -1,5 +1,6 @@ config.history.maxStates = 1; /* If you remove this, I will fucking yell at you. Stop. Doing. It. */ config.saves.autosave = "autosave"; +State.expired.disable; /*:: StoryJS [script]*/ diff --git a/devTools/tweeGo/storyFormats/sugarcube-2/header.html b/devTools/tweeGo/storyFormats/sugarcube-2/header.html index e01579eb77c97a6ca1e2c4e0c9eb63fb46770f7f..4cc9050c99df9885cf22778aea7a1d2c21d9bf97 100644 --- a/devTools/tweeGo/storyFormats/sugarcube-2/header.html +++ b/devTools/tweeGo/storyFormats/sugarcube-2/header.html @@ -135,11 +135,11 @@ var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||f {return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}(); /* changes end here */ return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}()),SimpleStore.adapters.push(function(){function e(e){try{var t="_sc_"+String(Date.now());o._setCookie(t,o._serialize(t),undefined),i=o._deserialize(o._getCookie(t))===t,o._setCookie(t,undefined,n)}catch(e){i=!1}return i&&r(e),i}function t(e,t){if(!i)throw new Error("adapter not initialized");return new o(e,t)}function r(e){if(""!==document.cookie)for(var t=e+".",r=new RegExp("^"+RegExp.escape(t)),i=e+"!.",s=e+"*.",u=/\.(?:state|rcWarn)$/,l=document.cookie.split(/;\s*/),c=0;c<l.length;++c){var d=l[c].split("="),h=decodeURIComponent(d[0]);if(r.test(h)){var f=decodeURIComponent(d[1]);""!==f&&function(){var e=!u.test(h);o._setCookie(h,undefined,n),o._setCookie(h.replace(r,function(){return e?i:s}),f,e?a:undefined)}()}}}var a="Tue, 19 Jan 2038 03:14:07 GMT",n="Thu, 01 Jan 1970 00:00:00 GMT",i=!1,o=function(){function e(t,r){_classCallCheck(this,e);var a=t+(r?"!":"*")+".";Object.defineProperties(this,{_prefix:{value:a},_prefixRe:{value:new RegExp("^"+RegExp.escape(a))},name:{value:"cookie"},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function(){if(""===document.cookie)return[];for(var e=document.cookie.split(/;\s*/),t=[],r=0;r<e.length;++r){var a=e[r].split("="),n=decodeURIComponent(a[0]);if(this._prefixRe.test(n)){""!==decodeURIComponent(a[1])&&t.push(n.replace(this._prefixRe,""))}}return t}},{key:"has",value:function(t){return!("string"!=typeof t||!t)&&null!==e._getCookie(this._prefix+t)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=e._getCookie(this._prefix+t);return null===r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{if(e._setCookie(this._prefix+t,e._serialize(r),this.persistent?a:undefined),!this.has(t))throw new Error("unknown validation error during set")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"delete",value:function(t){if("string"!=typeof t||!t||!this.has(t))return!1;try{if(e._setCookie(this._prefix+t,undefined,n),this.has(t))throw new Error("unknown validation error during delete")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_getCookie",value:function(e){if(!e||""===document.cookie)return null;for(var t=document.cookie.split(/;\s*/),r=0;r<t.length;++r){var a=t[r].split("=");if(e===decodeURIComponent(a[0])){return decodeURIComponent(a[1])||null}}return null}},{key:"_setCookie",value:function(e,t,r){if(e){var a=encodeURIComponent(e)+"=";null!=t&&(a+=encodeURIComponent(t)),null!=r&&(a+="; expires="+r),a+="; path=/",document.cookie=a}}},{key:"_serialize",value:function(e){return LZString.compressToBase64(JSON.stringify(e))}},{key:"_deserialize",value:function(e){return JSON.parse(LZString.decompressFromBase64(e))}}]),e}();return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}());var DebugView=function(){return function(){function e(t,r,a,n){_classCallCheck(this,e),Object.defineProperties(this,{parent:{value:t},view:{value:document.createElement("span")},break:{value:document.createElement("wbr")}}),jQuery(this.view).attr({title:n,"aria-label":n,"data-type":null!=r?r:"","data-name":null!=a?a:""}).addClass("debug"),jQuery(this.break).addClass("debug hidden"),this.parent.appendChild(this.view),this.parent.appendChild(this.break)}return _createClass(e,[{key:"append",value:function(e){return jQuery(this.view).append(e),this}},{key:"modes",value:function(e){if(null==e){var t={};return this.view.className.splitOrEmpty(/\s+/).forEach(function(e){"debug"!==e&&(t[e]=!0)}),t}if("object"===(void 0===e?"undefined":_typeof(e)))return Object.keys(e).forEach(function(t){this[e[t]?"addClass":"removeClass"](t)},jQuery(this.view)),this;throw new Error("DebugView.prototype.modes options parameter must be an object or null/undefined")}},{key:"remove",value:function(){var e=jQuery(this.view);this.view.hasChildNodes()&&e.contents().appendTo(this.parent),e.remove(),jQuery(this.break).remove()}},{key:"output",get:function(){return this.view}},{key:"type",get:function(){return this.view.getAttribute("data-type")},set:function(e){this.view.setAttribute("data-type",null!=e?e:"")}},{key:"name",get:function(){return this.view.getAttribute("data-name")},set:function(e){this.view.setAttribute("data-name",null!=e?e:"")}},{key:"title",get:function(){return this.view.title},set:function(e){this.view.title=e}}],[{key:"isEnabled",value:function(){return"enabled"===jQuery(document.documentElement).attr("data-debug-view")}},{key:"enable",value:function(){jQuery(document.documentElement).attr("data-debug-view","enabled"),jQuery.event.trigger(":debugviewupdate")}},{key:"disable",value:function(){jQuery(document.documentElement).removeAttr("data-debug-view"),jQuery.event.trigger(":debugviewupdate")}},{key:"toggle",value:function(){"enabled"===jQuery(document.documentElement).attr("data-debug-view")?e.disable():e.enable()}}]),e}()}(),PRNGWrapper=function(){return function(){function e(t,r){_classCallCheck(this,e),Object.defineProperties(this,new Math.seedrandom(t,r,function(e,t){return{_prng:{value:e},seed:{writable:!0,value:t},pull:{writable:!0,value:0},random:{value:function(){return++this.pull,this._prng()}}}}))}return _createClass(e,null,[{key:"marshal",value:function(e){if(!e||!e.hasOwnProperty("seed")||!e.hasOwnProperty("pull"))throw new Error("PRNG is missing required data");return{seed:e.seed,pull:e.pull}}},{key:"unmarshal",value:function(t){if(!t||!t.hasOwnProperty("seed")||!t.hasOwnProperty("pull"))throw new Error("PRNG object is missing required data");for(var r=new e(t.seed,!1),a=t.pull;a>0;--a)r.random();return r}}]),e}()}(),StyleWrapper=function(){var e=new RegExp(Patterns.cssImage,"g"),t=new RegExp(Patterns.cssImage);return function(){function r(e){if(_classCallCheck(this,r),null==e)throw new TypeError("StyleWrapper style parameter must be an HTMLStyleElement object");Object.defineProperties(this,{style:{value:e}})}return _createClass(r,[{key:"isEmpty",value:function(){return 0===this.style.cssRules.length}},{key:"set",value:function(e){this.clear(),this.add(e)}},{key:"add",value:function(r){var a=r;t.test(a)&&(e.lastIndex=0,a=a.replace(e,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var a=Story.get(r);a.tags.includes("Twine.image")&&(r=a.text.trim())}return'url("'+r.replace(/"/g,"%22")+'")'})),this.style.styleSheet?this.style.styleSheet.cssText+=a:this.style.appendChild(document.createTextNode(a))}},{key:"clear",value:function(){this.style.styleSheet?this.style.styleSheet.cssText="":jQuery(this.style).empty()}}]),r}()}(),Diff=function(){function e(t,a){for(var n=Object.prototype.toString,i=t instanceof Array,o=[].concat(Object.keys(t),Object.keys(a)).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}),s={},u=void 0,l=function(e){return e===u},c=0,d=o.length;c<d;++c){var h=o[c],f=t[h],p=a[h];if(t.hasOwnProperty(h))if(a.hasOwnProperty(h)){if(f===p)continue;if((void 0===f?"undefined":_typeof(f))===(void 0===p?"undefined":_typeof(p)))if("function"==typeof f)f.toString()!==p.toString()&&(s[h]=[r.Copy,p]);else if("object"!==(void 0===f?"undefined":_typeof(f))||null===f)s[h]=[r.Copy,p];else{var g=n.call(f),m=n.call(p);if(g===m)if(f instanceof Date)Number(f)!==Number(p)&&(s[h]=[r.Copy,clone(p)]);else if(f instanceof Map)s[h]=[r.Copy,clone(p)];else if(f instanceof RegExp)f.toString()!==p.toString()&&(s[h]=[r.Copy,clone(p)]);else if(f instanceof Set)s[h]=[r.Copy,clone(p)];else if("[object Object]"!==g)s[h]=[r.Copy,clone(p)];else{var v=e(f,p);null!==v&&(s[h]=v)}else s[h]=[r.Copy,clone(p)]}else s[h]=[r.Copy,"object"!==(void 0===p?"undefined":_typeof(p))||null===p?p:clone(p)]}else if(i&&Util.isNumeric(h)){var y=Number(h);if(!u){u="";do{u+="~"}while(o.some(l));s[u]=[r.SpliceArray,y,y]}y<s[u][1]&&(s[u][1]=y),y>s[u][2]&&(s[u][2]=y)}else s[h]=r.Delete;else s[h]=[r.Copy,"object"!==(void 0===p?"undefined":_typeof(p))||null===p?p:clone(p)]}return Object.keys(s).length>0?s:null}function t(e,a){for(var n=Object.keys(a||{}),i=clone(e),o=0,s=n.length;o<s;++o){var u=n[o],l=a[u];if(l===r.Delete)delete i[u];else if(l instanceof Array)switch(l[0]){case r.SpliceArray:i.splice(l[1],l[2]-l[1]+1);break;case r.Copy:i[u]=clone(l[1]);break;case r.CopyDate:i[u]=new Date(l[1])}else i[u]=t(i[u],l)}return i}var r=Util.toEnum({Delete:0,SpliceArray:1,Copy:2,CopyDate:3});return Object.freeze(Object.defineProperties({},{Op:{value:r},diff:{value:e},patch:{value:t}}))}(),L10n=function(){function e(){r()}function t(e,t){if(!e)return"";var r=function(e){var t=void 0;return e.some(function(e){return!!l10nStrings.hasOwnProperty(e)&&(t=e,!0)}),t}(Array.isArray(e)?e:[e]);if(!r)return"";for(var i=l10nStrings[r],o=0;n.test(i);){if(++o>50)throw new Error("L10n.get exceeded maximum replacement iterations, probable infinite loop");a.lastIndex=0,i=i.replace(a,function(e){var r=e.slice(1,-1);return t&&t.hasOwnProperty(r)?t[r]:l10nStrings.hasOwnProperty(r)?l10nStrings[r]:void 0})}return i}function r(){strings&&Object.keys(strings).length>0&&Object.keys(l10nStrings).forEach(function(e){try{var t=void 0;switch(e){case"identity":t=strings.identity;break;case"aborting":t=strings.aborting;break;case"cancel":t=strings.cancel;break;case"close":t=strings.close;break;case"ok":t=strings.ok;break;case"errorTitle":t=strings.errors.title;break;case"errorNonexistentPassage":t=strings.errors.nonexistentPassage;break;case"errorSaveMissingData":t=strings.errors.saveMissingData;break;case"errorSaveIdMismatch":t=strings.errors.saveIdMismatch;break;case"warningDegraded":t=strings.warnings.degraded;break;case"debugViewTitle":t=strings.debugView.title;break;case"debugViewToggle":t=strings.debugView.toggle;break;case"uiBarToggle":t=strings.uiBar.toggle;break;case"uiBarBackward":t=strings.uiBar.backward;break;case"uiBarForward":t=strings.uiBar.forward;break;case"uiBarJumpto":t=strings.uiBar.jumpto;break;case"jumptoTitle":t=strings.jumpto.title;break;case"jumptoTurn":t=strings.jumpto.turn;break;case"jumptoUnavailable":t=strings.jumpto.unavailable;break;case"savesTitle":t=strings.saves.title;break;case"savesDisallowed":t=strings.saves.disallowed;break;case"savesIncapable":t=strings.saves.incapable;break;case"savesLabelAuto":t=strings.saves.labelAuto;break;case"savesLabelDelete":t=strings.saves.labelDelete;break;case"savesLabelExport":t=strings.saves.labelExport;break;case"savesLabelImport":t=strings.saves.labelImport;break;case"savesLabelLoad":t=strings.saves.labelLoad;break;case"savesLabelClear":t=strings.saves.labelClear;break;case"savesLabelSave":t=strings.saves.labelSave;break;case"savesLabelSlot":t=strings.saves.labelSlot;break;case"savesUnavailable":t=strings.saves.unavailable;break;case"savesUnknownDate":t=strings.saves.unknownDate;break;case"settingsTitle":t=strings.settings.title;break;case"settingsOff":t=strings.settings.off;break;case"settingsOn":t=strings.settings.on;break;case"settingsReset":t=strings.settings.reset;break;case"restartTitle":t=strings.restart.title;break;case"restartPrompt":t=strings.restart.prompt;break;case"shareTitle":t=strings.share.title;break;case"autoloadTitle":t=strings.autoload.title;break;case"autoloadCancel":t=strings.autoload.cancel;break;case"autoloadOk":t=strings.autoload.ok;break;case"autoloadPrompt":t=strings.autoload.prompt;break;case"macroBackText":t=strings.macros.back.text;break;case"macroReturnText":t=strings.macros.return.text}t&&(l10nStrings[e]=t.replace(/%\w+%/g,function(e){return"{"+e.slice(1,-1)+"}"}))}catch(e){}})}var a=/\{\w+\}/g,n=new RegExp(a.source);return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:t}}))}(),strings={errors:{},warnings:{},debugView:{},uiBar:{},jumpto:{},saves:{},settings:{},restart:{},share:{},autoload:{}, -macros:{back:{},return:{}}},l10nStrings={identity:"game",aborting:"Aborting",cancel:"Cancel",close:"Close",ok:"OK",errorTitle:"Error",errorToggle:"Toggle the error view",errorNonexistentPassage:'the passage "{passage}" does not exist',errorSaveMissingData:"save is missing required data. Either the loaded file is not a save or the save has become corrupted",errorSaveIdMismatch:"save is from the wrong {identity}",_warningIntroLacking:"Your browser either lacks or has disabled",_warningOutroDegraded:", so this {identity} is running in a degraded mode. You may be able to continue, however, some parts may not work properly.",warningNoWebStorage:"{_warningIntroLacking} the Web Storage API{_warningOutroDegraded}",warningDegraded:"{_warningIntroLacking} some of the capabilities required by this {identity}{_warningOutroDegraded}",debugBarToggle:"Toggle the debug bar",debugBarNoWatches:"— no watches set —",debugBarAddWatch:"Add watch",debugBarDeleteWatch:"Delete watch",debugBarWatchAll:"Watch all",debugBarWatchNone:"Delete all",debugBarLabelAdd:"Add",debugBarLabelWatch:"Watch",debugBarLabelTurn:"Turn",debugBarLabelViews:"Views",debugBarViewsToggle:"Toggle the debug views",debugBarWatchToggle:"Toggle the watch panel",uiBarToggle:"Toggle the UI bar",uiBarBackward:"Go backward within the {identity} history",uiBarForward:"Go forward within the {identity} history",uiBarJumpto:"Jump to a specific point within the {identity} history",jumptoTitle:"Jump To",jumptoTurn:"Turn",jumptoUnavailable:"No jump points currently available…",savesTitle:"Saves",savesDisallowed:"Saving has been disallowed on this passage.",savesIncapable:"{_warningIntroLacking} the capabilities required to support saves, so saves have been disabled for this session.",savesLabelAuto:"Autosave",savesLabelDelete:"Delete",savesLabelExport:"Save to Disk…",savesLabelImport:"Load from Disk…",savesLabelLoad:"Load",savesLabelClear:"Delete All",savesLabelSave:"Save",savesLabelSlot:"Slot",savesUnavailable:"No save slots found…",savesUnknownDate:"unknown",settingsTitle:"Settings",settingsOff:"Off",settingsOn:"On",settingsReset:"Reset to Defaults",restartTitle:"Restart",restartPrompt:"Are you sure that you want to restart? Unsaved progress will be lost.",shareTitle:"Share",autoloadTitle:"Autoload",autoloadCancel:"Go to start",autoloadOk:"Load autosave",autoloadPrompt:"An autosave exists. Load it now or go to the start?",macroBackText:"Back",macroReturnText:"Return"},Config=function(){function e(){throw new Error("Config.history.mode has been deprecated and is no longer used by SugarCube, please remove it from your code")}function t(){throw new Error("Config.history.tracking has been deprecated, use Config.history.maxStates instead")}return Object.seal({debug:!1,addVisitedLinkClass:!1,cleanupWikifierOutput:!1,loadDelay:0,history:Object.seal({controls:!0,maxStates:100,get mode(){e()},set mode(t){e()},get tracking(){t()},set tracking(e){t()}}),macros:Object.seal({ifAssignmentError:!0,maxLoopIterations:1e3}),navigation:Object.seal({override:undefined}),passages:Object.seal({descriptions:undefined,displayTitles:!1,nobr:!1,start:undefined,transitionOut:undefined}),saves:Object.seal({autoload:undefined,autosave:undefined,id:"untitled-story",isAllowed:undefined,onLoad:undefined,onSave:undefined,slots:8,version:undefined}),ui:Object.seal({stowBarInitially:800,updateStoryElements:!0}),transitionEndEventName:function(){for(var e=new Map([["transition","transitionend"],["MSTransition","msTransitionEnd"],["WebkitTransition","webkitTransitionEnd"],["MozTransition","transitionend"]]),t=[].concat(_toConsumableArray(e.keys())),r=document.createElement("div"),a=0;a<t.length;++a)if(r.style[t[a]]!==undefined)return e.get(t[a]);return""}()})}(),State=function(){function e(){session.delete("state"),W=[],R=c(),B=-1,V=[],F=null===F?null:new PRNGWrapper(F.seed,!1)}function t(){if(session.has("state")){var e=session.get("state");return null!=e&&(a(e),!0)}return!1}function r(e){var t={index:B};return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[].concat(_toConsumableArray(V))),null!==F&&(t.seed=F.seed),t}function a(e,t){if(null==e)throw new Error("state object is null or undefined");if(!e.hasOwnProperty(t?"history":"delta")||0===e[t?"history":"delta"].length)throw new Error("state object has no history or history is empty");if(!e.hasOwnProperty("index"))throw new Error("state object has no index");if(null!==F&&!e.hasOwnProperty("seed"))throw new Error("state object has no seed, but PRNG is enabled");if(null===F&&e.hasOwnProperty("seed"))throw new Error("state object has seed, but PRNG is disabled");W=t?clone(e.history):P(e.delta),B=e.index,V=e.hasOwnProperty("expired")?[].concat(_toConsumableArray(e.expired)):[],e.hasOwnProperty("seed")&&(F.seed=e.seed),g(B)}function n(){return r(!0)}function i(e){return a(e,!0)}function o(){return V}function s(){return V.length+v()}function u(){return V.concat(W.slice(0,v()).map(function(e){return e.title}))}function l(e){return null!=e&&""!==e&&(!!V.includes(e)||!!W.slice(0,v()).some(function(t){return t.title===e}))}function c(e,t){return{title:null==e?"":String(e),variables:null==t?{}:clone(t)}}function d(){return R}function h(){return B}function f(){return R.title}function p(){return R.variables}function g(e){if(null==e)throw new Error("moment activation attempted with null or undefined");switch(void 0===e?"undefined":_typeof(e)){case"object":R=clone(e);break;case"number":if(b())throw new Error("moment activation attempted with index on empty history");if(e<0||e>=y())throw new RangeError("moment activation attempted with out-of-bounds index; need [0, "+(y()-1)+"], got "+e);R=clone(W[e]);break;default:throw new TypeError('moment activation attempted with a "'+(void 0===e?"undefined":_typeof(e))+'"; must be an object or valid history stack index')}return null!==F&&(F=PRNGWrapper.unmarshal({seed:F.seed,pull:R.pull})),session.set("state",r()),jQuery.event.trigger(":historyupdate"),R}function m(){return W}function v(){return B+1}function y(){return W.length}function b(){return 0===W.length}function w(){return W.length>0?W[B]:null}function k(){return W.length>0?W[W.length-1]:null}function S(){return W.length>0?W[0]:null}function E(e){return b()||e<0||e>B?null:W[e]}function x(e){if(b())return null;var t=1+(e?Math.abs(e):0);return t>v()?null:W[v()-t]}function j(e){if(b()||null==e||""===e)return!1;for(var t=B;t>=0;--t)if(W[t].title===e)return!0;return!1}function C(e){if(v()<y()&&W.splice(v(),y()-v()),W.push(c(e,R.variables)),F&&(k().pull=F.pull),Config.history.maxStates>0)for(;y()>Config.history.maxStates;)V.push(W.shift().title);return B=y()-1,g(B),v()}function T(e){return!(null==e||e<0||e>=y()||e===B)&&(B=e,g(B),!0)}function O(e){return null!=e&&0!==e&&T(B+e)}function A(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.diff(e[r-1],e[r]));return t}function P(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.patch(t[r-1],e[r]));return t}function _(e,t){if(!b()){var r=void 0;throw r="a script-tagged passage",new Error("State.initPRNG must be called during initialization, within either "+r+" or the StoryInit special passage")}F=new PRNGWrapper(e,t),R.pull=F.pull}function N(){return F?F.random():Math.random()}function D(){U={},TempVariables=U}function M(){return U}function I(e){var t=Q(e);if(null!==t){for(var r=t.names,a=t.store,n=0,i=r.length;n<i;++n){if(void 0===a[r[n]])return;a=a[r[n]]}return a}}function L(e,t){var r=Q(e);if(null===r)return!1;for(var a=r.names,n=a.pop(),i=r.store,o=0,s=a.length;o<s;++o){if(void 0===i[a[o]])return!1;i=i[a[o]]}return i[n]=t,!0}function Q(e){for(var t={store:"$"===e[0]?State.variables:State.temporary,names:[]},r=e,a=void 0;null!==(a=z.exec(r));)r=r.slice(a[0].length),a[1]?t.names.push(a[1]):a[2]?t.names.push(a[2]):a[3]?t.names.push(a[3]):a[4]?t.names.push(a[4]):a[5]?t.names.push(I(a[5])):a[6]&&t.names.push(Number(a[6]));return""===r?t:null}var W=[],R=c(),B=-1,V=[],F=null,U={},z=new RegExp("^(?:"+Patterns.variableSigil+"("+Patterns.identifier+")|\\.("+Patterns.identifier+")|\\[(?:(?:\"((?:\\\\.|[^\"\\\\])+)\")|(?:'((?:\\\\.|[^'\\\\])+)')|("+Patterns.variableSigil+Patterns.identifierFirstChar+".*)|(\\d+))\\])");return Object.freeze(Object.defineProperties({},{reset:{value:e},restore:{value:t},marshalForSave:{value:n},unmarshalForSave:{value:i},expired:{get:o},turns:{get:s},passages:{get:u},hasPlayed:{value:l},active:{get:d},activeIndex:{get:h},passage:{get:f},variables:{get:p},history:{get:m},length:{get:v},size:{get:y},isEmpty:{value:b},current:{get:w},top:{get:k},bottom:{get:S},index:{value:E},peek:{value:x},has:{value:j},create:{value:C},goTo:{value:T},go:{value:O},deltaEncode:{value:A},deltaDecode:{value:P},initPRNG:{value:_},random:{value:N},clearTemporary:{value:D},temporary:{get:M},getVar:{value:I},setVar:{value:L},restart:{value:function(){return Engine.restart()}},backward:{value:function(){return Engine.backward()}},forward:{value:function(){return Engine.forward()}},display:{value:function(){return Engine.display.apply(Engine,arguments)}},show:{value:function(){return Engine.show.apply(Engine,arguments)}},play:{value:function(){return Engine.play.apply(Engine,arguments)}}}))}(),Scripting=function(){function addAccessibleClickHandler(e,t,r,a,n){if(arguments.length<2)throw new Error("addAccessibleClickHandler insufficient number of parameters");var i=void 0,o=void 0;if("function"==typeof t?(i=t,o={namespace:a,one:!!r}):(i=r,o={namespace:n,one:!!a,selector:t}),"function"!=typeof i)throw new TypeError("addAccessibleClickHandler handler parameter must be a function");return jQuery(e).ariaClick(o,i)}function insertElement(e,t,r,a,n,i){var o=jQuery(document.createElement(t));return r&&o.attr("id",r),a&&o.addClass(a),i&&o.attr("title",i),n&&o.text(n),e&&o.appendTo(e),o[0]}function insertText(e,t){jQuery(e).append(document.createTextNode(t))}function removeChildren(e){jQuery(e).empty()}function removeElement(e){jQuery(e).remove()}function fade(e,t){function r(){i+=.05*n,a(o,Math.easeInOut(i)),(1===n&&i>=1||-1===n&&i<=0)&&(e.style.visibility="in"===t.fade?"visible":"hidden",o.parentNode.replaceChild(e,o),o=null,window.clearInterval(s),t.onComplete&&t.onComplete())}function a(e,t){e.style.zoom=1,e.style.filter="alpha(opacity="+Math.floor(100*t)+")",e.style.opacity=t}var n="in"===t.fade?1:-1,i=void 0,o=e.cloneNode(!0),s=void 0;e.parentNode.replaceChild(o,e),"in"===t.fade?(i=0,o.style.visibility="visible"):i=1,a(o,i),s=window.setInterval(r,25)}function scrollWindowTo(e,t){function r(){l+=n,window.scroll(0,i+u*(s*Math.easeInOut(l))),l>=1&&window.clearInterval(c)}function a(e){for(var t=0;e.offsetParent;)t+=e.offsetTop,e=e.offsetParent;return t}var n=null!=t?Number(t):.1;Number.isNaN(n)||!Number.isFinite(n)||n<0?n=.1:n>1&&(n=1);var i=window.scrollY?window.scrollY:document.body.scrollTop,o=function(e){var t=a(e),r=t+e.offsetHeight,n=window.scrollY?window.scrollY:document.body.scrollTop,i=window.innerHeight?window.innerHeight:document.body.clientHeight,o=n+i;return t>=n&&r>o&&e.offsetHeight<i?t-(i-e.offsetHeight)+20:t}(e),s=Math.abs(i-o),u=i>o?-1:1,l=0,c=void 0;c=window.setInterval(r,25)}function either(){if(0!==arguments.length)return Array.prototype.concat.apply([],arguments).random()}function hasVisited(){if(0===arguments.length)throw new Error("hasVisited called with insufficient parameters");if(State.isEmpty())return!1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=0,a=e.length;r<a;++r)if(!t.includes(e[r]))return!1;return!0}function lastVisited(){if(0===arguments.length)throw new Error("lastVisited called with insufficient parameters");if(State.isEmpty())return-1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=t.length-1,a=State.turns,n=0,i=e.length;n<i&&a>-1;++n){var o=t.lastIndexOf(e[n]);a=Math.min(a,-1===o?-1:r-o)}return a}function passage(){return State.passage}function previous(){var e=State.passages;if(arguments.length>0){var t=Number(arguments[0]);if(!Number.isSafeInteger(t)||t<1)throw new RangeError("previous offset parameter must be a positive integer greater than zero");return e.length>t?e[e.length-1-t]:""}for(var r=e.length-2;r>=0;--r)if(e[r]!==State.passage)return e[r];return""}function random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("random called with insufficient parameters");case 1:e=0,t=Math.trunc(arguments[0]);break;default:e=Math.trunc(arguments[0]),t=Math.trunc(arguments[1])}if(!Number.isInteger(e))throw new Error("random min parameter must be an integer");if(!Number.isInteger(t))throw new Error("random max parameter must be an integer");if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(State.random()*(t-e+1))+e}function randomFloat(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("randomFloat called with insufficient parameters");case 1:e=0,t=Number(arguments[0]);break;default:e=Number(arguments[0]),t=Number(arguments[1])}if(Number.isNaN(e)||!Number.isFinite(e))throw new Error("randomFloat min parameter must be a number");if(Number.isNaN(t)||!Number.isFinite(t))throw new Error("randomFloat max parameter must be a number");if(e>t){var r=[t,e];e=r[0],t=r[1]}return State.random()*(t-e)+e}function tags(){if(0===arguments.length)return Story.get(State.passage).tags.slice(0);for(var e=Array.prototype.concat.apply([],arguments),t=[],r=0,a=e.length;r<a;++r)t=t.concat(Story.get(e[r]).tags);return t}function temporary(){return State.temporary}function time(){return null===Engine.lastPlay?0:Util.now()-Engine.lastPlay}function turns(){return State.turns}function variables(){return State.variables}function visited(){if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],0===arguments.length?[State.passage]:arguments),t=State.passages,r=State.turns,a=0,n=e.length;a<n&&r>0;++a)r=Math.min(r,t.count(e[a]));return r}function visitedTags(){if(0===arguments.length)throw new Error("visitedTags called with insufficient parameters");if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],arguments),t=e.length,r=State.passages,a=new Map,n=0,i=0,o=r.length;i<o;++i){var s=r[i];if(a.has(s))a.get(s)&&++n;else{var u=Story.get(s).tags;if(u.length>0){for(var l=0,c=0;c<t;++c)u.includes(e[c])&&++l;l===t?(++n,a.set(s,!0)):a.set(s,!1)}}}return n}function evalJavaScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,String(code),output)}function evalTwineScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,parse(String(code)),output)}var _ref8=function(){function e(e){return e.reduce(function(e,t){return e=e.then(t)},Promise.resolve())}function t(e){return Util.parseUrl(e).path.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w]+/g,"-").toLocaleLowerCase()}function r(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("script")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"script-imported-"+t(e),type:"text/javascript",src:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}function a(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("link")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"style-imported-"+t(e),rel:"stylesheet",href:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}return{importScripts:r,importStyles:a}}(),importScripts=_ref8.importScripts,importStyles=_ref8.importStyles,parse=function(){function e(e){if(0!==r.lastIndex)throw new RangeError("Scripting.parse last index is non-zero at start");for(var n=e,i=void 0;null!==(i=r.exec(n));)if(i[5]){var o=i[5];if("$"===o||"_"===o)continue;if(a.test(o))o=o[0];else if("is"===o){var s=r.lastIndex,u=n.slice(s);/^\s+not\b/.test(u)&&(n=n.splice(s,u.search(/\S/)),o="isnot")}t.hasOwnProperty(o)&&(n=n.splice(i.index,o.length,t[o]),r.lastIndex+=t[o].length-o.length)}return n}var t=Object.freeze({$:"State.variables.",_:"State.temporary.",to:"=",eq:"==",neq:"!=",is:"===",isnot:"!==",gt:">",gte:">=",lt:"<",lte:"<=",and:"&&",or:"||",not:"!",def:'"undefined" !== typeof',ndef:'"undefined" === typeof'}),r=new RegExp(["(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","([=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}]+)","([^\"'=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}\\s]+)"].join("|"),"g"),a=new RegExp("^"+Patterns.variable);return e}();return Object.freeze(Object.defineProperties({},{parse:{value:parse},evalJavaScript:{value:evalJavaScript},evalTwineScript:{value:evalTwineScript}}))}(),Wikifier=function(){var e=0,t=function(){function t(r,a,n){_classCallCheck(this,t),t.Parser.Profile.isEmpty()&&t.Parser.Profile.compile(),Object.defineProperties(this,{source:{value:String(a)},options:{writable:!0,value:Object.assign({profile:"all"},n)},nextMatch:{writable:!0,value:0},output:{writable:!0,value:null},_rawArgs:{writable:!0,value:""}}),null==r?this.output=document.createDocumentFragment():r.jquery?this.output=r[0]:this.output=r;try{++e,this.subWikify(this.output),1===e&&Config.cleanupWikifierOutput&&convertBreaks(this.output)}finally{--e}}return _createClass(t,[{key:"subWikify",value:function(e,r,a){var n=this.output,i=void 0;this.output=e,null!=a&&"object"===(void 0===a?"undefined":_typeof(a))&&(i=this.options,this.options=Object.assign({},this.options,a));var o=t.Parser.Profile.get(this.options.profile),s=r?new RegExp("(?:"+r+")",this.options.ignoreTerminatorCase?"gim":"gm"):null,u=void 0,l=void 0;do{if(o.parserRegExp.lastIndex=this.nextMatch,s&&(s.lastIndex=this.nextMatch),l=o.parserRegExp.exec(this.source),(u=s?s.exec(this.source):null)&&(!l||u.index<=l.index))return u.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,u.index),this.matchStart=u.index,this.matchLength=u[0].length,this.matchText=u[0],this.nextMatch=s.lastIndex,this.output=n,void(i&&(this.options=i));if(l){l.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,l.index),this.matchStart=l.index,this.matchLength=l[0].length,this.matchText=l[0],this.nextMatch=o.parserRegExp.lastIndex;for(var c=void 0,d=1,h=l.length;d<h;++d)if(l[d]){c=d-1;break}if(o.parsers[c].handler(this),null!=TempState.break)break}}while(u||l);null==TempState.break?this.nextMatch<this.source.length&&(this.outputText(this.output,this.nextMatch,this.source.length),this.nextMatch=this.source.length):this.output.lastChild&&this.output.lastChild.nodeType===Node.ELEMENT_NODE&&"BR"===this.output.lastChild.nodeName.toUpperCase()&&jQuery(this.output.lastChild).remove(),this.output=n,i&&(this.options=i)}},{key:"outputText",value:function(e,t,r){jQuery(e).append(document.createTextNode(this.source.substring(t,r)))}},{key:"rawArgs",value:function(){return this._rawArgs}},{key:"fullArgs",value:function(){return Scripting.parse(this._rawArgs)}}],[{key:"wikifyEval",value:function(e){var r=document.createDocumentFragment();new t(r,e);var a=r.querySelector(".error");if(null!==a)throw new Error(a.textContent.replace(errorPrologRegExp,""));return r}},{key:"createInternalLink",value:function(e,t,r,a){var n=jQuery(document.createElement("a"));return null!=t&&(n.attr("data-passage",t),Story.has(t)?(n.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&n.addClass("link-visited")):n.addClass("link-broken"),n.ariaClick({one:!0},function(){"function"==typeof a&&a(),Engine.play(t)})),r&&n.append(document.createTextNode(r)),e&&n.appendTo(e),n[0]}},{key:"createExternalLink",value:function(e,t,r){var a=jQuery(document.createElement("a")).attr("target","_blank").addClass("link-external").text(r).appendTo(e);return null!=t&&a.attr({href:t,tabindex:0}),a[0]}},{key:"isExternalLink",value:function(e){return!Story.has(e)&&(new RegExp("^"+Patterns.url,"gim").test(e)||/[\/.?#]/.test(e))}}]),t}();return Object.defineProperty(t,"Parser",{value:function(){function e(){return d}function t(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("Wikifier.Parser.add parser parameter must be an object");if(!e.hasOwnProperty("name"))throw new Error('parser object missing required "name" property');if("string"!=typeof e.name)throw new Error('parser object "name" property must be a string');if(!e.hasOwnProperty("match"))throw new Error('parser object missing required "match" property');if("string"!=typeof e.match)throw new Error('parser object "match" property must be a string');if(!e.hasOwnProperty("handler"))throw new Error('parser object missing required "handler" property');if("function"!=typeof e.handler)throw new Error('parser object "handler" property must be a function');if(e.hasOwnProperty("profiles")&&!Array.isArray(e.profiles))throw new Error('parser object "profiles" property must be an array');if(n(e.name))throw new Error('cannot clobber existing parser "'+e.name+'"');d.push(e)}function r(e){var t=d.find(function(t){return t.name===e});t&&d.delete(t)}function a(){return 0===d.length}function n(e){return!!d.find(function(t){return t.name===e})}function i(e){return d.find(function(t){return t.name===e})||null}function o(){return h}function s(){var e=d,t=e.filter(function(e){return!Array.isArray(e.profiles)||e.profiles.includes("core")});return h=Object.freeze({all:{parsers:e,parserRegExp:new RegExp(e.map(function(e){return"("+e.match+")"}).join("|"),"gm")},core:{parsers:t,parserRegExp:new RegExp(t.map(function(e){return"("+e.match+")"}).join("|"),"gm")}})}function u(){return"object"!==(void 0===h?"undefined":_typeof(h))||0===Object.keys(h).length}function l(e){if("object"!==(void 0===h?"undefined":_typeof(h))||!h.hasOwnProperty(e))throw new Error('nonexistent parser profile "'+e+'"');return h[e]}function c(e){return"object"===(void 0===h?"undefined":_typeof(h))&&h.hasOwnProperty(e)}var d=[],h=void 0;return Object.freeze(Object.defineProperties({},{parsers:{get:e},add:{value:t},delete:{value:r},isEmpty:{value:a},has:{value:n},get:{value:i},Profile:{value:Object.freeze(Object.defineProperties({},{profiles:{get:o},compile:{value:s},isEmpty:{value:u},has:{value:c},get:{value:l}}))}}))}()}),Object.defineProperties(t,{helpers:{value:{}},getValue:{value:State.getVar},setValue:{value:State.setVar},parse:{value:Scripting.parse},evalExpression:{value:Scripting.evalTwineScript},evalStatements:{value:Scripting.evalTwineScript},textPrimitives:{value:Patterns}}),Object.defineProperties(t.helpers,{inlineCss:{value:function(){function e(e){var r={classes:[],id:"",styles:{}},a=void 0;do{t.lastIndex=e.nextMatch;var n=t.exec(e.source);a=n&&n.index===e.nextMatch,a&&(n[1]?r.styles[Util.fromCssProperty(n[1])]=n[2].trim():n[3]?r.styles[Util.fromCssProperty(n[3])]=n[4].trim():n[5]?r.classes=r.classes.concat(n[5].slice(1).split(/\./)):n[6]&&(r.id=n[6].slice(1).split(/#/).pop()),e.nextMatch=t.lastIndex)}while(a);return r}var t=new RegExp(Patterns.inlineCss,"gm");return e}()},evalText:{value:function(e){var t=void 0;try{switch(t=Scripting.evalTwineScript(e),void 0===t?"undefined":_typeof(t)){case"string":""===t.trim()&&(t=e);break;case"number":t=String(t);break;default:t=e}}catch(r){t=e}return t}},evalPassageId:{value:function(e){return null==e||Story.has(e)?e:t.helpers.evalText(e)}},hasBlockContext:{value:function(e){for(var t="function"==typeof window.getComputedStyle,r=e.length-1;r>=0;--r){var a=e[r];switch(a.nodeType){case Node.ELEMENT_NODE:var n=a.nodeName.toUpperCase();if("BR"===n)return!0;var i=t?window.getComputedStyle(a,null):a.currentStyle;if(i&&i.display){if("none"===i.display)continue;return"block"===i.display}switch(n){case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":return!0}return!1;case Node.COMMENT_NODE:continue;default:return!1}}return!0}},createShadowSetterCallback:{value:function(){function e(){if(!n&&!(n=t.Parser.get("macro")))throw new Error('cannot find "macro" parser');return n}function r(){for(var t=n||e(),r=new Set,a=t.context;null!==a;a=a.parent)a._shadows&&a._shadows.forEach(function(e){return r.add(e)});return[].concat(_toConsumableArray(r))}function a(e){var t={};return r().forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;t[e]=a[r]}),function(){var r=Object.keys(t),a=r.length>0?{}:null;try{return r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;n.hasOwnProperty(r)&&(a[r]=n[r]),n[r]=t[e]}),Scripting.evalJavaScript(e)}finally{r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;t[e]=n[r],a.hasOwnProperty(r)?n[r]=a[r]:delete n[r]})}}}var n=null;return a}()},parseSquareBracketedMarkup:{value:function(e){function t(){return c>=e.source.length?s:e.source[c]}function r(t){return t<1||c+t>=e.source.length?s:e.source[c+t]}function a(){return{error:String.format.apply(String,arguments),pos:c}}function n(){l=c}function i(t){var r=e.source.slice(l,c).trim();if(""===r)throw new Error("malformed wiki "+(f?"link":"image")+", empty "+t+" component");"link"===t&&"~"===r[0]?(u.forceInternal=!0,u.link=r.slice(1)):u[t]=r,l=c}function o(e){++c;e:for(;;){switch(t()){case"\\":++c;var r=t();if(r!==s&&"\n"!==r)break;case s:case"\n":return s;case e:break e}++c}return c}var s=-1,u={},l=e.matchStart,c=l+1,d=void 0,h=void 0,f=void 0,p=void 0;if("["===(p=t()))f=u.isLink=!0;else{switch(f=!1,p){case"<":u.align="left",++c;break;case">":u.align="right",++c}if(!/^[Ii][Mm][Gg]$/.test(e.source.slice(c,c+3)))return a("malformed square-bracketed wiki markup");c+=3,u.isImage=!0}if("["!==function(){return c>=e.source.length?s:e.source[c++]}())return a("malformed wiki {0}",f?"link":"image");d=1,h=0,n();try{e:for(;;){switch(p=t()){case s:case"\n":return a("unterminated wiki {0}",f?"link":"image");case'"':if(o(p)===s)return a("unterminated double quoted string in wiki {0}",f?"link":"image");break;case"'":if((4===h||3===h&&f)&&o(p)===s)return a("unterminated single quoted string in wiki {0}",f?"link":"image");break;case"|":0===h&&(i(f?"text":"title"),++l,h=1);break;case"-":0===h&&">"===r(1)&&(i(f?"text":"title"),++c,l+=2,h=1);break;case"<":0===h&&"-"===r(1)&&(i(f?"link":"source"),++c,l+=2,h=2);break;case"[":if(-1===h)return a("unexpected left square bracket '['");++d,1===d&&(n(),++l);break;case"]":if(0===--d){switch(h){case 0:case 1:i(f?"link":"source"),h=3;break;case 2:i(f?"text":"title"),h=3;break;case 3:f?(i("setter"),h=-1):(i("link"),h=4);break;case 4:i("setter"),h=-1}if(++c,"]"===t()){++c;break e}--c}}++c}}catch(e){return a(e.message)}return u.pos=c,u}}}),t}();!function(){function e(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createDocumentFragment()).append(t[1]).appendTo(e.output))}Wikifier.Parser.add({name:"quoteByBlock",profiles:["block"],match:"^<<<\\n",terminator:"^<<<\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("blockquote")).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"quoteByLine",profiles:["block"],match:"^>+",lookahead:/^>+/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=[e.output],r=0,a=e.matchLength,n=void 0,i=void 0;do{if(a>r)for(i=r;i<a;++i)t.push(jQuery(document.createElement("blockquote")).appendTo(t[t.length-1]).get(0));else if(a<r)for(i=r;i>a;--i)t.pop();r=a,e.subWikify(t[t.length-1],this.terminator),jQuery(document.createElement("br")).appendTo(t[t.length-1]),this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);n=o&&o.index===e.nextMatch,n&&(a=o[0].length,e.nextMatch+=o[0].length)}while(n)}}),Wikifier.Parser.add({name:"macro",profiles:["core"],match:"<<",lookahead:new RegExp("<<(/?"+Patterns.macroName+")(?:\\s*)((?:(?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)|[^>]|(?:>(?!>)))*)>>","gm"),argsPattern:["(``)","`((?:\\\\.|[^`\\\\])+)`","(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","(\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)","([^`\"'\\s]+)","(`|\"|')"].join("|"),working:{source:"",name:"",arguments:"",index:0},context:null,handler:function(e){var t=this.lookahead.lastIndex=e.matchStart;if(this.parseTag(e)){var r=e.nextMatch,a=this.working.name,n=this.working.arguments,i=void 0;try{if(!(i=Macro.get(a))){if(Macro.tags.has(a)){var o=Macro.tags.get(a);return throwError(e.output,"child tag <<"+a+">> was found outside of a call to its parent macro"+(1===o.length?"":"s")+" <<"+o.join(">>, <<")+">>",e.source.slice(t,e.nextMatch))}return throwError(e.output,"macro <<"+a+">> does not exist",e.source.slice(t,e.nextMatch))}var s=null;if(i.hasOwnProperty("tags")&&!(s=this.parseBody(e,i)))return e.nextMatch=r,throwError(e.output,"cannot find a closing tag for macro <<"+a+">>",e.source.slice(t,e.nextMatch)+"…");if("function"!=typeof i.handler)return throwError(e.output,"macro <<"+a+">> handler function "+(i.hasOwnProperty("handler")?"is not a function":"does not exist"),e.source.slice(t,e.nextMatch));var u=s?s[0].args:this.createArgs(n,i.hasOwnProperty("skipArgs")&&!!i.skipArgs||i.hasOwnProperty("skipArg0")&&!!i.skipArg0);if(i.hasOwnProperty("_MACRO_API")){this.context=new MacroContext({macro:i,name:a,args:u,payload:s,source:e.source.slice(t,e.nextMatch),parent:this.context,parser:e});try{i.handler.call(this.context)}finally{this.context=this.context.parent}}else{var l=e._rawArgs;e._rawArgs=n;try{i.handler(e.output,a,u,e,s)}finally{e._rawArgs=l}}}catch(r){return throwError(e.output,"cannot execute "+(i&&i.isWidget?"widget":"macro")+" <<"+a+">>: "+r.message,e.source.slice(t,e.nextMatch))}finally{this.working.source="",this.working.name="",this.working.arguments="",this.working.index=0}}else e.outputText(e.output,e.matchStart,e.nextMatch)},parseTag:function(e){var t=this.lookahead.exec(e.source);return!(!t||t.index!==e.matchStart||!t[1])&&(e.nextMatch=this.lookahead.lastIndex,this.working.source=e.source.slice(t.index,this.lookahead.lastIndex),this.working.name=t[1],this.working.arguments=t[2],this.working.index=t.index,!0)},parseBody:function(e,t){for(var r=this.working.name,a="/"+r,n="end"+r,i=!!Array.isArray(t.tags)&&t.tags,o=[],s=t.hasOwnProperty("skipArgs")&&t.skipArgs,u=t.hasOwnProperty("skipArg0")&&t.skipArg0,l=-1,c=1,d=this.working.source,h=this.working.name,f=this.working.arguments,p=e.nextMatch;-1!==(e.matchStart=e.source.indexOf(this.match,e.nextMatch));)if(this.parseTag(e)){var g=this.working.source,m=this.working.name,v=this.working.arguments,y=this.working.index,b=e.nextMatch;switch(m){case r:++c;break;case n:case a:--c;break;default:if(1===c&&i)for(var w=0,k=i.length;w<k;++w)m===i[w]&&(o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),d=g,h=m,f=v,p=b)}if(0===c){o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),l=b;break}}else this.lookahead.lastIndex=e.nextMatch=e.matchStart+this.match.length;return-1!==l?(e.nextMatch=l,o):null},createArgs:function(e,t){var r=t?[]:this.parseArgs(e);return Object.defineProperties(r,{raw:{value:e},full:{value:Scripting.parse(e)}}),r},parseArgs:function(e){ +macros:{back:{},return:{}}},l10nStrings={identity:"game",aborting:"Aborting",cancel:"Cancel",close:"Close",ok:"OK",errorTitle:"Error",errorToggle:"Toggle the error view",errorNonexistentPassage:'the passage "{passage}" does not exist',errorSaveMissingData:"save is missing required data. Either the loaded file is not a save or the save has become corrupted",errorSaveIdMismatch:"save is from the wrong {identity}",_warningIntroLacking:"Your browser either lacks or has disabled",_warningOutroDegraded:", so this {identity} is running in a degraded mode. You may be able to continue, however, some parts may not work properly.",warningNoWebStorage:"{_warningIntroLacking} the Web Storage API{_warningOutroDegraded}",warningDegraded:"{_warningIntroLacking} some of the capabilities required by this {identity}{_warningOutroDegraded}",debugBarToggle:"Toggle the debug bar",debugBarNoWatches:"— no watches set —",debugBarAddWatch:"Add watch",debugBarDeleteWatch:"Delete watch",debugBarWatchAll:"Watch all",debugBarWatchNone:"Delete all",debugBarLabelAdd:"Add",debugBarLabelWatch:"Watch",debugBarLabelTurn:"Turn",debugBarLabelViews:"Views",debugBarViewsToggle:"Toggle the debug views",debugBarWatchToggle:"Toggle the watch panel",uiBarToggle:"Toggle the UI bar",uiBarBackward:"Go backward within the {identity} history",uiBarForward:"Go forward within the {identity} history",uiBarJumpto:"Jump to a specific point within the {identity} history",jumptoTitle:"Jump To",jumptoTurn:"Turn",jumptoUnavailable:"No jump points currently available…",savesTitle:"Saves",savesDisallowed:"Saving has been disallowed on this passage.",savesIncapable:"{_warningIntroLacking} the capabilities required to support saves, so saves have been disabled for this session.",savesLabelAuto:"Autosave",savesLabelDelete:"Delete",savesLabelExport:"Save to Disk…",savesLabelImport:"Load from Disk…",savesLabelLoad:"Load",savesLabelClear:"Delete All",savesLabelSave:"Save",savesLabelSlot:"Slot",savesUnavailable:"No save slots found…",savesUnknownDate:"unknown",settingsTitle:"Settings",settingsOff:"Off",settingsOn:"On",settingsReset:"Reset to Defaults",restartTitle:"Restart",restartPrompt:"Are you sure that you want to restart? Unsaved progress will be lost.",shareTitle:"Share",autoloadTitle:"Autoload",autoloadCancel:"Go to start",autoloadOk:"Load autosave",autoloadPrompt:"An autosave exists. Load it now or go to the start?",macroBackText:"Back",macroReturnText:"Return"},Config=function(){function e(){throw new Error("Config.history.mode has been deprecated and is no longer used by SugarCube, please remove it from your code")}function t(){throw new Error("Config.history.tracking has been deprecated, use Config.history.maxStates instead")}return Object.seal({debug:!1,addVisitedLinkClass:!1,cleanupWikifierOutput:!1,loadDelay:0,history:Object.seal({controls:!0,maxStates:100,get mode(){e()},set mode(t){e()},get tracking(){t()},set tracking(e){t()}}),macros:Object.seal({ifAssignmentError:!0,maxLoopIterations:1e3}),navigation:Object.seal({override:undefined}),passages:Object.seal({descriptions:undefined,displayTitles:!1,nobr:!1,start:undefined,transitionOut:undefined}),saves:Object.seal({autoload:undefined,autosave:undefined,id:"untitled-story",isAllowed:undefined,onLoad:undefined,onSave:undefined,slots:8,version:undefined}),ui:Object.seal({stowBarInitially:800,updateStoryElements:!0}),transitionEndEventName:function(){for(var e=new Map([["transition","transitionend"],["MSTransition","msTransitionEnd"],["WebkitTransition","webkitTransitionEnd"],["MozTransition","transitionend"]]),t=[].concat(_toConsumableArray(e.keys())),r=document.createElement("div"),a=0;a<t.length;++a)if(r.style[t[a]]!==undefined)return e.get(t[a]);return""}()})}(),State=function(){function e(){session.delete("state"),W=[],R=c(),B=-1,V=[],F=null===F?null:new PRNGWrapper(F.seed,!1)}function t(){if(session.has("state")){var e=session.get("state");return null!=e&&(a(e),!0)}return!1}function r(e){var t={index:B};return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[]),null!==F&&(t.seed=F.seed),t}function a(e,t){if(null==e)throw new Error("state object is null or undefined");if(!e.hasOwnProperty(t?"history":"delta")||0===e[t?"history":"delta"].length)throw new Error("state object has no history or history is empty");if(!e.hasOwnProperty("index"))throw new Error("state object has no index");if(null!==F&&!e.hasOwnProperty("seed"))throw new Error("state object has no seed, but PRNG is enabled");if(null===F&&e.hasOwnProperty("seed"))throw new Error("state object has seed, but PRNG is disabled");W=t?clone(e.history):P(e.delta),B=e.index,V=e.hasOwnProperty("expired")?[].concat(_toConsumableArray(e.expired)):[],e.hasOwnProperty("seed")&&(F.seed=e.seed),g(B)}function n(){return r(!0)}function i(e){return a(e,!0)}function o(){return V}function s(){return V.length+v()}function u(){return V.concat(W.slice(0,v()).map(function(e){return e.title}))}function l(e){return null!=e&&""!==e&&(!!V.includes(e)||!!W.slice(0,v()).some(function(t){return t.title===e}))}function c(e,t){return{title:null==e?"":String(e),variables:null==t?{}:clone(t)}}function d(){return R}function h(){return B}function f(){return R.title}function p(){return R.variables}function g(e){if(null==e)throw new Error("moment activation attempted with null or undefined");switch(void 0===e?"undefined":_typeof(e)){case"object":R=clone(e);break;case"number":if(b())throw new Error("moment activation attempted with index on empty history");if(e<0||e>=y())throw new RangeError("moment activation attempted with out-of-bounds index; need [0, "+(y()-1)+"], got "+e);R=clone(W[e]);break;default:throw new TypeError('moment activation attempted with a "'+(void 0===e?"undefined":_typeof(e))+'"; must be an object or valid history stack index')}return null!==F&&(F=PRNGWrapper.unmarshal({seed:F.seed,pull:R.pull})),session.set("state",r()),jQuery.event.trigger(":historyupdate"),R}function m(){return W}function v(){return B+1}function y(){return W.length}function b(){return 0===W.length}function w(){return W.length>0?W[B]:null}function k(){return W.length>0?W[W.length-1]:null}function S(){return W.length>0?W[0]:null}function E(e){return b()||e<0||e>B?null:W[e]}function x(e){if(b())return null;var t=1+(e?Math.abs(e):0);return t>v()?null:W[v()-t]}function j(e){if(b()||null==e||""===e)return!1;for(var t=B;t>=0;--t)if(W[t].title===e)return!0;return!1}function C(e){if(v()<y()&&W.splice(v(),y()-v()),W.push(c(e,R.variables)),F&&(k().pull=F.pull),Config.history.maxStates>0)for(;y()>Config.history.maxStates;)V.push(W.shift().title);return B=y()-1,g(B),v()}function T(e){return!(null==e||e<0||e>=y()||e===B)&&(B=e,g(B),!0)}function O(e){return null!=e&&0!==e&&T(B+e)}function A(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.diff(e[r-1],e[r]));return t}function P(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.patch(t[r-1],e[r]));return t}function _(e,t){if(!b()){var r=void 0;throw r="a script-tagged passage",new Error("State.initPRNG must be called during initialization, within either "+r+" or the StoryInit special passage")}F=new PRNGWrapper(e,t),R.pull=F.pull}function N(){return F?F.random():Math.random()}function D(){U={},TempVariables=U}function M(){return U}function I(e){var t=Q(e);if(null!==t){for(var r=t.names,a=t.store,n=0,i=r.length;n<i;++n){if(void 0===a[r[n]])return;a=a[r[n]]}return a}}function L(e,t){var r=Q(e);if(null===r)return!1;for(var a=r.names,n=a.pop(),i=r.store,o=0,s=a.length;o<s;++o){if(void 0===i[a[o]])return!1;i=i[a[o]]}return i[n]=t,!0}function Q(e){for(var t={store:"$"===e[0]?State.variables:State.temporary,names:[]},r=e,a=void 0;null!==(a=z.exec(r));)r=r.slice(a[0].length),a[1]?t.names.push(a[1]):a[2]?t.names.push(a[2]):a[3]?t.names.push(a[3]):a[4]?t.names.push(a[4]):a[5]?t.names.push(I(a[5])):a[6]&&t.names.push(Number(a[6]));return""===r?t:null}var W=[],R=c(),B=-1,V=[],F=null,U={},z=new RegExp("^(?:"+Patterns.variableSigil+"("+Patterns.identifier+")|\\.("+Patterns.identifier+")|\\[(?:(?:\"((?:\\\\.|[^\"\\\\])+)\")|(?:'((?:\\\\.|[^'\\\\])+)')|("+Patterns.variableSigil+Patterns.identifierFirstChar+".*)|(\\d+))\\])");return Object.freeze(Object.defineProperties({},{reset:{value:e},restore:{value:t},marshalForSave:{value:n},unmarshalForSave:{value:i},expired:{get:o},turns:{get:s},passages:{get:u},hasPlayed:{value:l},active:{get:d},activeIndex:{get:h},passage:{get:f},variables:{get:p},history:{get:m},length:{get:v},size:{get:y},isEmpty:{value:b},current:{get:w},top:{get:k},bottom:{get:S},index:{value:E},peek:{value:x},has:{value:j},create:{value:C},goTo:{value:T},go:{value:O},deltaEncode:{value:A},deltaDecode:{value:P},initPRNG:{value:_},random:{value:N},clearTemporary:{value:D},temporary:{get:M},getVar:{value:I},setVar:{value:L},restart:{value:function(){return Engine.restart()}},backward:{value:function(){return Engine.backward()}},forward:{value:function(){return Engine.forward()}},display:{value:function(){return Engine.display.apply(Engine,arguments)}},show:{value:function(){return Engine.show.apply(Engine,arguments)}},play:{value:function(){return Engine.play.apply(Engine,arguments)}}}))}(),Scripting=function(){function addAccessibleClickHandler(e,t,r,a,n){if(arguments.length<2)throw new Error("addAccessibleClickHandler insufficient number of parameters");var i=void 0,o=void 0;if("function"==typeof t?(i=t,o={namespace:a,one:!!r}):(i=r,o={namespace:n,one:!!a,selector:t}),"function"!=typeof i)throw new TypeError("addAccessibleClickHandler handler parameter must be a function");return jQuery(e).ariaClick(o,i)}function insertElement(e,t,r,a,n,i){var o=jQuery(document.createElement(t));return r&&o.attr("id",r),a&&o.addClass(a),i&&o.attr("title",i),n&&o.text(n),e&&o.appendTo(e),o[0]}function insertText(e,t){jQuery(e).append(document.createTextNode(t))}function removeChildren(e){jQuery(e).empty()}function removeElement(e){jQuery(e).remove()}function fade(e,t){function r(){i+=.05*n,a(o,Math.easeInOut(i)),(1===n&&i>=1||-1===n&&i<=0)&&(e.style.visibility="in"===t.fade?"visible":"hidden",o.parentNode.replaceChild(e,o),o=null,window.clearInterval(s),t.onComplete&&t.onComplete())}function a(e,t){e.style.zoom=1,e.style.filter="alpha(opacity="+Math.floor(100*t)+")",e.style.opacity=t}var n="in"===t.fade?1:-1,i=void 0,o=e.cloneNode(!0),s=void 0;e.parentNode.replaceChild(o,e),"in"===t.fade?(i=0,o.style.visibility="visible"):i=1,a(o,i),s=window.setInterval(r,25)}function scrollWindowTo(e,t){function r(){l+=n,window.scroll(0,i+u*(s*Math.easeInOut(l))),l>=1&&window.clearInterval(c)}function a(e){for(var t=0;e.offsetParent;)t+=e.offsetTop,e=e.offsetParent;return t}var n=null!=t?Number(t):.1;Number.isNaN(n)||!Number.isFinite(n)||n<0?n=.1:n>1&&(n=1);var i=window.scrollY?window.scrollY:document.body.scrollTop,o=function(e){var t=a(e),r=t+e.offsetHeight,n=window.scrollY?window.scrollY:document.body.scrollTop,i=window.innerHeight?window.innerHeight:document.body.clientHeight,o=n+i;return t>=n&&r>o&&e.offsetHeight<i?t-(i-e.offsetHeight)+20:t}(e),s=Math.abs(i-o),u=i>o?-1:1,l=0,c=void 0;c=window.setInterval(r,25)}function either(){if(0!==arguments.length)return Array.prototype.concat.apply([],arguments).random()}function hasVisited(){if(0===arguments.length)throw new Error("hasVisited called with insufficient parameters");if(State.isEmpty())return!1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=0,a=e.length;r<a;++r)if(!t.includes(e[r]))return!1;return!0}function lastVisited(){if(0===arguments.length)throw new Error("lastVisited called with insufficient parameters");if(State.isEmpty())return-1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=t.length-1,a=State.turns,n=0,i=e.length;n<i&&a>-1;++n){var o=t.lastIndexOf(e[n]);a=Math.min(a,-1===o?-1:r-o)}return a}function passage(){return State.passage}function previous(){var e=State.passages;if(arguments.length>0){var t=Number(arguments[0]);if(!Number.isSafeInteger(t)||t<1)throw new RangeError("previous offset parameter must be a positive integer greater than zero");return e.length>t?e[e.length-1-t]:""}for(var r=e.length-2;r>=0;--r)if(e[r]!==State.passage)return e[r];return""}function random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("random called with insufficient parameters");case 1:e=0,t=Math.trunc(arguments[0]);break;default:e=Math.trunc(arguments[0]),t=Math.trunc(arguments[1])}if(!Number.isInteger(e))throw new Error("random min parameter must be an integer");if(!Number.isInteger(t))throw new Error("random max parameter must be an integer");if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(State.random()*(t-e+1))+e}function randomFloat(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("randomFloat called with insufficient parameters");case 1:e=0,t=Number(arguments[0]);break;default:e=Number(arguments[0]),t=Number(arguments[1])}if(Number.isNaN(e)||!Number.isFinite(e))throw new Error("randomFloat min parameter must be a number");if(Number.isNaN(t)||!Number.isFinite(t))throw new Error("randomFloat max parameter must be a number");if(e>t){var r=[t,e];e=r[0],t=r[1]}return State.random()*(t-e)+e}function tags(){if(0===arguments.length)return Story.get(State.passage).tags.slice(0);for(var e=Array.prototype.concat.apply([],arguments),t=[],r=0,a=e.length;r<a;++r)t=t.concat(Story.get(e[r]).tags);return t}function temporary(){return State.temporary}function time(){return null===Engine.lastPlay?0:Util.now()-Engine.lastPlay}function turns(){return State.turns}function variables(){return State.variables}function visited(){if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],0===arguments.length?[State.passage]:arguments),t=State.passages,r=State.turns,a=0,n=e.length;a<n&&r>0;++a)r=Math.min(r,t.count(e[a]));return r}function visitedTags(){if(0===arguments.length)throw new Error("visitedTags called with insufficient parameters");if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],arguments),t=e.length,r=State.passages,a=new Map,n=0,i=0,o=r.length;i<o;++i){var s=r[i];if(a.has(s))a.get(s)&&++n;else{var u=Story.get(s).tags;if(u.length>0){for(var l=0,c=0;c<t;++c)u.includes(e[c])&&++l;l===t?(++n,a.set(s,!0)):a.set(s,!1)}}}return n}function evalJavaScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,String(code),output)}function evalTwineScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,parse(String(code)),output)}var _ref8=function(){function e(e){return e.reduce(function(e,t){return e=e.then(t)},Promise.resolve())}function t(e){return Util.parseUrl(e).path.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w]+/g,"-").toLocaleLowerCase()}function r(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("script")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"script-imported-"+t(e),type:"text/javascript",src:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}function a(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("link")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"style-imported-"+t(e),rel:"stylesheet",href:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}return{importScripts:r,importStyles:a}}(),importScripts=_ref8.importScripts,importStyles=_ref8.importStyles,parse=function(){function e(e){if(0!==r.lastIndex)throw new RangeError("Scripting.parse last index is non-zero at start");for(var n=e,i=void 0;null!==(i=r.exec(n));)if(i[5]){var o=i[5];if("$"===o||"_"===o)continue;if(a.test(o))o=o[0];else if("is"===o){var s=r.lastIndex,u=n.slice(s);/^\s+not\b/.test(u)&&(n=n.splice(s,u.search(/\S/)),o="isnot")}t.hasOwnProperty(o)&&(n=n.splice(i.index,o.length,t[o]),r.lastIndex+=t[o].length-o.length)}return n}var t=Object.freeze({$:"State.variables.",_:"State.temporary.",to:"=",eq:"==",neq:"!=",is:"===",isnot:"!==",gt:">",gte:">=",lt:"<",lte:"<=",and:"&&",or:"||",not:"!",def:'"undefined" !== typeof',ndef:'"undefined" === typeof'}),r=new RegExp(["(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","([=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}]+)","([^\"'=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}\\s]+)"].join("|"),"g"),a=new RegExp("^"+Patterns.variable);return e}();return Object.freeze(Object.defineProperties({},{parse:{value:parse},evalJavaScript:{value:evalJavaScript},evalTwineScript:{value:evalTwineScript}}))}(),Wikifier=function(){var e=0,t=function(){function t(r,a,n){_classCallCheck(this,t),t.Parser.Profile.isEmpty()&&t.Parser.Profile.compile(),Object.defineProperties(this,{source:{value:String(a)},options:{writable:!0,value:Object.assign({profile:"all"},n)},nextMatch:{writable:!0,value:0},output:{writable:!0,value:null},_rawArgs:{writable:!0,value:""}}),null==r?this.output=document.createDocumentFragment():r.jquery?this.output=r[0]:this.output=r;try{++e,this.subWikify(this.output),1===e&&Config.cleanupWikifierOutput&&convertBreaks(this.output)}finally{--e}}return _createClass(t,[{key:"subWikify",value:function(e,r,a){var n=this.output,i=void 0;this.output=e,null!=a&&"object"===(void 0===a?"undefined":_typeof(a))&&(i=this.options,this.options=Object.assign({},this.options,a));var o=t.Parser.Profile.get(this.options.profile),s=r?new RegExp("(?:"+r+")",this.options.ignoreTerminatorCase?"gim":"gm"):null,u=void 0,l=void 0;do{if(o.parserRegExp.lastIndex=this.nextMatch,s&&(s.lastIndex=this.nextMatch),l=o.parserRegExp.exec(this.source),(u=s?s.exec(this.source):null)&&(!l||u.index<=l.index))return u.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,u.index),this.matchStart=u.index,this.matchLength=u[0].length,this.matchText=u[0],this.nextMatch=s.lastIndex,this.output=n,void(i&&(this.options=i));if(l){l.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,l.index),this.matchStart=l.index,this.matchLength=l[0].length,this.matchText=l[0],this.nextMatch=o.parserRegExp.lastIndex;for(var c=void 0,d=1,h=l.length;d<h;++d)if(l[d]){c=d-1;break}if(o.parsers[c].handler(this),null!=TempState.break)break}}while(u||l);null==TempState.break?this.nextMatch<this.source.length&&(this.outputText(this.output,this.nextMatch,this.source.length),this.nextMatch=this.source.length):this.output.lastChild&&this.output.lastChild.nodeType===Node.ELEMENT_NODE&&"BR"===this.output.lastChild.nodeName.toUpperCase()&&jQuery(this.output.lastChild).remove(),this.output=n,i&&(this.options=i)}},{key:"outputText",value:function(e,t,r){jQuery(e).append(document.createTextNode(this.source.substring(t,r)))}},{key:"rawArgs",value:function(){return this._rawArgs}},{key:"fullArgs",value:function(){return Scripting.parse(this._rawArgs)}}],[{key:"wikifyEval",value:function(e){var r=document.createDocumentFragment();new t(r,e);var a=r.querySelector(".error");if(null!==a)throw new Error(a.textContent.replace(errorPrologRegExp,""));return r}},{key:"createInternalLink",value:function(e,t,r,a){var n=jQuery(document.createElement("a"));return null!=t&&(n.attr("data-passage",t),Story.has(t)?(n.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&n.addClass("link-visited")):n.addClass("link-broken"),n.ariaClick({one:!0},function(){"function"==typeof a&&a(),Engine.play(t)})),r&&n.append(document.createTextNode(r)),e&&n.appendTo(e),n[0]}},{key:"createExternalLink",value:function(e,t,r){var a=jQuery(document.createElement("a")).attr("target","_blank").addClass("link-external").text(r).appendTo(e);return null!=t&&a.attr({href:t,tabindex:0}),a[0]}},{key:"isExternalLink",value:function(e){return!Story.has(e)&&(new RegExp("^"+Patterns.url,"gim").test(e)||/[\/.?#]/.test(e))}}]),t}();return Object.defineProperty(t,"Parser",{value:function(){function e(){return d}function t(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("Wikifier.Parser.add parser parameter must be an object");if(!e.hasOwnProperty("name"))throw new Error('parser object missing required "name" property');if("string"!=typeof e.name)throw new Error('parser object "name" property must be a string');if(!e.hasOwnProperty("match"))throw new Error('parser object missing required "match" property');if("string"!=typeof e.match)throw new Error('parser object "match" property must be a string');if(!e.hasOwnProperty("handler"))throw new Error('parser object missing required "handler" property');if("function"!=typeof e.handler)throw new Error('parser object "handler" property must be a function');if(e.hasOwnProperty("profiles")&&!Array.isArray(e.profiles))throw new Error('parser object "profiles" property must be an array');if(n(e.name))throw new Error('cannot clobber existing parser "'+e.name+'"');d.push(e)}function r(e){var t=d.find(function(t){return t.name===e});t&&d.delete(t)}function a(){return 0===d.length}function n(e){return!!d.find(function(t){return t.name===e})}function i(e){return d.find(function(t){return t.name===e})||null}function o(){return h}function s(){var e=d,t=e.filter(function(e){return!Array.isArray(e.profiles)||e.profiles.includes("core")});return h=Object.freeze({all:{parsers:e,parserRegExp:new RegExp(e.map(function(e){return"("+e.match+")"}).join("|"),"gm")},core:{parsers:t,parserRegExp:new RegExp(t.map(function(e){return"("+e.match+")"}).join("|"),"gm")}})}function u(){return"object"!==(void 0===h?"undefined":_typeof(h))||0===Object.keys(h).length}function l(e){if("object"!==(void 0===h?"undefined":_typeof(h))||!h.hasOwnProperty(e))throw new Error('nonexistent parser profile "'+e+'"');return h[e]}function c(e){return"object"===(void 0===h?"undefined":_typeof(h))&&h.hasOwnProperty(e)}var d=[],h=void 0;return Object.freeze(Object.defineProperties({},{parsers:{get:e},add:{value:t},delete:{value:r},isEmpty:{value:a},has:{value:n},get:{value:i},Profile:{value:Object.freeze(Object.defineProperties({},{profiles:{get:o},compile:{value:s},isEmpty:{value:u},has:{value:c},get:{value:l}}))}}))}()}),Object.defineProperties(t,{helpers:{value:{}},getValue:{value:State.getVar},setValue:{value:State.setVar},parse:{value:Scripting.parse},evalExpression:{value:Scripting.evalTwineScript},evalStatements:{value:Scripting.evalTwineScript},textPrimitives:{value:Patterns}}),Object.defineProperties(t.helpers,{inlineCss:{value:function(){function e(e){var r={classes:[],id:"",styles:{}},a=void 0;do{t.lastIndex=e.nextMatch;var n=t.exec(e.source);a=n&&n.index===e.nextMatch,a&&(n[1]?r.styles[Util.fromCssProperty(n[1])]=n[2].trim():n[3]?r.styles[Util.fromCssProperty(n[3])]=n[4].trim():n[5]?r.classes=r.classes.concat(n[5].slice(1).split(/\./)):n[6]&&(r.id=n[6].slice(1).split(/#/).pop()),e.nextMatch=t.lastIndex)}while(a);return r}var t=new RegExp(Patterns.inlineCss,"gm");return e}()},evalText:{value:function(e){var t=void 0;try{switch(t=Scripting.evalTwineScript(e),void 0===t?"undefined":_typeof(t)){case"string":""===t.trim()&&(t=e);break;case"number":t=String(t);break;default:t=e}}catch(r){t=e}return t}},evalPassageId:{value:function(e){return null==e||Story.has(e)?e:t.helpers.evalText(e)}},hasBlockContext:{value:function(e){for(var t="function"==typeof window.getComputedStyle,r=e.length-1;r>=0;--r){var a=e[r];switch(a.nodeType){case Node.ELEMENT_NODE:var n=a.nodeName.toUpperCase();if("BR"===n)return!0;var i=t?window.getComputedStyle(a,null):a.currentStyle;if(i&&i.display){if("none"===i.display)continue;return"block"===i.display}switch(n){case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":return!0}return!1;case Node.COMMENT_NODE:continue;default:return!1}}return!0}},createShadowSetterCallback:{value:function(){function e(){if(!n&&!(n=t.Parser.get("macro")))throw new Error('cannot find "macro" parser');return n}function r(){for(var t=n||e(),r=new Set,a=t.context;null!==a;a=a.parent)a._shadows&&a._shadows.forEach(function(e){return r.add(e)});return[].concat(_toConsumableArray(r))}function a(e){var t={};return r().forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;t[e]=a[r]}),function(){var r=Object.keys(t),a=r.length>0?{}:null;try{return r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;n.hasOwnProperty(r)&&(a[r]=n[r]),n[r]=t[e]}),Scripting.evalJavaScript(e)}finally{r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;t[e]=n[r],a.hasOwnProperty(r)?n[r]=a[r]:delete n[r]})}}}var n=null;return a}()},parseSquareBracketedMarkup:{value:function(e){function t(){return c>=e.source.length?s:e.source[c]}function r(t){return t<1||c+t>=e.source.length?s:e.source[c+t]}function a(){return{error:String.format.apply(String,arguments),pos:c}}function n(){l=c}function i(t){var r=e.source.slice(l,c).trim();if(""===r)throw new Error("malformed wiki "+(f?"link":"image")+", empty "+t+" component");"link"===t&&"~"===r[0]?(u.forceInternal=!0,u.link=r.slice(1)):u[t]=r,l=c}function o(e){++c;e:for(;;){switch(t()){case"\\":++c;var r=t();if(r!==s&&"\n"!==r)break;case s:case"\n":return s;case e:break e}++c}return c}var s=-1,u={},l=e.matchStart,c=l+1,d=void 0,h=void 0,f=void 0,p=void 0;if("["===(p=t()))f=u.isLink=!0;else{switch(f=!1,p){case"<":u.align="left",++c;break;case">":u.align="right",++c}if(!/^[Ii][Mm][Gg]$/.test(e.source.slice(c,c+3)))return a("malformed square-bracketed wiki markup");c+=3,u.isImage=!0}if("["!==function(){return c>=e.source.length?s:e.source[c++]}())return a("malformed wiki {0}",f?"link":"image");d=1,h=0,n();try{e:for(;;){switch(p=t()){case s:case"\n":return a("unterminated wiki {0}",f?"link":"image");case'"':if(o(p)===s)return a("unterminated double quoted string in wiki {0}",f?"link":"image");break;case"'":if((4===h||3===h&&f)&&o(p)===s)return a("unterminated single quoted string in wiki {0}",f?"link":"image");break;case"|":0===h&&(i(f?"text":"title"),++l,h=1);break;case"-":0===h&&">"===r(1)&&(i(f?"text":"title"),++c,l+=2,h=1);break;case"<":0===h&&"-"===r(1)&&(i(f?"link":"source"),++c,l+=2,h=2);break;case"[":if(-1===h)return a("unexpected left square bracket '['");++d,1===d&&(n(),++l);break;case"]":if(0===--d){switch(h){case 0:case 1:i(f?"link":"source"),h=3;break;case 2:i(f?"text":"title"),h=3;break;case 3:f?(i("setter"),h=-1):(i("link"),h=4);break;case 4:i("setter"),h=-1}if(++c,"]"===t()){++c;break e}--c}}++c}}catch(e){return a(e.message)}return u.pos=c,u}}}),t}();!function(){function e(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createDocumentFragment()).append(t[1]).appendTo(e.output))}Wikifier.Parser.add({name:"quoteByBlock",profiles:["block"],match:"^<<<\\n",terminator:"^<<<\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("blockquote")).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"quoteByLine",profiles:["block"],match:"^>+",lookahead:/^>+/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=[e.output],r=0,a=e.matchLength,n=void 0,i=void 0;do{if(a>r)for(i=r;i<a;++i)t.push(jQuery(document.createElement("blockquote")).appendTo(t[t.length-1]).get(0));else if(a<r)for(i=r;i>a;--i)t.pop();r=a,e.subWikify(t[t.length-1],this.terminator),jQuery(document.createElement("br")).appendTo(t[t.length-1]),this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);n=o&&o.index===e.nextMatch,n&&(a=o[0].length,e.nextMatch+=o[0].length)}while(n)}}),Wikifier.Parser.add({name:"macro",profiles:["core"],match:"<<",lookahead:new RegExp("<<(/?"+Patterns.macroName+")(?:\\s*)((?:(?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)|[^>]|(?:>(?!>)))*)>>","gm"),argsPattern:["(``)","`((?:\\\\.|[^`\\\\])+)`","(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","(\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)","([^`\"'\\s]+)","(`|\"|')"].join("|"),working:{source:"",name:"",arguments:"",index:0},context:null,handler:function(e){var t=this.lookahead.lastIndex=e.matchStart;if(this.parseTag(e)){var r=e.nextMatch,a=this.working.name,n=this.working.arguments,i=void 0;try{if(!(i=Macro.get(a))){if(Macro.tags.has(a)){var o=Macro.tags.get(a);return throwError(e.output,"child tag <<"+a+">> was found outside of a call to its parent macro"+(1===o.length?"":"s")+" <<"+o.join(">>, <<")+">>",e.source.slice(t,e.nextMatch))}return throwError(e.output,"macro <<"+a+">> does not exist",e.source.slice(t,e.nextMatch))}var s=null;if(i.hasOwnProperty("tags")&&!(s=this.parseBody(e,i)))return e.nextMatch=r,throwError(e.output,"cannot find a closing tag for macro <<"+a+">>",e.source.slice(t,e.nextMatch)+"…");if("function"!=typeof i.handler)return throwError(e.output,"macro <<"+a+">> handler function "+(i.hasOwnProperty("handler")?"is not a function":"does not exist"),e.source.slice(t,e.nextMatch));var u=s?s[0].args:this.createArgs(n,i.hasOwnProperty("skipArgs")&&!!i.skipArgs||i.hasOwnProperty("skipArg0")&&!!i.skipArg0);if(i.hasOwnProperty("_MACRO_API")){this.context=new MacroContext({macro:i,name:a,args:u,payload:s,source:e.source.slice(t,e.nextMatch),parent:this.context,parser:e});try{i.handler.call(this.context)}finally{this.context=this.context.parent}}else{var l=e._rawArgs;e._rawArgs=n;try{i.handler(e.output,a,u,e,s)}finally{e._rawArgs=l}}}catch(r){return throwError(e.output,"cannot execute "+(i&&i.isWidget?"widget":"macro")+" <<"+a+">>: "+r.message,e.source.slice(t,e.nextMatch))}finally{this.working.source="",this.working.name="",this.working.arguments="",this.working.index=0}}else e.outputText(e.output,e.matchStart,e.nextMatch)},parseTag:function(e){var t=this.lookahead.exec(e.source);return!(!t||t.index!==e.matchStart||!t[1])&&(e.nextMatch=this.lookahead.lastIndex,this.working.source=e.source.slice(t.index,this.lookahead.lastIndex),this.working.name=t[1],this.working.arguments=t[2],this.working.index=t.index,!0)},parseBody:function(e,t){for(var r=this.working.name,a="/"+r,n="end"+r,i=!!Array.isArray(t.tags)&&t.tags,o=[],s=t.hasOwnProperty("skipArgs")&&t.skipArgs,u=t.hasOwnProperty("skipArg0")&&t.skipArg0,l=-1,c=1,d=this.working.source,h=this.working.name,f=this.working.arguments,p=e.nextMatch;-1!==(e.matchStart=e.source.indexOf(this.match,e.nextMatch));)if(this.parseTag(e)){var g=this.working.source,m=this.working.name,v=this.working.arguments,y=this.working.index,b=e.nextMatch;switch(m){case r:++c;break;case n:case a:--c;break;default:if(1===c&&i)for(var w=0,k=i.length;w<k;++w)m===i[w]&&(o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),d=g,h=m,f=v,p=b)}if(0===c){o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),l=b;break}}else this.lookahead.lastIndex=e.nextMatch=e.matchStart+this.match.length;return-1!==l?(e.nextMatch=l,o):null},createArgs:function(e,t){var r=t?[]:this.parseArgs(e);return Object.defineProperties(r,{raw:{value:e},full:{value:Scripting.parse(e)}}),r},parseArgs:function(e){ for(var t=new RegExp(this.argsPattern,"gm"),r=[],a=new RegExp("^"+Patterns.variable),n=void 0;null!==(n=t.exec(e));){var i=void 0;if(n[1])i=undefined;else if(n[2]){i=n[2];try{i=Scripting.evalTwineScript("("+i+")")}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(n[3])i="";else if(n[4]){i=n[4];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error("unable to parse macro argument '"+i+"': "+e.message)}}else if(n[5]){i=n[5];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(n[6]){i=n[6];var o=Wikifier.helpers.parseSquareBracketedMarkup({source:i,matchStart:0});if(o.hasOwnProperty("error"))throw new Error('unable to parse macro argument "'+i+'": '+o.error);if(o.pos<i.length)throw new Error('unable to parse macro argument "'+i+'": unexpected character(s) "'+i.slice(o.pos)+'" (pos: '+o.pos+")");o.isLink?(i={isLink:!0},i.count=o.hasOwnProperty("text")?2:1,i.link=Wikifier.helpers.evalPassageId(o.link),i.text=o.hasOwnProperty("text")?Wikifier.helpers.evalText(o.text):i.link,i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null):o.isImage&&(i=function(e){var t={source:e,isImage:!0};if("data:"!==e.slice(0,5)&&Story.has(e)){var r=Story.get(e);r.tags.includes("Twine.image")&&(t.source=r.text,t.passage=r.title)}return t}(Wikifier.helpers.evalPassageId(o.source)),o.hasOwnProperty("align")&&(i.align=o.align),o.hasOwnProperty("title")&&(i.title=Wikifier.helpers.evalText(o.title)),o.hasOwnProperty("link")&&(i.link=Wikifier.helpers.evalPassageId(o.link),i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link)),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null)}else if(n[7])if(i=n[7],a.test(i))i=State.getVar(i);else if(/^(?:settings|setup)[.[]/.test(i))try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}else if("null"===i)i=null;else if("undefined"===i)i=undefined;else if("true"===i)i=!0;else if("false"===i)i=!1;else{var s=Number(i);Number.isNaN(s)||(i=s)}else if(n[8]){var u=void 0;switch(n[8]){case"`":u="backquote expression";break;case'"':u="double quoted string";break;case"'":u="single quoted string"}throw new Error("unterminated "+u+" in macro argument string")}r.push(i)}return r}}),Wikifier.Parser.add({name:"link",profiles:["core"],match:"\\[\\[[^[]",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=Wikifier.helpers.evalPassageId(t.link),a=t.hasOwnProperty("text")?Wikifier.helpers.evalText(t.text):r,n=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,i=(Config.debug?new DebugView(e.output,"link-markup","[[link]]",e.source.slice(e.matchStart,e.nextMatch)):e).output;t.forceInternal||!Wikifier.isExternalLink(r)?Wikifier.createInternalLink(i,r,a,n):Wikifier.createExternalLink(i,r,a)}}),Wikifier.Parser.add({name:"urlLink",profiles:["core"],match:Patterns.url,handler:function(e){e.outputText(Wikifier.createExternalLink(e.output,e.matchText),e.matchStart,e.nextMatch)}}),Wikifier.Parser.add({name:"image",profiles:["core"],match:"\\[[<>]?[Ii][Mm][Gg]\\[",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=void 0;Config.debug&&(r=new DebugView(e.output,"image-markup",t.hasOwnProperty("link")?"[img[][link]]":"[img[]]",e.source.slice(e.matchStart,e.nextMatch)),r.modes({block:!0}));var a=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,n=(Config.debug?r:e).output,i=void 0;if(t.hasOwnProperty("link")){var o=Wikifier.helpers.evalPassageId(t.link);n=t.forceInternal||!Wikifier.isExternalLink(o)?Wikifier.createInternalLink(n,o,null,a):Wikifier.createExternalLink(n,o),n.classList.add("link-image")}if(n=jQuery(document.createElement("img")).appendTo(n).get(0),i=Wikifier.helpers.evalPassageId(t.source),"data:"!==i.slice(0,5)&&Story.has(i)){var s=Story.get(i);s.tags.includes("Twine.image")&&(n.setAttribute("data-passage",s.title),i=s.text.trim())}n.src=i,t.hasOwnProperty("title")&&(n.title=Wikifier.helpers.evalText(t.title)),t.hasOwnProperty("align")&&(n.align=t.align)}}),Wikifier.Parser.add({name:"monospacedByBlock",profiles:["block"],match:"^\\{\\{\\{\\n",lookahead:/^\{\{\{\n((?:^[^\n]*\n)+?)(^\}\}\}$\n?)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){var r=jQuery(document.createElement("pre"));jQuery(document.createElement("code")).text(t[1]).appendTo(r),r.appendTo(e.output),e.nextMatch=this.lookahead.lastIndex}}}),Wikifier.Parser.add({name:"formatByChar",profiles:["core"],match:"''|//|__|\\^\\^|~~|==|\\{\\{\\{",handler:function(e){switch(e.matchText){case"''":e.subWikify(jQuery(document.createElement("strong")).appendTo(e.output).get(0),"''");break;case"//":e.subWikify(jQuery(document.createElement("em")).appendTo(e.output).get(0),"//");break;case"__":e.subWikify(jQuery(document.createElement("u")).appendTo(e.output).get(0),"__");break;case"^^":e.subWikify(jQuery(document.createElement("sup")).appendTo(e.output).get(0),"\\^\\^");break;case"~~":e.subWikify(jQuery(document.createElement("sub")).appendTo(e.output).get(0),"~~");break;case"==":e.subWikify(jQuery(document.createElement("s")).appendTo(e.output).get(0),"==");break;case"{{{":var t=/\{\{\{((?:.|\n)*?)\}\}\}/gm;t.lastIndex=e.matchStart;var r=t.exec(e.source);r&&r.index===e.matchStart&&(jQuery(document.createElement("code")).text(r[1]).appendTo(e.output),e.nextMatch=t.lastIndex)}}}),Wikifier.Parser.add({name:"customStyle",profiles:["core"],match:"@@",terminator:"@@",blockRegExp:/\s*\n/gm,handler:function(e){var t=Wikifier.helpers.inlineCss(e);this.blockRegExp.lastIndex=e.nextMatch;var r=this.blockRegExp.exec(e.source),a=r&&r.index===e.nextMatch,n=jQuery(document.createElement(a?"div":"span")).appendTo(e.output);0===t.classes.length&&""===t.id&&0===Object.keys(t.styles).length?n.addClass("marked"):(t.classes.forEach(function(e){return n.addClass(e)}),""!==t.id&&n.attr("id",t.id),n.css(t.styles)),a?(e.nextMatch+=r[0].length,e.subWikify(n[0],"\\n?"+this.terminator)):e.subWikify(n[0],this.terminator)}}),Wikifier.Parser.add({name:"verbatimText",profiles:["core"],match:'"{3}|<[Nn][Oo][Ww][Ii][Kk][Ii]>',lookahead:/(?:"{3}((?:.|\n)*?)"{3})|(?:<[Nn][Oo][Ww][Ii][Kk][Ii]>((?:.|\n)*?)<\/[Nn][Oo][Ww][Ii][Kk][Ii]>)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createElement("span")).addClass("verbatim").text(t[1]||t[2]).appendTo(e.output))}}),Wikifier.Parser.add({name:"horizontalRule",profiles:["core"],match:"^----+$\\n?|<[Hh][Rr]\\s*/?>\\n?",handler:function(e){jQuery(document.createElement("hr")).appendTo(e.output)}}),Wikifier.Parser.add({name:"emdash",profiles:["core"],match:"--",handler:function(e){jQuery(document.createTextNode("—")).appendTo(e.output)}}),Wikifier.Parser.add({name:"doubleDollarSign",profiles:["core"],match:"\\${2}",handler:function(e){jQuery(document.createTextNode("$")).appendTo(e.output)}}),Wikifier.Parser.add({name:"nakedVariable",profiles:["core"],match:Patterns.variable+"(?:(?:\\."+Patterns.identifier+")|(?:\\[\\d+\\])|(?:\\[\"(?:\\\\.|[^\"\\\\])+\"\\])|(?:\\['(?:\\\\.|[^'\\\\])+'\\])|(?:\\["+Patterns.variable+"\\]))*",handler:function(e){var t=toStringOrDefault(State.getVar(e.matchText),null);null===t?jQuery(document.createTextNode(e.matchText)).appendTo(e.output):new Wikifier((Config.debug?new DebugView(e.output,"variable",e.matchText,e.matchText):e).output,t)}}),Wikifier.Parser.add({name:"heading",profiles:["block"],match:"^!{1,6}",terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("h"+e.matchLength)).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"table",profiles:["block"],match:"^\\|(?:[^\\n]*)\\|(?:[fhck]?)$",lookahead:/^\|([^\n]*)\|([fhck]?)$/gm,rowTerminator:"\\|(?:[cfhk]?)$\\n?",cellPattern:"(?:\\|([^\\n\\|]*)\\|)|(\\|[cfhk]?$\\n?)",cellTerminator:"(?:\\u0020*)\\|",rowTypes:{c:"caption",f:"tfoot",h:"thead","":"tbody"},handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=jQuery(document.createElement("table")).appendTo(e.output).get(0),r=[],a=null,n=null,i=0,o=void 0;e.nextMatch=e.matchStart;do{this.lookahead.lastIndex=e.nextMatch;var s=this.lookahead.exec(e.source);if(o=s&&s.index===e.nextMatch){var u=s[2];"k"===u?(t.className=s[1],e.nextMatch+=s[0].length+1):(u!==a&&(a=u,n=jQuery(document.createElement(this.rowTypes[u])).appendTo(t)),"c"===a?(n.css("caption-side",0===i?"top":"bottom"),e.nextMatch+=1,e.subWikify(n[0],this.rowTerminator)):this.rowHandler(e,jQuery(document.createElement("tr")).appendTo(n).get(0),r),++i)}}while(o)},rowHandler:function(e,t,r){var a=this,n=new RegExp(this.cellPattern,"gm"),i=0,o=1,s=void 0;do{n.lastIndex=e.nextMatch;var u=n.exec(e.source);if(s=u&&u.index===e.nextMatch){if("~"===u[1]){var l=r[i];l&&(++l.rowCount,l.$element.attr("rowspan",l.rowCount).css("vertical-align","middle")),e.nextMatch=u.index+u[0].length-1}else if(">"===u[1])++o,e.nextMatch=u.index+u[0].length-1;else{if(u[2]){e.nextMatch=u.index+u[0].length;break}!function(){++e.nextMatch;for(var n=Wikifier.helpers.inlineCss(e),s=!1,u=!1,l=void 0;" "===e.source.substr(e.nextMatch,1);)s=!0,++e.nextMatch;"!"===e.source.substr(e.nextMatch,1)?(l=jQuery(document.createElement("th")).appendTo(t),++e.nextMatch):l=jQuery(document.createElement("td")).appendTo(t),r[i]={rowCount:1,$element:l},o>1&&(l.attr("colspan",o),o=1),e.subWikify(l[0],a.cellTerminator)," "===e.matchText.substr(e.matchText.length-2,1)&&(u=!0),n.classes.forEach(function(e){return l.addClass(e)}),""!==n.id&&l.attr("id",n.id),s&&u?n.styles["text-align"]="center":s?n.styles["text-align"]="right":u&&(n.styles["text-align"]="left"),l.css(n.styles),e.nextMatch=e.nextMatch-1}()}++i}}while(s)}}),Wikifier.Parser.add({name:"list",profiles:["block"],match:"^(?:(?:\\*+)|(?:#+))",lookahead:/^(?:(\*+)|(#+))/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.nextMatch=e.matchStart;var t=[e.output],r=null,a=0,n=void 0,i=void 0;do{this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);if(n=o&&o.index===e.nextMatch){var s=o[2]?"ol":"ul",u=o[0].length;if(e.nextMatch+=o[0].length,u>a)for(i=a;i<u;++i)t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0));else if(u<a)for(i=a;i>u;--i)t.pop();else u===a&&s!==r&&(t.pop(),t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0)));a=u,r=s,e.subWikify(jQuery(document.createElement("li")).appendTo(t[t.length-1]).get(0),this.terminator)}}while(n)}}),Wikifier.Parser.add({name:"commentByBlock",profiles:["core"],match:"(?:/(?:%|\\*))|(?:\x3c!--)",lookahead:/(?:\/(%|\*)(?:(?:.|\n)*?)\1\/)|(?:<!--(?:(?:.|\n)*?)-->)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex)}}),Wikifier.Parser.add({name:"lineContinuation",profiles:["core"],match:"\\\\"+Patterns.spaceNoTerminator+"*(?:\\n|$)|(?:^|\\n)"+Patterns.spaceNoTerminator+"*\\\\",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"lineBreak",profiles:["core"],match:"\\n|<[Bb][Rr]\\s*/?>",handler:function(e){e.options.nobr||jQuery(document.createElement("br")).appendTo(e.output)}}),Wikifier.Parser.add({name:"htmlCharacterReference",profiles:["core"],match:"(?:(?:&#?[0-9A-Za-z]{2,8};|.)(?:&#?(?:x0*(?:3[0-6][0-9A-Fa-f]|1D[C-Fc-f][0-9A-Fa-f]|20[D-Fd-f][0-9A-Fa-f]|FE2[0-9A-Fa-f])|0*(?:76[89]|7[7-9][0-9]|8[0-7][0-9]|761[6-9]|76[2-7][0-9]|84[0-3][0-9]|844[0-7]|6505[6-9]|6506[0-9]|6507[0-1]));)+|&#?[0-9A-Za-z]{2,8};)",handler:function(e){jQuery(document.createDocumentFragment()).append(e.matchText).appendTo(e.output)}}),Wikifier.Parser.add({name:"xmlProlog",profiles:["core"],match:"<\\?[Xx][Mm][Ll][^>]*\\?>",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"verbatimHtml",profiles:["core"],match:"<[Hh][Tt][Mm][Ll]>",lookahead:/<[Hh][Tt][Mm][Ll]>((?:.|\n)*?)<\/[Hh][Tt][Mm][Ll]>/gm,handler:e}),Wikifier.Parser.add({name:"verbatimSvgTag",profiles:["core"],match:"<[Ss][Vv][Gg][^>]*>",lookahead:/(<[Ss][Vv][Gg][^>]*>(?:.|\n)*?<\/[Ss][Vv][Gg]>)/gm,handler:e}),Wikifier.Parser.add({name:"verbatimScriptTag",profiles:["core"],match:"<[Ss][Cc][Rr][Ii][Pp][Tt][^>]*>",lookahead:/(<[Ss][Cc][Rr][Ii][Pp][Tt]*>(?:.|\n)*?<\/[Ss][Cc][Rr][Ii][Pp][Tt]>)/gm,handler:e}),Wikifier.Parser.add({name:"styleTag",profiles:["core"],match:"<[Ss][Tt][Yy][Ll][Ee][^>]*>",lookahead:/(<[Ss][Tt][Yy][Ll][Ee]*>)((?:.|\n)*?)(<\/[Ss][Tt][Yy][Ll][Ee]>)/gm,imageMarkup:new RegExp(Patterns.cssImage,"g"),hasImageMarkup:new RegExp(Patterns.cssImage),handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){e.nextMatch=this.lookahead.lastIndex;var r=t[2];this.hasImageMarkup.test(r)&&(this.imageMarkup.lastIndex=0,r=r.replace(this.imageMarkup,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var a=Story.get(r);a.tags.includes("Twine.image")&&(r=a.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),jQuery(document.createDocumentFragment()).append(t[1]+r+t[3]).appendTo(e.output)}}}),Wikifier.Parser.add({name:"htmlTag",profiles:["core"],match:"<\\w+(?:\\s+[^\\u0000-\\u001F\\u007F-\\u009F\\s\"'>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*?\"|'[^']*?'|[^\\s\"'=<>`]+))?)*\\s*\\/?>",tagRegExp:/^<(\w+)/,mediaElements:["audio","img","source","track","video"],nobrElements:["audio","colgroup","datalist","dl","figure","ol","optgroup","picture","select","table","tbody","tfoot","thead","tr","ul","video"],voidElements:["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],handler:function(e){var t=this.tagRegExp.exec(e.matchText),r=t&&t[1],a=r&&r.toLowerCase();if(a){var n=this.voidElements.includes(a)||e.matchText.endsWith("/>"),i=this.nobrElements.includes(a),o=void 0,s=void 0;if(!n){o="<\\/"+a+"\\s*>";var u=new RegExp(o,"gim");u.lastIndex=e.matchStart,s=u.exec(e.source)}if(!n&&!s)return throwError(e.output,"cannot find a closing tag for HTML <"+r+">",e.matchText+"…");var l=e.output,c=document.createElement(e.output.tagName),d=void 0;for(c.innerHTML=e.matchText;c.firstChild;)c=c.firstChild;try{this.processAttributeDirectives(c)}catch(t){return throwError(e.output,"<"+a+">: "+t.message,e.matchText+"…")}c.hasAttribute("data-passage")&&(this.processDataAttributes(c,a),Config.debug&&(d=new DebugView(e.output,"html-"+a,a,e.matchText),d.modes({block:"img"===a,nonvoid:s}),l=d.output)),s&&(e.subWikify(c,o,{ignoreTerminatorCase:!0,nobr:i}),d&&jQuery(c).find(".debug.block").length>0&&d.modes({block:!0})),l.appendChild("track"===a?c.cloneNode(!0):c)}},processAttributeDirectives:function(e){[].concat(_toConsumableArray(e.attributes)).forEach(function(t){var r=t.name,a=t.value,n="@"===r[0];if(n||r.startsWith("sc-eval:")){var i=r.slice(n?1:8),o=void 0;try{o=Scripting.evalTwineScript(a)}catch(e){throw new Error('bad evaluation from attribute directive "'+r+'": '+e.message)}try{e.setAttribute(i,o),e.removeAttribute(r)}catch(e){throw new Error('cannot transform attribute directive "'+r+'" into attribute "'+i+'"')}}})},processDataAttributes:function(e,t){var r=e.getAttribute("data-passage");if(null!=r){var a=Wikifier.helpers.evalPassageId(r);if(a!==r&&(r=a,e.setAttribute("data-passage",a)),""!==r)if(this.mediaElements.includes(t)){if("data:"!==r.slice(0,5)&&Story.has(r)){r=Story.get(r);var n=void 0,i=void 0;switch(t){case"audio":case"video":i="Twine."+t;break;case"img":i="Twine.image";break;case"track":i="Twine.vtt";break;case"source":var o=$(e).closest("audio,picture,video");o.length&&(n=o.get(0).tagName.toLowerCase(),i="Twine."+("picture"===n?"image":n))}r.tags.includes(i)&&(e["picture"===n?"srcset":"src"]=r.text.trim())}}else{var s=e.getAttribute("data-setter"),u=void 0;null!=s&&""!==(s=String(s).trim())&&(u=Wikifier.helpers.createShadowSetterCallback(Scripting.parse(s))),Story.has(r)?(e.classList.add("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(r)&&e.classList.add("link-visited")):e.classList.add("link-broken"),jQuery(e).ariaClick({one:!0},function(){"function"==typeof u&&u.call(this),Engine.play(r)})}}}})}();var Macro=function(){function e(t,r,n){if(Array.isArray(t))return void t.forEach(function(t){return e(t,r,n)});if(!h.test(t))throw new Error('invalid macro name "'+t+'"');if(a(t))throw new Error("cannot clobber existing macro <<"+t+">>");if(u(t))throw new Error("cannot clobber child tag <<"+t+">> of parent macro"+(1===d[t].length?"":"s")+" <<"+d[t].join(">>, <<")+">>");try{if("object"===(void 0===r?"undefined":_typeof(r)))c[t]=n?clone(r):r;else{if(!a(r))throw new Error("cannot create alias of nonexistent macro <<"+r+">>");c[t]=n?clone(c[r]):c[r]}Object.defineProperty(c,t,{writable:!1}),c[t]._MACRO_API=!0}catch(e){throw"TypeError"===e.name?new Error("cannot clobber protected macro <<"+t+">>"):new Error("unknown error when attempting to add macro <<"+t+">>: ["+e.name+"] "+e.message)}if(c[t].hasOwnProperty("tags"))if(null==c[t].tags)o(t);else{if(!Array.isArray(c[t].tags))throw new Error('bad value for "tags" property of macro <<'+t+">>");o(t,c[t].tags)}}function t(e){if(Array.isArray(e))return void e.forEach(function(e){return t(e)});if(a(e)){c[e].hasOwnProperty("tags")&&s(e);try{Object.defineProperty(c,e,{writable:!0}),delete c[e]}catch(t){throw new Error("unknown error removing macro <<"+e+">>: "+t.message)}}else if(u(e))throw new Error("cannot remove child tag <<"+e+">> of parent macro <<"+d[e]+">>")}function r(){return 0===Object.keys(c).length}function a(e){return c.hasOwnProperty(e)}function n(e){var t=null;return a(e)&&"function"==typeof c[e].handler?t=c[e]:macros.hasOwnProperty(e)&&"function"==typeof macros[e].handler&&(t=macros[e]),t}function i(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"init";Object.keys(c).forEach(function(t){"function"==typeof c[t][e]&&c[t][e](t)}),Object.keys(macros).forEach(function(t){"function"==typeof macros[t][e]&¯os[t][e](t)})}function o(e,t){if(!e)throw new Error("no parent specified");for(var r=["/"+e,"end"+e],n=[].concat(r,Array.isArray(t)?t:[]),i=0;i<n.length;++i){var o=n[i];if(a(o))throw new Error("cannot register tag for an existing macro");u(o)?d[o].includes(e)||(d[o].push(e),d[o].sort()):d[o]=[e]}}function s(e){if(!e)throw new Error("no parent specified");Object.keys(d).forEach(function(t){var r=d[t].indexOf(e);-1!==r&&(1===d[t].length?delete d[t]:d[t].splice(r,1))})}function u(e){return d.hasOwnProperty(e)}function l(e){return u(e)?d[e]:null}var c={},d={},h=new RegExp("^(?:"+Patterns.macroName+")$");return Object.freeze(Object.defineProperties({},{add:{value:e},delete:{value:t},isEmpty:{value:r},has:{value:a},get:{value:n},init:{value:i},tags:{value:Object.freeze(Object.defineProperties({},{register:{value:o},unregister:{value:s},has:{value:u},get:{value:l}}))},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),MacroContext=function(){return function(){function e(t){_classCallCheck(this,e);var r=Object.assign({parent:null,macro:null,name:"",args:null,payload:null,parser:null,source:""},t);if(null===r.macro||""===r.name||null===r.parser)throw new TypeError("context object missing required properties");Object.defineProperties(this,{self:{value:r.macro},name:{value:r.name},args:{value:r.args},payload:{value:r.payload},source:{value:r.source},parent:{value:r.parent},parser:{value:r.parser},_output:{value:r.parser.output},_shadows:{writable:!0,value:null},_debugView:{writable:!0,value:null},_debugViewEnabled:{writable:!0,value:Config.debug}})}return _createClass(e,[{key:"contextHas",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return!0;return!1}},{key:"contextSelect",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return t;return null}},{key:"contextSelectAll",value:function(e){for(var t=[],r=this;null!==(r=r.parent);)e(r)&&t.push(r);return t}},{key:"addShadow",value:function(){var e=this;this._shadows||(this._shadows=new Set);for(var t=new RegExp("^"+Patterns.variable+"$"),r=arguments.length,a=Array(r),n=0;n<r;n++)a[n]=arguments[n];a.flatten().forEach(function(r){if("string"!=typeof r)throw new TypeError("variable name must be a string; type: "+(void 0===r?"undefined":_typeof(r)));if(!t.test(r))throw new Error('invalid variable name "'+r+'"');e._shadows.add(r)})}},{key:"createShadowWrapper",value:function(e,t,r){var a=this,n=void 0;return"function"==typeof e&&(n={},this.shadowView.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t]})),function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];if("function"==typeof r&&r.apply(this,o),"function"==typeof e){var u=Object.keys(n),l=u.length>0?{}:null,c=Wikifier.Parser.get("macro"),d=void 0;try{u.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;r.hasOwnProperty(t)&&(l[t]=r[t]),r[t]=n[e]}),d=c.context,c.context=a,e.apply(this,o)}finally{d!==undefined&&(c.context=d),u.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t],l.hasOwnProperty(t)?r[t]=l[t]:delete r[t]})}}"function"==typeof t&&t.apply(this,o)}}},{key:"createDebugView",value:function(e,t){return this._debugView=new DebugView(this._output,"macro",e||this.name,t||this.source),null!==this.payload&&this.payload.length>0&&this._debugView.modes({nonvoid:!0}),this._debugViewEnabled=!0,this._debugView}},{key:"removeDebugView",value:function(){null!==this._debugView&&(this._debugView.remove(),this._debugView=null),this._debugViewEnabled=!1}},{key:"error",value:function(e,t){return throwError(this._output,"<<"+this.name+">>: "+e,t||this.source)}},{key:"output",get:function(){return this._debugViewEnabled?this.debugView.output:this._output}},{key:"shadows",get:function(){return[].concat(_toConsumableArray(this._shadows))}},{key:"shadowView",get:function(){var e=new Set;return this.contextSelectAll(function(e){return e._shadows}).forEach(function(t){return t._shadows.forEach(function(t){return e.add(t)})}),[].concat(_toConsumableArray(e))}},{key:"debugView",get:function(){return this._debugViewEnabled?null!==this._debugView?this._debugView:this.createDebugView():null}}]),e}()}();!function(){if(Macro.add("capture",{skipArgs:!0,tags:null,handler:function(){if(0===this.args.raw.length)return this.error("no story/temporary variable list specified");var e={};try{for(var t=new RegExp("("+Patterns.variable+")","g"),r=void 0;null!==(r=t.exec(this.args.raw));){var a=r[1],n=a.slice(1),i="$"===a[0]?State.variables:State.temporary;i.hasOwnProperty(n)&&(e[n]=i[n]),this.addShadow(a)}new Wikifier(this.output,this.payload[0].contents)}finally{this.shadows.forEach(function(t){var r=t.slice(1),a="$"===t[0]?State.variables:State.temporary;e.hasOwnProperty(r)?a[r]=e[r]:delete a[r]})}}}),Macro.add("set",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("unset",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story/temporary variable list specified");for(var e=new RegExp("State\\.(variables|temporary)\\.("+Patterns.identifier+")","g"),t=void 0;null!==(t=e.exec(this.args.full));){var r=State[t[1]],a=t[2];r.hasOwnProperty(a)&&delete r[a]}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("remember",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}for(var e=storage.get("remember")||{},t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0;null!==(r=t.exec(this.args.full));){var a=r[1];e[a]=State.variables[a]}if(!storage.set("remember",e))return this.error("unknown error, cannot remember: "+this.args.raw);Config.debug&&this.debugView.modes({hidden:!0})},init:function(){var e=storage.get("remember");e&&Object.keys(e).forEach(function(t){return State.variables[t]=e[t]})}}),Macro.add("forget",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story variable list specified");for(var e=storage.get("remember"),t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0,a=!1;null!==(r=t.exec(this.args.full));){var n=r[1];State.variables.hasOwnProperty(n)&&delete State.variables[n],e&&e.hasOwnProperty(n)&&(a=!0,delete e[n])}if(a&&!storage.set("remember",e))return this.error("unknown error, cannot update remember store");Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("run","set"),Macro.add("script",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();try{Scripting.evalJavaScript(this.payload[0].contents,e),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e),this.source+this.payload[0].contents+"<</"+this.name+">>")}e.hasChildNodes()&&this.output.appendChild(e)}}),Macro.add("include",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');Config.debug&&this.debugView.modes({block:!0}),e=Story.get(e);var t=void 0;t=this.args[1]?jQuery(document.createElement(this.args[1])).addClass(e.domId+" macro-"+this.name).attr("data-passage",e.title).appendTo(this.output):jQuery(this.output),t.wiki(e.processText())}}),Macro.add("nobr",{skipArgs:!0,tags:null,handler:function(){new Wikifier(this.output,this.payload[0].contents.replace(/^\n+|\n+$/g,"").replace(/\n+/g," "))}}),Macro.add(["print","=","-"],{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{var e=toStringOrDefault(Scripting.evalJavaScript(this.args.full),null);null!==e&&new Wikifier(this.output,"-"===this.name?Util.escape(e):e)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}}}),Macro.add("silently",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();if(new Wikifier(e,this.payload[0].contents.trim()),Config.debug)this.debugView.modes({hidden:!0}),this.output.appendChild(e);else{var t=[].concat(_toConsumableArray(e.querySelectorAll(".error"))).map(function(e){return e.textContent});if(t.length>0)return this.error("error"+(1===t.length?"":"s")+" within contents ("+t.join("; ")+")",this.source+this.payload[0].contents+"<</"+this.name+">>")}}}),Macro.add("display","include"),Macro.add("if",{skipArgs:!0,tags:["elseif","else"],handler:function(){var e=void 0;try{var t=this.payload.length;for(e=0;e<t;++e)switch(this.payload[e].name){case"else":if(this.payload[e].args.raw.length>0)return/^\s*if\b/i.test(this.payload[e].args.raw)?this.error('whitespace is not allowed between the "else" and "if" in <<elseif>> clause'+(e>0?" (#"+e+")":"")):this.error("<<else>> does not accept a conditional expression (perhaps you meant to use <<elseif>>), invalid: "+this.payload[e].args.raw);if(e+1!==t)return this.error("<<else>> must be the final clause");break;default:if(0===this.payload[e].args.full.length)return this.error("no conditional expression specified for <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":""));if(Config.macros.ifAssignmentError&&/[^!=&^|<>*\/%+-]=[^=]/.test(this.payload[e].args.full))return this.error("assignment operator found within <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":"")+" (perhaps you meant to use an equality operator: ==, ===, eq, is), invalid: "+this.payload[e].args.raw)}var r=Scripting.evalJavaScript,a=!1;for(e=0;e<t;++e){if(Config.debug&&this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1}),"else"===this.payload[e].name||r(this.payload[e].args.full)){a=!0,new Wikifier(this.output,this.payload[e].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++e;e<t;++e)this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1,hidden:!0,invalid:!0});this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!a,invalid:!a})}}catch(t){return this.error("bad conditional expression in <<"+(0===e?"if":"elseif")+">> clause"+(e>0?" (#"+e+")":"")+": "+("object"===(void 0===t?"undefined":_typeof(t))?t.message:t))}}}),Macro.add("switch",{skipArg0:!0,tags:["case","default"],handler:function(){if(0===this.args.full.length)return this.error("no expression specified");var e=this.payload.length;if(1===e)return this.error("no cases specified");var t=void 0;for(t=1;t<e;++t)switch(this.payload[t].name){case"default":if(this.payload[t].args.length>0)return this.error("<<default>> does not accept values, invalid: "+this.payload[t].args.raw);if(t+1!==e)return this.error("<<default>> must be the final case");break;default:if(0===this.payload[t].args.length)return this.error("no value(s) specified for <<"+this.payload[t].name+">> (#"+t+")")}var r=void 0;try{r=Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}var a=this.debugView,n=!1;for(Config.debug&&a.modes({nonvoid:!1,hidden:!0}),t=1;t<e;++t){if(Config.debug&&this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1}),"default"===this.payload[t].name||this.payload[t].args.some(function(e){return e===r})){n=!0,new Wikifier(this.output,this.payload[t].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++t;t<e;++t)this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1,hidden:!0,invalid:!0});a.modes({nonvoid:!1,hidden:!0,invalid:!n}),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0,invalid:!n})}}}),Macro.add("for",{skipArgs:!0,tags:null,_hasRangeRe:new RegExp("^\\S.*?\\s+range\\s+\\S.*?$"),_rangeRe:new RegExp("^(?:State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s*,\\s*)?State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s+range\\s+(\\S.*?)$"),_3PartRe:/^([^;]*?)\s*;\s*([^;]*?)\s*;\s*([^;]*?)$/,handler:function(){var e=this.args.full.trim(),t=this.payload[0].contents.replace(/\n$/,"");if(0===e.length)this.self._handleFor.call(this,t,null,!0,null);else if(this.self._hasRangeRe.test(e)){var r=e.match(this.self._rangeRe);if(null===r)return this.error("invalid range form syntax, format: [index ,] value range collection");this.self._handleForRange.call(this,t,{type:r[1],name:r[2]},{type:r[3],name:r[4]},r[5])}else{var a=void 0,n=void 0,i=void 0;if(-1===e.indexOf(";")){ if(/^\S+\s+in\s+\S+/i.test(e))return this.error("invalid syntax, for…in is not supported; see: for…range");if(/^\S+\s+of\s+\S+/i.test(e))return this.error("invalid syntax, for…of is not supported; see: for…range");n=e}else{var o=e.match(this.self._3PartRe);if(null===o)return this.error("invalid 3-part conditional form syntax, format: [init] ; [condition] ; [post]");a=o[1],n=o[2].trim(),i=o[3],0===n.length&&(n=!0)}this.self._handleFor.call(this,t,a,n,i)}},_handleFor:function(e,t,r,a){var n=Scripting.evalJavaScript,i=!0,o=Config.macros.maxLoopIterations;Config.debug&&this.debugView.modes({block:!0});try{if(TempState.break=null,t)try{n(t)}catch(e){return this.error("bad init expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}for(;n(r);){if(--o<0)return this.error("exceeded configured maximum loop iterations ("+Config.macros.maxLoopIterations+")");if(new Wikifier(this.output,i?e.replace(/^\n/,""):e),i&&(i=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}if(a)try{n(a)}catch(e){return this.error("bad post expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}}}catch(e){return this.error("bad conditional expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}finally{TempState.break=null}},_handleForRange:function(e,t,r,a){var n=!0,i=void 0;try{i=this.self._toRangeList(a)}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});try{TempState.break=null;for(var o=0;o<i.length;++o)if(t.name&&(State[t.type][t.name]=i[o][0]),State[r.type][r.name]=i[o][1],new Wikifier(this.output,n?e.replace(/^\n/,""):e),n&&(n=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}}catch(e){return this.error("object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}finally{TempState.break=null}},_toRangeList:function(e){var t=Scripting.evalJavaScript,r=void 0;try{r=t("{"===e[0]?"("+e+")":e)}catch(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("bad range expression: "+e);throw e.message="bad range expression: "+e.message,e}var a=void 0;switch(void 0===r?"undefined":_typeof(r)){case"string":a=[];for(var n=0;n<r.length;){var i=Util.charAndPosAt(r,n);a.push([n,i.char]),n=1+i.end}break;case"object":if(Array.isArray(r))a=r.map(function(e,t){return[t,e]});else if(r instanceof Set)a=[].concat(_toConsumableArray(r)).map(function(e,t){return[t,e]});else if(r instanceof Map)a=[].concat(_toConsumableArray(r.entries()));else{if("Object"!==Util.toStringTag(r))throw new Error("unsupported range expression type: "+Util.toStringTag(r));a=Object.keys(r).map(function(e){return[e,r[e]]})}break;default:throw new Error("unsupported range expression type: "+(void 0===r?"undefined":_typeof(r)))}return a}}),Macro.add(["break","continue"],{skipArgs:!0,handler:function(){if(!this.contextHas(function(e){return"for"===e.name}))return this.error("must only be used in conjunction with its parent macro <<for>>");TempState.break="continue"===this.name?1:2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add(["button","link"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no "+("button"===this.name?"button":"link")+" text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("button"===this.name?"button":"a")),r=void 0;if("object"===_typeof(this.args[0]))if(this.args[0].isImage){var a=jQuery(document.createElement("img")).attr("src",this.args[0].source).appendTo(t);this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(r=this.args[0].link),r=this.args[0].link}else t.append(document.createTextNode(this.args[0].text)),r=this.args[0].link;else t.wikiWithOptions({profile:"core"},this.args[0]),r=this.args.length>1?this.args[1]:undefined;null!=r?(t.attr("data-passage",r),Story.has(r)?(t.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(r)&&t.addClass("link-visited")):t.addClass("link-broken")):t.addClass("link-internal"),t.addClass("macro-"+this.name).ariaClick({namespace:".macros",one:null!=r},this.createShadowWrapper(""!==this.payload[0].contents?function(){return Wikifier.wikifyEval(e.payload[0].contents.trim())}:null,null!=r?function(){return Engine.play(r)}:null)).appendTo(this.output)}}),Macro.add("checkbox",{handler:function(){if(this.args.length<3){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("unchecked value"),this.args.length<3&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),a=this.args[1],n=this.args[2],i=document.createElement("input");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"checkbox",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.checked?n:a)}).appendTo(this.output),this.args.length>3&&"checked"===this.args[3]?(i.checked=!0,State.setVar(t,n)):State.setVar(t,a)}}),Macro.add(["linkappend","linkprepend","linkreplace"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no link text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("a")),r=jQuery(document.createElement("span")),a=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]);t.wikiWithOptions({profile:"core"},this.args[0]).addClass("link-internal macro-"+this.name).ariaClick({namespace:".macros",one:!0},this.createShadowWrapper(function(){if("linkreplace"===e.name?t.remove():t.wrap('<span class="macro-'+e.name+'"></span>').replaceWith(function(){return t.html()}),""!==e.payload[0].contents){var n=document.createDocumentFragment();new Wikifier(n,e.payload[0].contents),r.append(n)}a&&setTimeout(function(){return r.removeClass("macro-"+e.name+"-in")},Engine.minDomActionDelay)})).appendTo(this.output),r.addClass("macro-"+this.name+"-insert"),a&&r.addClass("macro-"+this.name+"-in"),"linkprepend"===this.name?r.insertBefore(t):r.insertAfter(t)}}),Macro.add("listbox",{tags:["option"],handler:function(){if(0===this.args.length)return this.error("no variable name specified");if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var e=this.args[0].trim();if("$"!==e[0]&&"_"!==e[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var t=Util.slugify(e),r=this.payload.length;if(1===r)return this.error("no options specified");var a=this.args.length>1&&"autoselect"===this.args[1],n=-1,i=void 0;for(i=1;i<r;++i){if(this.payload[i].args.length<2){var o=[];return this.payload[i].args.length<1&&o.push("label"),this.payload[i].args.length<2&&o.push("value"),this.error("no "+o.join(" or ")+" specified for <<"+this.payload[i].name+">> (#"+i+")")}if("string"!=typeof this.payload[i].args[0])return this.error("label must be a string for <<"+this.payload[i].name+">> (#"+i+")");if(this.payload[i].args.length>2&&"selected"===this.payload[i].args[2]){if(a)return this.error("cannot specify both the autoselect and selected keywords");if(-1!==n)return this.error("multiple selected keywords specified for <<"+this.payload[i].name+">> (#"+(n+1)+" & #"+i+")");n=i-1}}if(-1===n)if(a){var s=Util.sameValueZero,u=State.getVar(e),l=this.payload.slice(1).findIndex(function(e){return s(e.args[1],u)});n=-1===l?0:l}else n=0;var c=this.payload.slice(1).map(function(e){return e.args[1]}),d=jQuery(document.createElement("select"));for(i=1;i<r;++i)jQuery(document.createElement("option")).val(i-1).text(this.payload[i].args[0]).appendTo(d);d.attr({id:this.name+"-"+t,name:this.name+"-"+t,tabindex:0}).addClass("macro-"+this.name).val(n).on("change",function(){State.setVar(e,c[Number(this.value)])}).appendTo(this.output),State.setVar(e,c[n])}}),Macro.add("radiobutton",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),a=this.args[1],n=document.createElement("input");TempState.hasOwnProperty(this.name)||(TempState[this.name]={}),TempState[this.name].hasOwnProperty(r)||(TempState[this.name][r]=0),jQuery(n).attr({id:this.name+"-"+r+"-"+TempState[this.name][r]++,name:this.name+"-"+r,type:"radio",tabindex:0}).addClass("macro-"+this.name).on("change",function(){this.checked&&State.setVar(t,a)}).appendTo(this.output),this.args.length>2&&"checked"===this.args[2]&&(n.checked=!0,State.setVar(t,a))}}),Macro.add("textarea",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),a=this.args[1],n="autofocus"===this.args[2],i=document.createElement("textarea");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,rows:4,tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).appendTo(this.output),State.setVar(t,a),i.textContent=a,n&&(i.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+i.id]=function(e){delete postdisplay[e],setTimeout(function(){return i.focus()},Engine.minDomActionDelay)})}}),Macro.add("textbox",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),a=this.args[1],n=document.createElement("input"),i=!1,o=void 0;this.args.length>3?(o=this.args[2],i="autofocus"===this.args[3]):this.args.length>2&&("autofocus"===this.args[2]?i=!0:o=this.args[2]),"object"===(void 0===o?"undefined":_typeof(o))&&(o=o.link),jQuery(n).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"text",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).on("keypress",function(e){13===e.which&&(e.preventDefault(),State.setVar(t,this.value),null!=o&&Engine.play(o))}).appendTo(this.output),State.setVar(t,a),n.value=a,i&&(n.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+n.id]=function(e){delete postdisplay[e],setTimeout(function(){return n.focus()},Engine.minDomActionDelay)})}}),Macro.add("click","link"),Macro.add("actions",{handler:function(){for(var e=jQuery(document.createElement("ul")).addClass(this.name).appendTo(this.output),t=0;t<this.args.length;++t){var r=void 0,a=void 0,n=void 0,i=void 0;"object"===_typeof(this.args[t])?this.args[t].isImage?(n=jQuery(document.createElement("img")).attr("src",this.args[t].source),this.args[t].hasOwnProperty("passage")&&n.attr("data-passage",this.args[t].passage),this.args[t].hasOwnProperty("title")&&n.attr("title",this.args[t].title),this.args[t].hasOwnProperty("align")&&n.attr("align",this.args[t].align),r=this.args[t].link,i=this.args[t].setFn):(a=this.args[t].text,r=this.args[t].link,i=this.args[t].setFn):a=r=this.args[t],State.variables.hasOwnProperty("#actions")&&State.variables["#actions"].hasOwnProperty(r)&&State.variables["#actions"][r]||jQuery(Wikifier.createInternalLink(jQuery(document.createElement("li")).appendTo(e),r,null,function(e,t){return function(){State.variables.hasOwnProperty("#actions")||(State.variables["#actions"]={}),State.variables["#actions"][e]=!0,"function"==typeof t&&t()}}(r,i))).addClass("macro-"+this.name).append(n||document.createTextNode(a))}}}),Macro.add(["back","return"],{handler:function(){if(this.args.length>1)return this.error("too many arguments specified, check the documentation for details");var e=-1,t=void 0,r=void 0,a=void 0;if(1===this.args.length&&("object"===_typeof(this.args[0])?this.args[0].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(t=this.args[0].link)):1===this.args[0].count?t=this.args[0].link:(r=this.args[0].text,t=this.args[0].link):1===this.args.length&&(r=this.args[0])),null==t){for(var n=State.length-2;n>=0;--n)if(State.history[n].title!==State.passage){e=n,t=State.history[n].title;break}if(null==t&&"return"===this.name)for(var i=State.expired.length-1;i>=0;--i)if(State.expired[i]!==State.passage){t=State.expired[i];break}}else{if(!Story.has(t))return this.error('passage "'+t+'" does not exist');if("back"===this.name){for(var o=State.length-2;o>=0;--o)if(State.history[o].title===t){e=o;break}if(-1===e)return this.error('cannot find passage "'+t+'" in the current story history')}}if(null==t)return this.error("cannot find passage");var s=void 0;s="back"!==this.name||-1!==e?jQuery(document.createElement("a")).addClass("link-internal").ariaClick({one:!0},"return"===this.name?function(){return Engine.play(t)}:function(){return Engine.goTo(e)}):jQuery(document.createElement("span")).addClass("link-disabled"),s.addClass("macro-"+this.name).append(a||document.createTextNode(r||L10n.get("macro"+this.name.toUpperFirst()+"Text"))).appendTo(this.output)}}),Macro.add("choice",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=State.passage,t=void 0,r=void 0,a=void 0,n=void 0;if(1===this.args.length?"object"===_typeof(this.args[0])?this.args[0].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),t=this.args[0].link,n=this.args[0].setFn):(r=this.args[0].text,t=this.args[0].link,n=this.args[0].setFn):r=t=this.args[0]:(t=this.args[0],r=this.args[1]),State.variables.hasOwnProperty("#choice")&&State.variables["#choice"].hasOwnProperty(e)&&State.variables["#choice"][e])return void jQuery(document.createElement("span")).addClass("link-disabled macro-"+this.name).attr("tabindex",-1).append(a||document.createTextNode(r)).appendTo(this.output);jQuery(Wikifier.createInternalLink(this.output,t,null,function(){State.variables.hasOwnProperty("#choice")||(State.variables["#choice"]={}),State.variables["#choice"][e]=!0,"function"==typeof n&&n()})).addClass("macro-"+this.name).append(a||document.createTextNode(r))}}),Macro.add(["addclass","toggleclass"],{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("selector"),this.args.length<2&&e.push("class names"),this.error("no "+e.join(" or ")+" specified")}var t=jQuery(this.args[0]);if(0===t.length)return this.error('no elements matched the selector "'+this.args[0]+'"');switch(this.name){case"addclass":t.addClass(this.args[1].trim());break;case"toggleclass":t.toggleClass(this.args[1].trim())}}}),Macro.add("removeclass",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');this.args.length>1?e.removeClass(this.args[1].trim()):e.removeClass()}}),Macro.add("copy",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');jQuery(this.output).append(e.html())}}),Macro.add(["append","prepend","replace"],{tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no selector specified");var t=jQuery(this.args[0]);if(0===t.length)return this.error('no elements matched the selector "'+this.args[0]+'"');if(""!==this.payload[0].contents){var r=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),a=void 0;switch(r?(a=jQuery(document.createElement("span")),a.addClass("macro-"+this.name+"-insert macro-"+this.name+"-in"),setTimeout(function(){return a.removeClass("macro-"+e.name+"-in")},Engine.minDomActionDelay)):a=jQuery(document.createDocumentFragment()),a.wiki(this.payload[0].contents),this.name){case"replace":t.empty();case"append":t.append(a);break;case"prepend":t.prepend(a)}}else"replace"===this.name&&t.empty()}}),Macro.add("remove",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');e.remove()}}),Has.audio){var e=Object.freeze([":not",":all",":looped",":muted",":paused",":playing"]);Macro.add("audio",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track or group IDs"),this.args.length<2&&e.push("actions"),this.error("no "+e.join(" or ")+" specified")}var t=Macro.get("cacheaudio").tracks,r=[];try{var a=function e(r){var a=r.id,o=void 0;switch(a){case":all":o=n;break;case":looped":o=n.filter(function(e){return t[e].isLooped()});break;case":muted":o=n.filter(function(e){return t[e].isMuted()});break;case":paused":o=n.filter(function(e){return t[e].isPaused()});break;case":playing":o=n.filter(function(e){return t[e].isPlaying()});break;default:o=":"===a[0]?i[a]:[a]}if(r.hasOwnProperty("not")){var s=r.not.map(function(t){return e(t)}).flatten();o=o.filter(function(e){return!s.includes(e)})}return o},n=Object.freeze(Object.keys(t)),i=Macro.get("cacheaudio").groups;this.self.parseIds(String(this.args[0]).trim()).forEach(function(e){r.push.apply(r,_toConsumableArray(a(e)))}),r.forEach(function(e){if(!t.hasOwnProperty(e))throw new Error('track "'+e+'" does not exist')})}catch(e){return this.error(e.message)}for(var o=this.args.slice(1),s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,h=void 0,f=5,p=void 0,g=void 0;o.length>0;){var m=o.shift();switch(m){case"play":case"pause":case"stop":s=m;break;case"fadein":s="fade",h=1;break;case"fadeout":s="fade",h=0;break;case"fadeto":if(0===o.length)return this.error("fadeto missing required level value");if(s="fade",g=o.shift(),h=Number.parseFloat(g),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeto: "+g);break;case"fadeoverto":if(o.length<2){var v=[];return o.length<1&&v.push("seconds"),o.length<2&&v.push("level"),this.error("fadeoverto missing required "+v.join(" and ")+" value"+(v.length>1?"s":""))}if(s="fade",g=o.shift(),f=Number.parseFloat(g),Number.isNaN(f)||!Number.isFinite(f))return this.error("cannot parse fadeoverto: "+g);if(g=o.shift(),h=Number.parseFloat(g),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeoverto: "+g);break;case"volume":if(0===o.length)return this.error("volume missing required level value");if(g=o.shift(),u=Number.parseFloat(g),Number.isNaN(u)||!Number.isFinite(u))return this.error("cannot parse volume: "+g);break;case"mute":case"unmute":l="mute"===m;break;case"time":if(0===o.length)return this.error("time missing required seconds value");if(g=o.shift(),c=Number.parseFloat(g),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse time: "+g);break;case"loop":case"unloop":d="loop"===m;break;case"goto":if(0===o.length)return this.error("goto missing required passage title");if(g=o.shift(),p="object"===(void 0===g?"undefined":_typeof(g))?g.link:g,!Story.has(p))return this.error('passage "'+p+'" does not exist');break;default:return this.error("unknown action: "+m)}}try{r.forEach(function(e){var r=t[e];switch(null!=u&&(r.volume=u),null!=c&&(r.time=c),null!=l&&(r.mute=l),null!=d&&(r.loop=d),null!=p&&r.one("end",function(){return Engine.play(p)}),s){case"play":r.play();break;case"pause":r.pause();break;case"stop":r.stop();break;case"fade":r.fadeWithDuration(f,h)}}),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing audio action: "+e.message)}},parseIds:function(e){for(var t=[],r=/:?[^\s:()]+/g,a=void 0;null!==(a=r.exec(e));){var n=a[0];if(":not"===n){if(0===t.length)throw new Error('invalid negation: no group ID preceded ":not()"');var i=t[t.length-1];if(":"!==i.id[0])throw new Error('invalid negation of track "'+i.id+'": only groups may be negated with ":not()"');var o=function(e,t){var r=/\S/g,a=/[()]/g,n=void 0;if(r.lastIndex=t,null===(n=r.exec(e))||"("!==n[0])throw new Error('invalid ":not()" syntax: missing parentheticals');a.lastIndex=r.lastIndex;for(var i=r.lastIndex,o={str:"",nextMatch:-1},s=1;null!==(n=a.exec(e));)if("("===n[0]?++s:--s,s<1){o.nextMatch=a.lastIndex,o.str=e.slice(i,o.nextMatch-1);break}return o}(e,r.lastIndex);if(-1===o.nextMatch)throw new Error('unknown error parsing ":not()"');r.lastIndex=o.nextMatch,i.not=this.parseIds(o.str)}else t.push({id:n})}return t}}),Macro.add("cacheaudio",{tracks:{},groups:{},handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track ID"),this.args.length<2&&e.push("sources"),this.error("no "+e.join(" or ")+" specified")}var t=String(this.args[0]).trim();if(/^:|\s/.test(t))return this.error('invalid track ID "'+t+'": track IDs may not start with a colon or contain whitespace');var r=/^format:\s*([\w-]+)\s*;\s*(\S.*)$/i,a=void 0;try{a=SimpleAudio.create(this.args.slice(1).map(function(e){if("data:"!==e.slice(0,5)&&Story.has(e)){var t=Story.get(e);if(t.tags.includes("Twine.audio"))return t.text.trim()}var a=r.exec(e);return null===a?e:{format:a[1],src:a[2]}}))}catch(e){return this.error('error during track initialization for "'+t+'": '+e.message)}if(Config.debug&&!a.hasSource())return this.error('no supported audio sources found for "'+t+'"');var n=this.self.tracks;n.hasOwnProperty(t)&&n[t].destroy(),n[t]=a,Config.debug&&this.createDebugView()}}),Macro.add("createaudiogroup",{tags:["track"],handler:function(){if(0===this.args.length)return this.error("no group ID specified");var t=String(this.args[0]).trim();if(/^[^:]|\s/.test(t))return this.error('invalid group ID "'+t+'": group IDs must start with a colon and may not contain whitespace');if(e.includes(t))return this.error('cannot clobber special group ID "'+t+'"');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var r=Macro.get("cacheaudio").tracks,a=[],n=1,i=this.payload.length;n<i;++n){if(this.payload[n].args.length<1)return this.error("no track ID specified");var o=String(this.payload[n].args[0]).trim();if(!r.hasOwnProperty(o))return this.error('track "'+o+'" does not exist');a.push(o),Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0})}var s=Macro.get("cacheaudio").groups;s.hasOwnProperty(t)&&delete s[t],s[t]=a,this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("createplaylist",{tags:["track"],lists:{},handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("playlist");if(null!==e.from&&"createplaylist"!==e.from)return this.error("a playlist has already been defined with <<setplaylist>>");var t=Macro.get("cacheaudio").tracks,r=String(this.args[0]).trim();if(/^:|\s/.test(r))return this.error('invalid list ID "'+r+'": list IDs may not start with a colon or contain whitespace');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var a=SimpleAudio.createList(),n=1,i=this.payload.length;n<i;++n){if(this.payload[n].args.length<2){var o=[];return this.payload[n].args.length<1&&o.push("track ID"),this.payload[n].args.length<2&&o.push("actions"),this.error("no "+o.join(" or ")+" specified")}var s=String(this.payload[n].args[0]).trim();if(!t.hasOwnProperty(s))return this.error('track "'+s+'" does not exist');for(var u=this.payload[n].args.slice(1),l=!1,c=void 0;u.length>0;){var d=u.shift(),h=void 0;switch(d){case"copy":l=!0;break;case"rate":u.length>0&&u.shift();break;case"volume":if(0===u.length)return this.error("volume missing required level value");if(h=u.shift(),c=Number.parseFloat(h),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse volume: "+h);break;default:return this.error("unknown action: "+d)}}var f=t[s];a.add({copy:l,track:f,volume:null!=c?c:f.volume}),Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0})}var p=this.self.lists;p.hasOwnProperty(r)&&p[r].destroy(),p[r]=a,null===e.from&&(e.from="createplaylist"),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("masteraudio",{handler:function(){if(0===this.args.length)return this.error("no actions specified");for(var e=this.args.slice(0),t=!1,r=void 0,a=void 0;e.length>0;){var n=e.shift(),i=void 0;switch(n){case"stop":t=!0;break;case"mute":case"unmute":r="mute"===n;break;case"volume":if(0===e.length)return this.error("volume missing required level value");if(i=e.shift(),a=Number.parseFloat(i),Number.isNaN(a)||!Number.isFinite(a))return this.error("cannot parse volume: "+i);break;default:return this.error("unknown action: "+n)}}try{null!=r&&(SimpleAudio.mute=r),null!=a&&(SimpleAudio.volume=a),t&&SimpleAudio.stop(),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing master audio action: "+e.message)}}}),Macro.add("playlist",{from:null,handler:function(){var e=this.self.from;if(null===e)return this.error("no playlists have been created");var t=void 0,r=void 0;if("createplaylist"===e){if(this.args.length<2){var a=[];return this.args.length<1&&a.push("list ID"),this.args.length<2&&a.push("actions"),this.error("no "+a.join(" or ")+" specified")}var n=Macro.get("createplaylist").lists,i=String(this.args[0]).trim();if(!n.hasOwnProperty(i))return this.error('playlist "'+i+'" does not exist');t=n[i],r=this.args.slice(1)}else{if(0===this.args.length)return this.error("no actions specified");t=Macro.get("setplaylist").list,r=this.args.slice(0)}for(var o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,h=5,f=void 0;r.length>0;){var p=r.shift();switch(p){case"play":case"pause":case"stop":case"skip":o=p;break;case"fadein":o="fade",d=1;break;case"fadeout":o="fade",d=0;break;case"fadeto":if(0===r.length)return this.error("fadeto missing required level value");if(o="fade",f=r.shift(),d=Number.parseFloat(f),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeto: "+f);break;case"fadeoverto":if(r.length<2){var g=[];return r.length<1&&g.push("seconds"),r.length<2&&g.push("level"),this.error("fadeoverto missing required "+g.join(" and ")+" value"+(g.length>1?"s":""))}if(o="fade",f=r.shift(),h=Number.parseFloat(f),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeoverto: "+f);if(f=r.shift(),d=Number.parseFloat(f),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeoverto: "+f);break;case"volume":if(0===r.length)return this.error("volume missing required level value");if(f=r.shift(),s=Number.parseFloat(f),Number.isNaN(s)||!Number.isFinite(s))return this.error("cannot parse volume: "+f);break;case"mute":case"unmute":u="mute"===p;break;case"loop":case"unloop":l="loop"===p;break;case"shuffle":case"unshuffle":c="shuffle"===p;break;default:return this.error("unknown action: "+p)}}try{switch(null!=s&&(t.volume=s),null!=u&&(t.mute=u),null!=l&&(t.loop=l),null!=c&&(t.shuffle=c),o){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"skip":t.skip();break;case"fade":t.fadeWithDuration(h,d)}Config.debug&&this.createDebugView()}catch(e){return this.error("error playing audio: "+e.message)}}}),Macro.add("removeplaylist",{handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("createplaylist").lists,t=String(this.args[0]).trim();if(!e.hasOwnProperty(t))return this.error('playlist "'+t+'" does not exist');e[t].destroy(),delete e[t],Config.debug&&this.createDebugView()}}),Macro.add("waitforaudio",{skipArgs:!0,queue:[],handler:function(){function e(){if(0===t.length)return LoadScreen.unlock(r);var a=t.shift();if(a.hasData())return e();a.one("canplay.waitforaudio error.waitforaudio",function(){jQuery(this).off(".waitforaudio"),e()}).load()}var t=this.self.queue,r=void 0;t.length>0||(this.self.fillQueue(t),t.length>0&&(r=LoadScreen.lock(),e()))},fillQueue:function(e){var t=Macro.get("cacheaudio").tracks;Object.keys(t).forEach(function(r){return e.push(t[r])});var r=Macro.get("createplaylist").lists;if(Object.keys(r).map(function(e){return r[e].tracks}).flatten().filter(function(e){return e.copy}).forEach(function(t){return e.push(t.track)}),Macro.has("setplaylist")){var a=Macro.get("setplaylist").list;null!==a&&a.tracks.forEach(function(t){return e.push(t.track)})}}}),Macro.add("setplaylist",{list:null,handler:function(){if(0===this.args.length)return this.error("no track ID(s) specified");var e=Macro.get("playlist");if(null!==e.from&&"setplaylist"!==e.from)return this.error("playlists have already been defined with <<createplaylist>>");var t=this.self,r=Macro.get("cacheaudio").tracks;null!==t.list&&t.list.destroy(),t.list=SimpleAudio.createList();for(var a=0;a<this.args.length;++a){var n=this.args[a];if(!r.hasOwnProperty(n))return this.error('track "'+n+'" does not exist');t.list.add(r[n])}null===e.from&&(e.from="setplaylist"),Config.debug&&this.createDebugView()}}),Macro.add("stopallaudio",{skipArgs:!0,handler:function(){var e=Macro.get("cacheaudio").tracks;Object.keys(e).forEach(function(t){return e[t].stop()}),Config.debug&&this.createDebugView()}})}else Macro.add(["audio","cacheaudio","createaudiogroup","createplaylist","masteraudio","playlist","removeplaylist","waitforaudio","setplaylist","stopallaudio"],{skipArgs:!0,handler:function(){}});Macro.add("goto",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');setTimeout(function(){return Engine.play(e)},Engine.minDomActionDelay)}}),Macro.add("repeat",{isAsync:!0,tags:null,timers:new Set,handler:function(){var e=this;if(0===this.args.length)return this.error("no time value specified");var t=void 0;try{t=Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0]))}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});var r=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),a=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerInterval(this.createShadowWrapper(function(){var t=document.createDocumentFragment();new Wikifier(t,e.payload[0].contents);var n=a ;r&&(n=jQuery(document.createElement("span")).addClass("macro-repeat-insert macro-repeat-in").appendTo(n)),n.append(t),r&&setTimeout(function(){return n.removeClass("macro-repeat-in")},Engine.minDomActionDelay)}),t)},registerInterval:function(e,t){var r=this;if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var a=State.turns,n=this.timers,i=null;i=setInterval(function(){if(a!==State.turns)return clearInterval(i),void n.delete(i);var t=void 0;try{TempState.break=null,TempState.hasOwnProperty("repeatTimerId")&&(t=TempState.repeatTimerId),TempState.repeatTimerId=i,e.call(r)}finally{void 0!==t?TempState.repeatTimerId=t:delete TempState.repeatTimerId,TempState.break=null}},t),n.add(i),prehistory.hasOwnProperty("#repeat-timers-cleanup")||(prehistory["#repeat-timers-cleanup"]=function(e){delete prehistory[e],n.forEach(function(e){return clearInterval(e)}),n.clear()})}}),Macro.add("stop",{skipArgs:!0,handler:function(){if(!TempState.hasOwnProperty("repeatTimerId"))return this.error("must only be used in conjunction with its parent macro <<repeat>>");var e=Macro.get("repeat").timers,t=TempState.repeatTimerId;clearInterval(t),e.delete(t),TempState.break=2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("timed",{isAsync:!0,tags:["next"],timers:new Set,handler:function(){if(0===this.args.length)return this.error("no time value specified in <<timed>>");var e=[];try{e.push({name:this.name,source:this.source,delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0])),content:this.payload[0].contents})}catch(e){return this.error(e.message+" in <<timed>>")}if(this.payload.length>1){var t=void 0;try{var r=void 0;for(t=1,r=this.payload.length;t<r;++t)e.push({name:this.payload[t].name,source:this.payload[t].source,delay:0===this.payload[t].args.length?e[e.length-1].delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.payload[t].args[0])),content:this.payload[t].contents})}catch(e){return this.error(e.message+" in <<next>> (#"+t+")")}}Config.debug&&this.debugView.modes({block:!0});var a=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),n=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerTimeout(this.createShadowWrapper(function(e){var t=document.createDocumentFragment();new Wikifier(t,e.content);var r=n;Config.debug&&"next"===e.name&&(r=jQuery(new DebugView(r[0],"macro",e.name,e.source).output)),a&&(r=jQuery(document.createElement("span")).addClass("macro-timed-insert macro-timed-in").appendTo(r)),r.append(t),a&&setTimeout(function(){return r.removeClass("macro-timed-in")},Engine.minDomActionDelay)}),e)},registerTimeout:function(e,t){if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var r=State.turns,a=this.timers,n=null,i=t.shift(),o=function o(){if(a.delete(n),r===State.turns){var s=i;null!=(i=t.shift())&&(n=setTimeout(o,i.delay),a.add(n)),e.call(this,s)}};n=setTimeout(o,i.delay),a.add(n),prehistory.hasOwnProperty("#timed-timers-cleanup")||(prehistory["#timed-timers-cleanup"]=function(e){delete prehistory[e],a.forEach(function(e){return clearTimeout(e)}),a.clear()})}}),Macro.add("widget",{tags:null,handler:function(){if(0===this.args.length)return this.error("no widget name specified");var e=this.args[0];if(Macro.has(e)){if(!Macro.get(e).isWidget)return this.error('cannot clobber existing macro "'+e+'"');Macro.delete(e)}try{Macro.add(e,{isWidget:!0,handler:function(e){return function(){var t=void 0;try{State.variables.hasOwnProperty("args")&&(t=State.variables.args),State.variables.args=[].concat(_toConsumableArray(this.args)),State.variables.args.raw=this.args.raw,State.variables.args.full=this.args.full,this.addShadow("$args");var r=document.createDocumentFragment(),a=[];if(new Wikifier(r,e),Array.from(r.querySelectorAll(".error")).forEach(function(e){a.push(e.textContent)}),0!==a.length)return this.error("error"+(a.length>1?"s":"")+" within widget contents ("+a.join("; ")+")");this.output.appendChild(r)}catch(e){return this.error("cannot execute widget: "+e.message)}finally{void 0!==t?State.variables.args=t:delete State.variables.args}}}(this.payload[0].contents)}),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(t){return this.error('cannot create widget macro "'+e+'": '+t.message)}}})}();var Dialog=function(){function e(){m=function(){var e=void 0;try{var t=document.createElement("p"),r=document.createElement("div");t.style.width="100%",t.style.height="200px",r.style.position="absolute",r.style.left="0px",r.style.top="0px",r.style.width="100px",r.style.height="100px",r.style.visibility="hidden",r.style.overflow="hidden",r.appendChild(t),document.body.appendChild(r);var a=t.offsetWidth;r.style.overflow="auto";var n=t.offsetWidth;a===n&&(n=r.clientWidth),document.body.removeChild(r),e=a-n}catch(e){}return e||17}();var e=jQuery(document.createDocumentFragment()).append('<div id="ui-overlay" class="ui-close"></div><div id="ui-dialog" tabindex="0" role="dialog" aria-labelledby="ui-dialog-title"><div id="ui-dialog-titlebar"><h1 id="ui-dialog-title"></h1><button id="ui-dialog-close" class="ui-close" tabindex="0" aria-label="'+L10n.get("close")+'">î „</button></div><div id="ui-dialog-body"></div></div>');d=jQuery(e.find("#ui-overlay").get(0)),h=jQuery(e.find("#ui-dialog").get(0)),f=jQuery(e.find("#ui-dialog-title").get(0)),p=jQuery(e.find("#ui-dialog-body").get(0)),e.insertBefore("#store-area")}function t(e){return h.hasClass("open")&&(!e||e.splitOrEmpty(/\s+/).every(function(e){return p.hasClass(e)}))}function r(e,t){return p.empty().removeClass(),null!=t&&p.addClass(t),f.empty().append((null!=e?String(e):"")||" "),p.get(0)}function a(){return p.get(0)}function n(){var e;return(e=p).append.apply(e,arguments),Dialog}function i(){var e;return(e=p).wiki.apply(e,arguments),Dialog}function o(e,t,r,a,n){return jQuery(e).ariaClick(function(e){e.preventDefault(),"function"==typeof r&&r(e),s(t,n),"function"==typeof a&&a(e)})}function s(e,r){var a=jQuery.extend({top:50},e),n=a.top;t()||(g=safeActiveElement()),jQuery(document.documentElement).attr("data-dialog","open"),d.addClass("open"),null!==p[0].querySelector("img")&&p.imagesLoaded().always(function(){return l({data:{top:n}})}),jQuery("body>:not(script,#store-area,#ui-bar,#ui-overlay,#ui-dialog)").attr("tabindex",-3).attr("aria-hidden",!0),jQuery("#ui-bar,#story").find("[tabindex]:not([tabindex^=-])").attr("tabindex",-2).attr("aria-hidden",!0);var i=c(n);return h.css(i).addClass("open").focus(),jQuery(window).on("resize.dialog-resize",null,{top:n},jQuery.throttle(40,l)),Has.mutationObserver?(v=new MutationObserver(function(e){for(var t=0;t<e.length;++t)if("childList"===e[t].type){l({data:{top:n}});break}}),v.observe(p[0],{childList:!0,subtree:!0})):p.on("DOMNodeInserted.dialog-resize DOMNodeRemoved.dialog-resize",null,{top:n},jQuery.throttle(40,l)),jQuery(document).on("click.dialog-close",".ui-close",{closeFn:r},u).on("keypress.dialog-close",".ui-close",function(e){13!==e.which&&32!==e.which||jQuery(this).trigger("click")}),setTimeout(function(){return jQuery.event.trigger(":dialogopen")},Engine.minDomActionDelay),Dialog}function u(e){return jQuery(document).off(".dialog-close"),v?(v.disconnect(),v=null):p.off(".dialog-resize"),jQuery(window).off(".dialog-resize"),h.removeClass("open").css({left:"",right:"",top:"",bottom:""}),jQuery("#ui-bar,#story").find("[tabindex=-2]").removeAttr("aria-hidden").attr("tabindex",0),jQuery("body>[tabindex=-3]").removeAttr("aria-hidden").removeAttr("tabindex"),f.empty(),p.empty().removeClass(),d.removeClass("open"),jQuery(document.documentElement).removeAttr("data-dialog"),null!==g&&(jQuery(g).focus(),g=null),e&&e.data&&"function"==typeof e.data.closeFn&&e.data.closeFn(e),setTimeout(function(){return jQuery.event.trigger(":dialogclose")},Engine.minDomActionDelay),Dialog}function l(e){var t=e&&e.data&&void 0!==e.data.top?e.data.top:50;"block"===h.css("display")&&(h.css({display:"none"}),h.css(jQuery.extend({display:""},c(t))))}function c(e){var t=null!=e?e:50,r=jQuery(window),a={left:"",right:"",top:"",bottom:""};h.css(a);var n=r.width()-h.outerWidth(!0)-1,i=r.height()-h.outerHeight(!0)-1;return n<=32+m&&(i-=m),i<=32+m&&(n-=m),a.left=a.right=n<=32?16:n/2>>0,a.top=i<=32?a.bottom=16:i/2>t?t:a.bottom=i/2>>0,Object.keys(a).forEach(function(e){""!==a[e]&&(a[e]+="px")}),a}var d=null,h=null,f=null,p=null,g=null,m=0,v=null;return Object.freeze(Object.defineProperties({},{init:{value:e},isOpen:{value:t},setup:{value:r},body:{value:a},append:{value:n},wiki:{value:i},addClickHandler:{value:o},open:{value:s},close:{value:u},resize:{value:function(e){return l("object"===(void 0===e?"undefined":_typeof(e))?{data:e}:undefined)}}}))}(),Engine=function(){function e(){jQuery("#init-no-js,#init-lacking").remove(),function(){var e=jQuery(document.createDocumentFragment()),t=Story.has("StoryInterface")&&Story.get("StoryInterface").text.trim();if(t){if(UIBar.destroy(),jQuery(document.head).find("#style-core-display").remove(),e.append(t),0===e.find("#passages").length)throw new Error('no element with ID "passages" found within "StoryInterface" special passage')}else e.append('<div id="story" role="main"><div id="passages"></div></div>');e.insertBefore("#store-area")}(),S=new StyleWrapper(function(){return jQuery(document.createElement("style")).attr({id:"style-aria-outlines",type:"text/css"}).appendTo(document.head).get(0)}()),jQuery(document).on("mousedown.aria-outlines keydown.aria-outlines",function(e){return"keydown"===e.type?m():g()})}function t(){if(Story.has("StoryInit"))try{var e=Wikifier.wikifyEval(Story.get("StoryInit").text);if(Config.debug){var t=new DebugView(document.createDocumentFragment(),"special","StoryInit","StoryInit");t.modes({hidden:!0}),t.append(e),k=t.output}}catch(e){console.error(e),Alert.error("StoryInit",e.message)}if(Config.history.maxStates=Math.max(0,Config.history.maxStates),Number.isSafeInteger(Config.history.maxStates)||(Config.history.maxStates=100),1===Config.history.maxStates&&(Config.history.controls=!1),null==Config.passages.start)throw new Error("starting passage not selected");if(!Story.has(Config.passages.start))throw new Error('starting passage ("'+Config.passages.start+'") not found');if(jQuery(document.documentElement).focus(),State.restore())h();else{var r=!0;switch(_typeof(Config.saves.autoload)){case"boolean":Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!Save.autosave.load());break;case"string":"prompt"===Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!1,UI.buildAutoload(),Dialog.open());break;case"function":Save.autosave.ok()&&Save.autosave.has()&&Config.saves.autoload()&&(r=!Save.autosave.load())}r&&f(Config.passages.start)}}function r(){LoadScreen.show(),window.scroll(0,0),State.reset(),jQuery.event.trigger(":enginerestart"),window.location.reload()}function a(){return b}function n(){return b===v.Idle}function i(){return b!==v.Idle}function o(){return b===v.Rendering}function s(){return w}function u(e){var t=State.goTo(e);return t&&h(),t}function l(e){var t=State.go(e);return t&&h(),t}function c(){return l(-1)}function d(){return l(1)}function h(){return f(State.passage,!0)}function f(e,t){var r=e;b=v.Playing,TempState={},State.clearTemporary();var a=void 0,n=void 0;if("function"==typeof Config.navigation.override)try{var i=Config.navigation.override(r);i&&(r=i)}catch(e){}var o=Story.get(r);if(jQuery.event.trigger({type:":passageinit",passage:o}),Object.keys(prehistory).forEach(function(e){"function"==typeof prehistory[e]&&prehistory[e].call(this,e)},o),t||State.create(o.title),w=Util.now(),document.body.className&&(document.body.className=""),Object.keys(predisplay).forEach(function(e){"function"==typeof predisplay[e]&&predisplay[e].call(this,e)},o),Story.has("PassageReady"))try{a=Wikifier.wikifyEval(Story.get("PassageReady").text)}catch(e){console.error(e),Alert.error("PassageReady",e.message)}b=v.Rendering;var s=jQuery(o.render()),u=document.getElementById("passages");if(u.hasChildNodes()&&("number"==typeof Config.passages.transitionOut||"string"==typeof Config.passages.transitionOut&&""!==Config.passages.transitionOut&&""!==Config.transitionEndEventName?[].concat(_toConsumableArray(u.childNodes)).forEach(function(e){var t=jQuery(e);if(e.nodeType===Node.ELEMENT_NODE&&t.hasClass("passage")){if(t.hasClass("passage-out"))return;t.attr("id","out-"+t.attr("id")).addClass("passage-out"),"string"==typeof Config.passages.transitionOut?t.on(Config.transitionEndEventName,function(e){e.originalEvent.propertyName===Config.passages.transitionOut&&t.remove()}):setTimeout(function(){return t.remove()},Math.max(y,Config.passages.transitionOut))}else t.remove()}):jQuery(u).empty()),s.addClass("passage-in").appendTo(u),setTimeout(function(){return s.removeClass("passage-in")},y),Config.passages.displayTitles&&o.title!==Config.passages.start&&(document.title=o.title+" | "+Story.title),window.scroll(0,0),b=v.Playing,Story.has("PassageDone"))try{n=Wikifier.wikifyEval(Story.get("PassageDone").text)}catch(e){console.error(e),Alert.error("PassageDone",e.message)}if(jQuery.event.trigger({type:":passagedisplay",passage:o}),Object.keys(postdisplay).forEach(function(e){"function"==typeof postdisplay[e]&&postdisplay[e].call(this,e)},o),Config.ui.updateStoryElements&&UIBar.setStoryElements(),Config.debug){var l=void 0;null!=a&&(l=new DebugView(document.createDocumentFragment(),"special","PassageReady","PassageReady"),l.modes({hidden:!0}),l.append(a),s.prepend(l.output)),null!=n&&(l=new DebugView(document.createDocumentFragment(),"special","PassageDone","PassageDone"),l.modes({hidden:!0}),l.append(n),s.append(l.output)),1===State.turns&&null!=k&&s.prepend(k)}switch(g(),jQuery("#story").find("a[href]:not(.link-external)").addClass("link-external").end().find("a,link,button,input,select,textarea").not("[tabindex]").attr("tabindex",0),_typeof(Config.saves.autosave)){case"boolean":Config.saves.autosave&&Save.autosave.save();break;case"string":o.tags.includes(Config.saves.autosave)&&Save.autosave.save();break;case"object":Array.isArray(Config.saves.autosave)&&o.tags.some(function(e){return Config.saves.autosave.includes(e)})&&Save.autosave.save()}return jQuery.event.trigger({type:":passageend",passage:o}),b=v.Idle,w=Util.now(),s[0]}function p(e,t,r){var a=!1;switch(r){case undefined:break;case"replace":case"back":a=!0;break;default:throw new Error('Engine.display option parameter called with obsolete value "'+r+'"; please notify the developer')}f(e,a)}function g(){S.set("*:focus{outline:none}")}function m(){S.clear()}var v=Util.toEnum({Idle:"idle",Playing:"playing",Rendering:"rendering"}),y=40,b=v.Idle,w=null,k=null,S=null;return Object.freeze(Object.defineProperties({},{States:{value:v},minDomActionDelay:{value:y},init:{value:e},start:{value:t},restart:{value:r},state:{get:a},isIdle:{value:n},isPlaying:{value:i},isRendering:{value:o},lastPlay:{get:s},goTo:{value:u},go:{value:l},backward:{value:c},forward:{value:d},show:{value:h},play:{value:f},display:{value:p}}))}(),Passage=function(){var e=void 0,t=void 0;e=/^(?:debug|nobr|passage|script|stylesheet|widget|twine\..*)$/i;var r=/(?:\\n|\\t|\\s|\\|\r)/g,a=new RegExp(r.source),n=Object.freeze({"\\n":"\n","\\t":"\t","\\s":"\\","\\":"\\","\r":""});return t=function(e){if(null==e)return"";var t=String(e);return t&&a.test(t)?t.replace(r,function(e){return n[e]}):t},function(){function r(t,a){var n=this;_classCallCheck(this,r),Object.defineProperties(this,{title:{value:Util.unescape(t)},element:{value:a||null},tags:{value:Object.freeze(a&&a.hasAttribute("tags")?a.getAttribute("tags").trim().splitOrEmpty(/\s+/).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}):[])},_excerpt:{writable:!0,value:null}}),Object.defineProperties(this,{domId:{value:"passage-"+Util.slugify(this.title)},classes:{value:Object.freeze(0===this.tags.length?[]:function(){return n.tags.filter(function(t){return!e.test(t)}).map(function(e){return Util.slugify(e)})}())}})}return _createClass(r,[{key:"description",value:function(){var e=Config.passages.descriptions;if(null!=e)switch(void 0===e?"undefined":_typeof(e)){case"boolean":if(e)return this.title;break;case"object":if(e instanceof Map&&e.has(this.title))return e.get(this.title);if(e.hasOwnProperty(this.title))return e[this.title];break;case"function":var t=e.call(this);if(t)return t;break;default:throw new TypeError("Config.passages.descriptions must be a boolean, object, or function")}return null===this._excerpt&&(this._excerpt=r.getExcerptFromText(this.text)),this._excerpt}},{key:"processText",value:function(){if(null==this.element)return this.text;var e=this.text;return this.tags.includes("Twine.image")?e="[img["+e+"]]":(Config.passages.nobr||this.tags.includes("nobr"))&&(e=e.replace(/^\n+|\n+$/g,"").replace(/\n+/g," ")),e}},{key:"render",value:function(){var e=this,t=this.tags.length>0?this.tags.join(" "):null,a=document.createElement("div");return jQuery(a).attr({id:this.domId,"data-passage":this.title,"data-tags":t}).addClass("passage "+this.className),jQuery(document.body).attr("data-tags",t).addClass(this.className),jQuery(document.documentElement).attr("data-tags",t),jQuery.event.trigger({type:":passagestart",content:a,passage:this}),Object.keys(prerender).forEach(function(t){"function"==typeof prerender[t]&&prerender[t].call(e,a,t)}),Story.has("PassageHeader")&&new Wikifier(a,Story.get("PassageHeader").processText()),new Wikifier(a,this.processText()),Story.has("PassageFooter")&&new Wikifier(a,Story.get("PassageFooter").processText()),jQuery.event.trigger({type:":passagerender",content:a,passage:this}),Object.keys(postrender).forEach(function(t){"function"==typeof postrender[t]&&postrender[t].call(e,a,t)}),this._excerpt=r.getExcerptFromNode(a),a}},{key:"className",get:function(){return this.classes.join(" ")}},{key:"text",get:function(){if(null==this.element){var e=Util.escape(this.title);return'<div class="error-view"><span class="error">'+(L10n.get("errorTitle")+": "+L10n.get("errorNonexistentPassage",{passage:e}))+"</span></div>"}return t(this.element.textContent)}}],[{key:"getExcerptFromNode",value:function(e,t){if(!e.hasChildNodes())return"";var r=e.textContent.trim();if(""!==r){var a=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})");r=r.replace(/\s+/g," ").match(a)}return r?r[1]+"…":"…"}},{key:"getExcerptFromText",value:function(e,t){if(""===e)return"";var r=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})"),a=e.replace(/<<.*?>>/g," ").replace(/<.*?>/g," ").trim().replace(/^\s*\|.*\|.*?$/gm,"").replace(/\[[<>]?img\[[^\]]*\]\]/g,"").replace(/\[\[([^|\]]*?)(?:(?:\||->|<-)[^\]]*)?\]\]/g,"$1").replace(/^\s*!+(.*?)$/gm,"$1").replace(/'{2}|\/{2}|_{2}|@{2}/g,"").trim().replace(/\s+/g," ").match(r);return a?a[1]+"…":"…"}}]),r}()}(),Save=function(){function e(){if("cookie"===storage.name)return a(),Config.saves.autosave=undefined,Config.saves.slots=0,!1;Config.saves.slots=Math.max(0,Config.saves.slots),Number.isSafeInteger(Config.saves.slots)||(Config.saves.slots=8);var e=r(),t=!1;Array.isArray(e)&&(e={autosave:null,slots:e},t=!0),Config.saves.slots!==e.slots.length&&(Config.saves.slots<e.slots.length?(e.slots.reverse(),e.slots=e.slots.filter(function(e){return!(null===e&&this.count>0)||(--this.count,!1)},{count:e.slots.length-Config.saves.slots}),e.slots.reverse()):Config.saves.slots>e.slots.length&&x(e.slots,Config.saves.slots-e.slots.length),t=!0),T(e.autosave)&&(t=!0);for(var n=0;n<e.slots.length;++n)T(e.slots[n])&&(t=!0);return j(e)&&(storage.delete("saves"),t=!1),t&&C(e),P=e.slots.length-1,!0}function t(){return{autosave:null,slots:x([],Config.saves.slots)}}function r(){var e=storage.get("saves");return null===e?t():e}function a(){return storage.delete("saves"),!0}function n(){return i()||d()}function i(){return"cookie"!==storage.name&&void 0!==Config.saves.autosave}function o(){return null!==r().autosave}function s(){return r().autosave}function u(){var e=r();return null!==e.autosave&&A(e.autosave)}function l(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return!1;var a=r(),n={title:e||Story.get(State.passage).description(),date:Date.now()};return null!=t&&(n.metadata=t),a.autosave=O(n),C(a)}function c(){var e=r();return e.autosave=null,C(e)}function d(){return"cookie"!==storage.name&&-1!==P}function h(){return P+1}function f(){if(!d())return 0;for(var e=r(),t=0,a=0,n=e.slots.length;a<n;++a)null!==e.slots[a]&&++t;return t}function p(){return 0===f()}function g(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])}function m(e){if(e<0||e>P)return null;var t=r();return e>=t.slots.length?null:t.slots[e]}function v(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])&&A(t.slots[e])}function y(e,t,a){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return Dialog.isOpen()?$(document).one(":dialogclose",function(){return UI.alert(L10n.get("savesDisallowed"))}):UI.alert(L10n.get("savesDisallowed")),!1;if(e<0||e>P)return!1;var n=r();if(e>=n.slots.length)return!1;var i={title:t||Story.get(State.passage).description(),date:Date.now()};return null!=a&&(i.metadata=a),n.slots[e]=O(i),C(n)}function b(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length)&&(t.slots[e]=null,C(t))}function w(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return void(Dialog.isOpen()?$(document).one(":dialogclose",function(){return UI.alert(L10n.get("savesDisallowed"))}):UI.alert(L10n.get("savesDisallowed")));var r=null==e?Story.domId:Util.slugify(e),a=r+"-"+function(){var e=new Date,t=e.getMonth()+1,r=e.getDate(),a=e.getHours(),n=e.getMinutes(),i=e.getSeconds();return t<10&&(t="0"+t),r<10&&(r="0"+r),a<10&&(a="0"+a),n<10&&(n="0"+n),i<10&&(i="0"+i),""+e.getFullYear()+t+r+"-"+a+n+i}()+".save",n=null==t?{}:{metadata:t},i=LZString.compressToBase64(JSON.stringify(O(n)));saveAs(new Blob([i],{type:"text/plain;charset=UTF-8"}),a)}function k(e){var t=e.target.files[0],r=new FileReader;jQuery(r).on("load",function(e){var r=e.currentTarget;if(r.result){var a=void 0;try{a=JSON.parse(/\.json$/i.test(t.name)||/^\{/.test(r.result)?r.result:LZString.decompressFromBase64(r.result))}catch(e){}A(a)}}),r.readAsText(t)}function S(e){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return Dialog.isOpen()?$(document).one(":dialogclose",function(){return UI.alert(L10n.get("savesDisallowed"))}):UI.alert(L10n.get("savesDisallowed")),null;var t=null==e?{}:{metadata:e};return LZString.compressToBase64(JSON.stringify(O(t)))}function E(e){var t=void 0;try{t=JSON.parse(LZString.decompressFromBase64(e))}catch(e){}return A(t)?t.metadata:null}function x(e,t){for(var r=0;r<t;++r)e.push(null);return e}function j(e){for(var t=e.slots,r=!0,a=0,n=t.length;a<n;++a)if(null!==t[a]){r=!1;break}return null===e.autosave&&r}function C(e){return j(e)?(storage.delete("saves"),!0):storage.set("saves",e)}function T(e){if(null==e||"object"!==(void 0===e?"undefined":_typeof(e)))return!1;var t=!1;return e.hasOwnProperty("state")&&e.state.hasOwnProperty("delta")&&e.state.hasOwnProperty("index")||(e.hasOwnProperty("data")?(delete e.mode,e.state={delta:State.deltaEncode(e.data)},delete e.data):e.state.hasOwnProperty("delta")?e.state.hasOwnProperty("index")||delete e.state.mode:(delete e.state.mode,e.state.delta=State.deltaEncode(e.state.history),delete e.state.history),e.state.index=e.state.delta.length-1,t=!0),e.state.hasOwnProperty("rseed")&&(e.state.seed=e.state.rseed,delete e.state.rseed,e.state.delta.forEach(function(e,t,r){r[t].hasOwnProperty("rcount")&&(r[t].pull=r[t].rcount,delete r[t].rcount)}),t=!0),(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired||e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired&&delete e.state.expired,(e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.expired=[],e.state.hasOwnProperty("unique")&&(e.state.expired.push(e.state.unique),delete e.state.unique),e.state.hasOwnProperty("last")&&(e.state.expired.push(e.state.last),delete e.state.last)),t=!0),t}function O(e){if(null!=e&&"object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("supplemental parameter must be an object");var t=Object.assign({},e,{id:Config.saves.id,state:State.marshalForSave()});return Config.saves.version&&(t.version=Config.saves.version),"function"==typeof Config.saves.onSave&&Config.saves.onSave(t),t.state.delta=State.deltaEncode(t.state.history),delete t.state.history,t}function A(e){try{if(T(e),!e||!e.hasOwnProperty("id")||!e.hasOwnProperty("state"))throw new Error(L10n.get("errorSaveMissingData"));if(e.state.history=State.deltaDecode(e.state.delta),delete e.state.delta,"function"==typeof Config.saves.onLoad&&Config.saves.onLoad(e),e.id!==Config.saves.id)throw new Error(L10n.get("errorSaveIdMismatch"));State.unmarshalForSave(e.state),Engine.show()}catch(e){return UI.alert(e.message.toUpperFirst()+".</p><p>"+L10n.get("aborting")+"."),!1}return!0}var P=-1;return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:r},clear:{value:a},ok:{value:n},autosave:{value:Object.freeze(Object.defineProperties({},{ok:{value:i},has:{value:o},get:{value:s},load:{value:u},save:{value:l},delete:{value:c}}))},slots:{value:Object.freeze(Object.defineProperties({},{ok:{value:d},length:{get:h},isEmpty:{value:p},count:{value:f},has:{value:g},get:{value:m},load:{value:v},save:{value:y},delete:{value:b}}))},export:{value:w},import:{value:k},serialize:{value:S},deserialize:{value:E}}))}(),Setting=function(){function e(){if(storage.has("options")){var e=storage.get("options");null!==e&&(window.SugarCube.settings=settings=Object.assign(t(),e)),r(),storage.delete("options")}a(),m.forEach(function(e){if(e.hasOwnProperty("onInit")){var t={name:e.name,value:settings[e.name],default:e.default};e.hasOwnProperty("list")&&(t.list=e.list),e.onInit.call(t)}})}function t(){return Object.create(null)}function r(){var e=t();return Object.keys(settings).length>0&&m.filter(function(e){return e.type!==v.Header&&settings[e.name]!==e.default}).forEach(function(t){return e[t.name]=settings[t.name]}),0===Object.keys(e).length?(storage.delete("settings"),!0):storage.set("settings",e)}function a(){var e=t(),r=storage.get("settings")||t();m.filter(function(e){return e.type!==v.Header}).forEach(function(t){return e[t.name]=t.default}),window.SugarCube.settings=settings=Object.assign(e,r)}function n(){return window.SugarCube.settings=settings=t(),storage.delete("settings"),!0}function i(e){if(0===arguments.length)n(),a();else{if(null==e||!f(e))throw new Error('nonexistent setting "'+e+'"');var t=p(e);t.type!==v.Header&&(settings[e]=t.default)}return r()}function o(e,t){m.forEach(e,t)}function s(e,t,r){if(arguments.length<3){var a=[];throw arguments.length<1&&a.push("type"),arguments.length<2&&a.push("name"),arguments.length<3&&a.push("definition"),new Error("missing parameters, no "+a.join(" or ")+" specified")}if("object"!==(void 0===r?"undefined":_typeof(r)))throw new TypeError("definition parameter must be an object");if(f(t))throw new Error('cannot clobber existing setting "'+t+'"');var n={type:e,name:t,label:"string"==typeof r.label?r.label.trim():""};if("string"==typeof r.desc){var i=r.desc.trim();""!==i&&(n.desc=i)}switch(e){case v.Header:break;case v.Toggle:n.default=!!r.default;break;case v.List:if(!r.hasOwnProperty("list"))throw new Error("no list specified");if(!Array.isArray(r.list))throw new TypeError("list must be an array");if(0===r.list.length)throw new Error("list must not be empty");if(n.list=Object.freeze(r.list),null==r.default)n.default=r.list[0];else{var o=r.list.indexOf(r.default);if(-1===o)throw new Error("list does not contain default");n.default=r.list[o]}break;case v.Range:if(!r.hasOwnProperty("min"))throw new Error("no min specified");if("number"!=typeof r.min||Number.isNaN(r.min)||!Number.isFinite(r.min))throw new TypeError("min must be a finite number");if(!r.hasOwnProperty("max"))throw new Error("no max specified");if("number"!=typeof r.max||Number.isNaN(r.max)||!Number.isFinite(r.max))throw new TypeError("max must be a finite number");if(!r.hasOwnProperty("step"))throw new Error("no step specified");if("number"!=typeof r.step||Number.isNaN(r.step)||!Number.isFinite(r.step)||r.step<=0)throw new TypeError("step must be a finite number greater than zero");var s=function(){var e=String(r.step),t=e.lastIndexOf(".");return-1===t?0:e.length-t-1}();if(function(e){if(s>0){var t=Number(r.min+"e"+s),a=Number(r.step+"e"+s),n=Number(e+"e"+s)-t;return Number(n-n%a+t+"e-"+s)}var i=e-r.min;return i-i%r.step+r.min}(r.max)!==r.max)throw new RangeError("max ("+r.max+") is not a multiple of the step ("+r.step+") plus the min ("+r.min+")");if(n.max=r.max,n.min=r.min,n.step=r.step,null==r.default)n.default=r.max;else{if("number"!=typeof r.default||Number.isNaN(r.default)||!Number.isFinite(r.default))throw new TypeError("default must be a finite number");if(r.default<r.min)throw new RangeError("default ("+r.default+") is less than min ("+r.min+")");if(r.default>r.max)throw new RangeError("default ("+r.default+") is greater than max ("+r.max+")");n.default=r.default}break;default:throw new Error("unknown Setting type: "+e)}"function"==typeof r.onInit&&(n.onInit=Object.freeze(r.onInit)),"function"==typeof r.onChange&&(n.onChange=Object.freeze(r.onChange)),m.push(Object.freeze(n))}function u(e,t){s(v.Header,e,{desc:t})}function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[v.Toggle].concat(t))}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[v.List].concat(t))}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[v.Range].concat(t))}function h(){return 0===m.length}function f(e){return m.some(function(t){return t.name===e})}function p(e){return m.find(function(t){return t.name===e})}function g(e){f(e)&&delete settings[e];for(var t=0;t<m.length;++t)if(m[t].name===e){m.splice(t,1),g(e);break}}var m=[],v=Util.toEnum({Header:0,Toggle:1,List:2,Range:3});return Object.freeze(Object.defineProperties({},{Types:{value:v},init:{value:e},create:{value:t},save:{value:r},load:{value:a},clear:{value:n},reset:{value:i},forEach:{value:o},add:{value:s},addHeader:{value:u},addToggle:{value:l},addList:{value:c},addRange:{value:d},isEmpty:{value:h},has:{value:f},get:{value:p},delete:{value:g}}))}(),Story=function(){function e(){function e(e){if(e.tags.includesAny(a))throw new Error('starting passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return a.includes(e)}).sort().join('", "')+'"')}function t(e){if(n.includes(e.title)&&e.tags.includesAny(a))throw new Error('special passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return a.includes(e)}).sort().join('", "')+'"')}var a=["widget"],n=["PassageDone","PassageFooter","PassageHeader","PassageReady","StoryAuthor","StoryBanner","StoryCaption","StoryInit","StoryMenu","StoryShare","StorySubtitle"],i=function(e){var t=[].concat(a),r=[];if(e.tags.forEach(function(e){t.includes(e)&&r.push.apply(r,_toConsumableArray(t.delete(e)))}),r.length>1)throw new Error('code passage "'+e.title+'" contains multiple code tags; invalid: "'+r.sort().join('", "')+'"')};if(a.unshift("script","stylesheet"),n.push("StoryTitle"),Config.passages.start=function(){var e=String("START_AT");return""!==e?(Config.debug=!0,e):"Start"}(),jQuery("#store-area").children(':not([tags~="Twine.private"],[tags~="annotation"])').each(function(){var r=jQuery(this),a=new Passage(r.attr("tiddler"),this);a.title===Config.passages.start?(e(a),c[a.title]=a):a.tags.includes("stylesheet")?(i(a),d.push(a)):a.tags.includes("script")?(i(a),h.push(a)):a.tags.includes("widget")?(i(a),f.push(a)):(t(a),c[a.title]=a)}),!c.hasOwnProperty("StoryTitle"))throw new Error('cannot find the "StoryTitle" special passage') -;var o=document.createDocumentFragment();new Wikifier(o,c.StoryTitle.processText().trim()),r(o.textContent.trim()),Config.saves.id=Story.domId}function t(){!function(){var e=document.createElement("style");new StyleWrapper(e).add(d.map(function(e){return e.text.trim()}).join("\n")),jQuery(e).appendTo(document.head).attr({id:"style-story",type:"text/css"})}();for(var e=0;e<h.length;++e)try{Scripting.evalJavaScript(h[e].text)}catch(t){console.error(t),Alert.error(h[e].title,"object"===(void 0===t?"undefined":_typeof(t))?t.message:t)}for(var t=0;t<f.length;++t)try{Wikifier.wikifyEval(f[t].processText())}catch(e){console.error(e),Alert.error(f[t].title,"object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}}function r(e){if(null==e||""===e)throw new Error("story title cannot be null or empty");document.title=p=Util.unescape(e),m=Util.slugify(p)}function a(){return p}function n(){return m}function i(){return g}function o(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":return c.hasOwnProperty(String(e));case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.has title parameter cannot be "+t)}function s(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r)?c[r]:new Passage(r||"(unknown)");case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.get title parameter cannot be "+t)}function u(e,t){for(var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"title",a=Object.keys(c),n=[],i=0;i<a.length;++i){var o=c[a[i]];if(o.hasOwnProperty(e))switch(_typeof(o[e])){case"undefined":break;case"object":o[e]instanceof Array&&o[e].some(function(e){return e==t})&&n.push(o);break;default:o[e]==t&&n.push(o)}}return n.sort(function(e,t){return e[r]==t[r]?0:e[r]<t[r]?-1:1}),n}function l(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"title";if("function"!=typeof e)throw new Error("Story.lookupWith filter parameter must be a function");for(var r=Object.keys(c),a=[],n=0;n<r.length;++n){var i=c[r[n]];e(i)&&a.push(i)}return a.sort(function(e,r){return e[t]==r[t]?0:e[t]<r[t]?-1:1}),a}var c={},d=[],h=[],f=[],p="",g="",m="";return Object.freeze(Object.defineProperties({},{passages:{value:c},styles:{value:d},scripts:{value:h},widgets:{value:f},load:{value:e},init:{value:t},title:{get:a},domId:{get:n},ifId:{get:i},has:{value:o},get:{value:s},lookup:{value:u},lookupWith:{value:l}}))}(),UI=function(){function e(e,t){var r=t,a=Config.debug,n=Config.cleanupWikifierOutput;Config.debug=!1,Config.cleanupWikifierOutput=!1;try{null==r&&(r=document.createElement("ul"));var i=document.createDocumentFragment();new Wikifier(i,Story.get(e).processText().trim());var o=[].concat(_toConsumableArray(i.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(o.length>0)throw new Error(o.join("; "));for(;i.hasChildNodes();){var s=i.firstChild;if(s.nodeType===Node.ELEMENT_NODE&&"A"===s.nodeName.toUpperCase()){var u=document.createElement("li");r.appendChild(u),u.appendChild(s)}else i.removeChild(s)}}finally{Config.cleanupWikifierOutput=n,Config.debug=a}return r}function t(e){jQuery(Dialog.setup("Alert","alert")).append("<p>"+e+'</p><ul class="buttons"><li><button id="alert-ok" class="ui-close">'+L10n.get(["alertOk","ok"])+"</button></li></ul>");for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];Dialog.open.apply(Dialog,r)}function r(){u(),Dialog.open.apply(Dialog,arguments)}function a(){l(),Dialog.open.apply(Dialog,arguments)}function n(){c(),Dialog.open.apply(Dialog,arguments)}function i(){d(),Dialog.open.apply(Dialog,arguments)}function o(){h(),Dialog.open.apply(Dialog,arguments)}function s(){return jQuery(Dialog.setup(L10n.get("autoloadTitle"),"autoload")).append("<p>"+L10n.get("autoloadPrompt")+'</p><ul class="buttons"><li><button id="autoload-ok" class="ui-close">'+L10n.get(["autoloadOk","ok"])+'</button></li><li><button id="autoload-cancel" class="ui-close">'+L10n.get(["autoloadCancel","cancel"])+"</button></li></ul>"),jQuery(document).one("click.autoload",".ui-close",function(e){var t="autoload-ok"===e.target.id;jQuery(document).one(":dialogclose",function(){t&&Save.autosave.load()||Engine.play(Config.passages.start)})}),!0}function u(){var e=document.createElement("ul");jQuery(Dialog.setup(L10n.get("jumptoTitle"),"jumpto list")).append(e);for(var t=State.expired.length,r=State.size-1;r>=0;--r)if(r!==State.activeIndex){var a=Story.get(State.history[r].title);a&&a.tags.includes("bookmark")&&jQuery(document.createElement("li")).append(jQuery(document.createElement("a")).ariaClick({one:!0},function(e){return function(){return jQuery(document).one(":dialogclose",function(){return Engine.goTo(e)})}}(r)).addClass("ui-close").text(L10n.get("jumptoTurn")+" "+(t+r+1)+": "+a.description())).appendTo(e)}e.hasChildNodes()||jQuery(e).append("<li><a><em>"+L10n.get("jumptoUnavailable")+"</em></a></li>")}function l(){return jQuery(Dialog.setup(L10n.get("restartTitle"),"restart")).append("<p>"+L10n.get("restartPrompt")+'</p><ul class="buttons"><li><button id="restart-ok">'+L10n.get(["restartOk","ok"])+'</button></li><li><button id="restart-cancel" class="ui-close">'+L10n.get(["restartCancel","cancel"])+"</button></li></ul>").find("#restart-ok").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){return Engine.restart()}),Dialog.close()}),!0}function c(){function e(e,t,r,a){var n=jQuery(document.createElement("button")).attr("id","saves-"+e).html(r);return t&&n.addClass(t),a?n.ariaClick(a):n.ariaDisabled(!0),jQuery(document.createElement("li")).append(n)}var r=jQuery(Dialog.setup(L10n.get("savesTitle"),"saves")),a=Save.ok();if(a&&r.append(function(){function e(e,t,r,a,n){var i=jQuery(document.createElement("button")).attr("id","saves-"+e+"-"+a).addClass(e).html(r);return t&&i.addClass(t),n?"auto"===a?i.ariaClick({label:r+" "+L10n.get("savesLabelAuto")},function(){return n()}):i.ariaClick({label:r+" "+L10n.get("savesLabelSlot")+" "+(a+1)},function(){return n(a)}):i.ariaDisabled(!0),i}var t=Save.get(),r=jQuery(document.createElement("tbody"));if(Save.autosave.ok()){var a=jQuery(document.createElement("td")),n=jQuery(document.createElement("td")),i=jQuery(document.createElement("td")),o=jQuery(document.createElement("td"));jQuery(document.createElement("b")).attr({title:L10n.get("savesLabelAuto"),"aria-label":L10n.get("savesLabelAuto")}).text("A").appendTo(a),t.autosave?(n.append(e("load","ui-close",L10n.get("savesLabelLoad"),"auto",function(){jQuery(document).one(":dialogclose",function(){return Save.autosave.load()})})),jQuery(document.createElement("div")).text(t.autosave.title).appendTo(i),jQuery(document.createElement("div")).addClass("datestamp").html(t.autosave.date?""+new Date(t.autosave.date).toLocaleString():"<em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(i),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto",function(){Save.autosave.delete(),c()}))):(n.append(e("load",null,L10n.get("savesLabelLoad"),"auto")),i.addClass("empty").text("•  •  •"),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto"))),jQuery(document.createElement("tr")).append(a).append(n).append(i).append(o).appendTo(r)}for(var s=0,u=t.slots.length;s<u;++s){var l=jQuery(document.createElement("td")),d=jQuery(document.createElement("td")),h=jQuery(document.createElement("td")),f=jQuery(document.createElement("td"));l.append(document.createTextNode(s+1)),t.slots[s]?(d.append(e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){return Save.slots.load(e)})})),jQuery(document.createElement("div")).text(t.slots[s].title).appendTo(h),jQuery(document.createElement("div")).addClass("datestamp").html(t.slots[s].date?""+new Date(t.slots[s].date).toLocaleString():"<em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(h),f.append(e("delete",null,L10n.get("savesLabelDelete"),s,function(e){Save.slots.delete(e),c()}))):(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save)),h.addClass("empty").text("•  •  •"),f.append(e("delete",null,L10n.get("savesLabelDelete"),s))),jQuery(document.createElement("tr")).append(l).append(d).append(h).append(f).appendTo(r)}return jQuery(document.createElement("table")).attr("id","saves-list").append(r)}()),a||Has.fileAPI){var n=jQuery(document.createElement("ul")).addClass("buttons").appendTo(r);return Has.fileAPI&&(n.append(e("export","ui-close",L10n.get("savesLabelExport"),function(){return Save.export()})),n.append(e("import",null,L10n.get("savesLabelImport"),function(){return r.find("#saves-import-file").trigger("click")})),jQuery(document.createElement("input")).css({display:"block",visibility:"hidden",position:"fixed",left:"-9999px",top:"-9999px",width:"1px",height:"1px"}).attr({type:"file",id:"saves-import-file",tabindex:-1,"aria-hidden":!0}).on("change",function(e){jQuery(document).one(":dialogclose",function(){return Save.import(e)}),Dialog.close()}).appendTo(r)),a&&n.append(e("clear",null,L10n.get("savesLabelClear"),Save.autosave.has()||!Save.slots.isEmpty()?function(){Save.clear(),c()}:null)),!0}return t(L10n.get("savesIncapable")),!1}function d(){var e=jQuery(Dialog.setup(L10n.get("settingsTitle"),"settings"));return Setting.forEach(function(t){if(t.type===Setting.Types.Header){var r=t.name,a=Util.slugify(r),n=jQuery(document.createElement("div")),i=jQuery(document.createElement("h2"));return n.attr("id","header-body-"+a).append(i).appendTo(e),i.attr("id","header-heading-"+a).wiki(r),void(t.desc&&jQuery(document.createElement("p")).attr("id","header-desc-"+a).wiki(t.desc).appendTo(n))}var o=t.name,s=Util.slugify(o),u=jQuery(document.createElement("div")),l=jQuery(document.createElement("label")),c=jQuery(document.createElement("div")),d=void 0;switch(jQuery(document.createElement("div")).append(l).append(c).appendTo(u),t.desc&&jQuery(document.createElement("p")).attr("id","setting-desc-"+s).wiki(t.desc).appendTo(u),l.attr({id:"setting-label-"+s,for:"setting-control-"+s}).wiki(t.label),null==settings[o]&&(settings[o]=t.default),t.type){case Setting.Types.Toggle:d=jQuery(document.createElement("button")),settings[o]?d.addClass("enabled").text(L10n.get("settingsOn")):d.text(L10n.get("settingsOff")),d.ariaClick(function(){settings[o]?(jQuery(this).removeClass("enabled").text(L10n.get("settingsOff")),settings[o]=!1):(jQuery(this).addClass("enabled").text(L10n.get("settingsOn")),settings[o]=!0),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default})});break;case Setting.Types.List:d=jQuery(document.createElement("select"));for(var h=0,f=t.list.length;h<f;++h)jQuery(document.createElement("option")).val(h).text(t.list[h]).appendTo(d);d.val(t.list.indexOf(settings[o])).attr("tabindex",0).on("change",function(){settings[o]=t.list[Number(this.value)],Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default,list:t.list})});break;case Setting.Types.Range:d=jQuery(document.createElement("input")),d.attr({type:"range",min:t.min,max:t.max,step:t.step,value:settings[o],tabindex:0}).on("change input",function(){settings[o]=Number(this.value),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default,min:t.min,max:t.max,step:t.step})}).on("keypress",function(e){13===e.which&&(e.preventDefault(),d.trigger("change"))})}d.attr("id","setting-control-"+s).appendTo(c),u.attr("id","setting-body-"+s).appendTo(e)}),e.append('<ul class="buttons"><li><button id="settings-ok" class="ui-close">'+L10n.get(["settingsOk","ok"])+'</button></li><li><button id="settings-reset">'+L10n.get("settingsReset")+"</button></li></ul>").find("#settings-reset").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){Setting.reset(),window.location.reload()}),Dialog.close()}),!0}function h(){try{jQuery(Dialog.setup(L10n.get("shareTitle"),"share list")).append(e("StoryShare"))}catch(e){return console.error(e),Alert.error("StoryShare",e.message),!1}return!0}return Object.freeze(Object.defineProperties({},{assembleLinkList:{value:e},alert:{value:t},jumpto:{value:r},restart:{value:a},saves:{value:n},settings:{value:i},share:{value:o},buildAutoload:{value:s},buildJumpto:{value:u},buildRestart:{value:l},buildSaves:{value:c},buildSettings:{value:d},buildShare:{value:h},stow:{value:function(){return UIBar.stow()}},unstow:{value:function(){return UIBar.unstow()}},setStoryElements:{value:function(){return UIBar.setStoryElements()}},isOpen:{value:function(){return Dialog.isOpen.apply(Dialog,arguments)}},body:{value:function(){return Dialog.body()}},setup:{value:function(){return Dialog.setup.apply(Dialog,arguments)}},addClickHandler:{value:function(){return Dialog.addClickHandler.apply(Dialog,arguments)}},open:{value:function(){return Dialog.open.apply(Dialog,arguments)}},close:{value:function(){return Dialog.close.apply(Dialog,arguments)}},resize:{value:function(){return Dialog.resize()}},buildDialogAutoload:{value:s},buildDialogJumpto:{value:u},buildDialogRestart:{value:l},buildDialogSaves:{value:c},buildDialogSettings:{value:d},buildDialogShare:{value:h},buildLinkListFromPassage:{value:e}}))}(),UIBar=function(){function e(){o||document.getElementById("ui-bar")||(!function(){var e=L10n.get("uiBarToggle"),t=L10n.get("uiBarBackward"),r=L10n.get("uiBarJumpto"),a=L10n.get("uiBarForward");jQuery(document.createDocumentFragment()).append('<div id="ui-bar"><div id="ui-bar-tray"><button id="ui-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button><div id="ui-bar-history"><button id="history-backward" tabindex="0" title="'+t+'" aria-label="'+t+'">î ¡</button><button id="history-jumpto" tabindex="0" title="'+r+'" aria-label="'+r+'">î ¹</button><button id="history-forward" tabindex="0" title="'+a+'" aria-label="'+a+'">î ¢</button></div></div><div id="ui-bar-body"><header id="title" role="banner"><div id="story-banner"></div><h1 id="story-title"></h1><div id="story-subtitle"></div><div id="story-title-separator"></div><p id="story-author"></p></header><div id="story-caption"></div><nav id="menu" role="navigation"><ul id="menu-story"></ul><ul id="menu-core"><li id="menu-item-saves"><a tabindex="0">'+L10n.get("savesTitle")+'</a></li><li id="menu-item-settings"><a tabindex="0">'+L10n.get("settingsTitle")+'</a></li><li id="menu-item-restart"><a tabindex="0">'+L10n.get("restartTitle")+'</a></li><li id="menu-item-share"><a tabindex="0">'+L10n.get("shareTitle")+"</a></li></ul></nav></div></div>").insertBefore("#store-area")}(),jQuery(document).on(":historyupdate.ui-bar",function(e,t){return function(){e.ariaDisabled(State.length<2),t.ariaDisabled(State.length===State.size)}}(jQuery("#history-backward"),jQuery("#history-forward"))))}function t(){if(!o){var e=jQuery("#ui-bar");("boolean"==typeof Config.ui.stowBarInitially?Config.ui.stowBarInitially:jQuery(window).width()<=Config.ui.stowBarInitially)&&function(){var t=jQuery(e).add("#story");t.addClass("no-transition"),e.addClass("stowed"),setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}(),jQuery("#ui-bar-toggle").ariaClick({label:L10n.get("uiBarToggle")},function(){return e.toggleClass("stowed")}),Config.history.controls?(jQuery("#history-backward").ariaDisabled(State.length<2).ariaClick({label:L10n.get("uiBarBackward")},function(){return Engine.backward()}),Story.lookup("tags","bookmark").length>0?jQuery("#history-jumpto").ariaClick({label:L10n.get("uiBarJumpto")},function(){return UI.jumpto()}):jQuery("#history-jumpto").remove(),jQuery("#history-forward").ariaDisabled(State.length===State.size).ariaClick({label:L10n.get("uiBarForward")},function(){return Engine.forward()})):jQuery("#ui-bar-history").remove(),setPageElement("story-title","StoryTitle",Story.title),Story.has("StoryCaption")||jQuery("#story-caption").remove(),Story.has("StoryMenu")||jQuery("#menu-story").remove(),Config.ui.updateStoryElements||i(),Dialog.addClickHandler("#menu-item-saves a",null,UI.buildSaves).text(L10n.get("savesTitle")),Setting.isEmpty()?jQuery("#menu-item-settings").remove():Dialog.addClickHandler("#menu-item-settings a",null,UI.buildSettings).text(L10n.get("settingsTitle")),Dialog.addClickHandler("#menu-item-restart a",null,UI.buildRestart).text(L10n.get("restartTitle")),Story.has("StoryShare")?Dialog.addClickHandler("#menu-item-share a",null,UI.buildShare).text(L10n.get("shareTitle")):jQuery("#menu-item-share").remove()}}function r(){o||(jQuery(document).off(".ui-bar"),jQuery("#ui-bar").remove(),jQuery(document.head).find("#style-ui-bar").remove(),Config.ui.updateStoryElements=!1,o=!0)}function a(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.addClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function n(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.removeClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function i(){if(!o){setPageElement("story-banner","StoryBanner"),setPageElement("story-subtitle","StorySubtitle"),setPageElement("story-author","StoryAuthor"),setPageElement("story-caption","StoryCaption");var e=document.getElementById("menu-story");if(null!==e&&(jQuery(e).empty(),Story.has("StoryMenu")))try{UI.assembleLinkList("StoryMenu",e)}catch(e){console.error(e),Alert.error("StoryMenu",e.message)}}}var o=!1;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},destroy:{value:r},stow:{value:a},unstow:{value:n},setStoryElements:{value:i}}))}(),DebugBar=function(){function e(){var e=L10n.get("debugBarToggle"),t=L10n.get("debugBarAddWatch"),o=L10n.get("debugBarWatchAll"),u=L10n.get("debugBarWatchNone"),c=L10n.get("debugBarWatchToggle"),p=L10n.get("debugBarViewsToggle");jQuery(document.createDocumentFragment()).append('<div id="debug-bar"><div id="debug-bar-watch" aria-hidden="true" hidden="hidden"><div>'+L10n.get("debugBarNoWatches")+'</div>></div><div><button id="debug-bar-watch-toggle" tabindex="0" title="'+c+'" aria-label="'+c+'">'+L10n.get("debugBarLabelWatch")+'</button><label id="debug-bar-watch-label" for="debug-bar-watch-input">'+L10n.get("debugBarLabelAdd")+'</label><input id="debug-bar-watch-input" name="debug-bar-watch-input" type="text" list="debug-bar-watch-list" tabindex="0"><datalist id="debug-bar-watch-list" aria-hidden="true" hidden="hidden"></datalist><button id="debug-bar-watch-add" tabindex="0" title="'+t+'" aria-label="'+t+'"></button><button id="debug-bar-watch-all" tabindex="0" title="'+o+'" aria-label="'+o+'"></button><button id="debug-bar-watch-none" tabindex="0" title="'+u+'" aria-label="'+u+'"></button></div><div><button id="debug-bar-views-toggle" tabindex="0" title="'+p+'" aria-label="'+p+'">'+L10n.get("debugBarLabelViews")+'</button><label id="debug-bar-turn-label" for="debug-bar-turn-select">'+L10n.get("debugBarLabelTurn")+'</label><select id="debug-bar-turn-select" tabindex="0"></select></div><button id="debug-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button></div><div id="debug-bar-hint"></div>').appendTo("body"),y=jQuery("#debug-bar"),b=jQuery(y.find("#debug-bar-watch").get(0)),w=jQuery(y.find("#debug-bar-watch-list").get(0)),k=jQuery(y.find("#debug-bar-turn-select").get(0));var g=jQuery(y.find("#debug-bar-toggle").get(0)),m=jQuery(y.find("#debug-bar-watch-toggle").get(0)),v=jQuery(y.find("#debug-bar-watch-input").get(0)),E=jQuery(y.find("#debug-bar-watch-add").get(0)),x=jQuery(y.find("#debug-bar-watch-all").get(0)),j=jQuery(y.find("#debug-bar-watch-none").get(0)),C=jQuery(y.find("#debug-bar-views-toggle").get(0));g.ariaClick(function(){S?a():r(),S=!S,l()}),m.ariaClick(function(){b.attr("hidden")?b.removeAttr("aria-hidden hidden"):b.attr({"aria-hidden":!0,hidden:"hidden"}),l()}),v.on(":addwatch",function(){n(this.value.trim()),this.value=""}).on("keypress",function(e){13===e.which&&(e.preventDefault(),v.trigger(":addwatch"))}),E.ariaClick(function(){return v.trigger(":addwatch")}),x.ariaClick(i),j.ariaClick(s),k.on("change",function(){Engine.goTo(Number(this.value))}),C.ariaClick(function(){DebugView.toggle(),l()}),jQuery(document).on(":historyupdate.debug-bar",f).on(":passageend.debug-bar",function(){d(),h()}).on(":enginerestart.debug-bar",function(){session.delete("debugState")})}function t(){u(),c(),f(),d(),h()}function r(){y.css("right","-"+y.outerWidth()+"px"),l()}function a(){y.css("right",0),l()}function n(e){g.test(e)&&(v.pushUnique(e),v.sort(),d(),h(),l())}function i(){Object.keys(State.variables).map(function(e){return v.pushUnique("$"+e)}),Object.keys(State.temporary).map(function(e){return v.pushUnique("_"+e)}),v.sort(),d(),h(),l()}function o(e){v.delete(e),d(),h(),l()}function s(){for(var e=v.length-1;e>=0;--e)v.pop();d(),h(),l()}function u(){if(session.has("debugState")){var e=session.get("debugState");S=e.stowed,v.push.apply(v,_toConsumableArray(e.watchList)),e.watchEnabled?b.removeAttr("aria-hidden hidden"):b.attr({"aria-hidden":!0,hidden:"hidden"}),e.viewsEnabled?DebugView.enable():DebugView.disable()}}function l(){session.set("debugState",{stowed:S,watchList:v,watchEnabled:!b.attr("hidden"),viewsEnabled:DebugView.isEnabled()})}function c(){S?r():a()}function d(){if(0===v.length)return void b.empty().append("<div>"+L10n.get("debugBarNoWatches")+"</div>");for(var e=L10n.get("debugBarDeleteWatch"),t=jQuery(document.createElement("table")),r=jQuery(document.createElement("tbody")),a=0,n=v.length;a<n;++a)!function(t,a){var n=v[t],i=n.slice(1),s="$"===n[0]?State.variables:State.temporary,u=jQuery(document.createElement("tr")),l=jQuery(document.createElement("button")),c=jQuery(document.createElement("code"));l.addClass("watch-delete").attr("data-name",n).ariaClick({one:!0,label:e},function(){return o(n)}),c.text(p(s[i])),jQuery(document.createElement("td")).append(l).appendTo(u),jQuery(document.createElement("td")).text(n).appendTo(u),jQuery(document.createElement("td")).append(c).appendTo(u),u.appendTo(r)}(a);t.append(r),b.empty().append(t)}function h(){var e=Object.keys(State.variables),t=Object.keys(State.temporary);if(0===e.length&&0===t.length)return void w.empty();var r=[].concat(_toConsumableArray(e.map(function(e){return"$"+e})),_toConsumableArray(t.map(function(e){return"_"+e}))).sort(),a=document.createDocumentFragment();r.delete(v);for(var n=0,i=r.length;n<i;++n)jQuery(document.createElement("option")).val(r[n]).appendTo(a);w.empty().append(a)}function f(){for(var e=State.size,t=State.expired.length,r=document.createDocumentFragment(),a=0;a<e;++a)jQuery(document.createElement("option")).val(a).text(t+a+1+". "+Util.escape(State.history[a].title)).appendTo(r);k.empty().ariaDisabled(e<2).append(r).val(State.activeIndex)}function p(e){if(null===e)return"null";switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return"NaN";if(!Number.isFinite(e))return"Infinity";case"boolean":case"symbol":case"undefined":return String(e);case"string":return JSON.stringify(e);case"function":return"Function"}var t=Util.toStringTag(e);if("Date"===t)return"Date {"+e.toLocaleString()+"}";if("RegExp"===t)return"RegExp "+e.toString();var r=[];if(e instanceof Array||e instanceof Set){for(var a=e instanceof Array?e:Array.from(e),n=0,i=a.length;n<i;++n)r.push(a.hasOwnProperty(n)?p(a[n]):"<empty>");return Object.keys(a).filter(function(e){return!m.test(e)}).forEach(function(e){return r.push(p(e)+": "+p(a[e]))}),t+"("+a.length+") ["+r.join(", ")+"]"}return e instanceof Map?(e.forEach(function(e,t){return r.push(p(t)+" → "+p(e))}),t+"("+e.size+") {"+r.join(", ")+"}"):(Object.keys(e).forEach(function(t){return r.push(p(t)+": "+p(e[t]))}),t+" {"+r.join(", ")+"}")}var g=new RegExp("^"+Patterns.variable+"$"),m=/^\d+$/,v=[],y=null,b=null,w=null,k=null,S=!0;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},stow:{value:r},unstow:{value:a},watch:{value:n},watchAll:{value:i},unwatch:{value:o},unwatchAll:{value:s}}))}(),LoadScreen=function(){function e(){jQuery(document).on("readystatechange.SugarCube",function(){o.size>0||("complete"===document.readyState?"loading"===jQuery(document.documentElement).attr("data-init")&&(Config.loadDelay>0?setTimeout(function(){0===o.size&&r()},Math.max(Engine.minDomActionDelay,Config.loadDelay)):r()):a())})}function t(){jQuery(document).off("readystatechange.SugarCube"),o.clear(),r()}function r(){jQuery(document.documentElement).removeAttr("data-init")}function a(){jQuery(document.documentElement).attr("data-init","loading")}function n(){return++s,o.add(s),a(),s}function i(e){if(null==e)throw new Error("LoadScreen.unlock called with a null or undefined ID");o.has(e)&&o.delete(e),0===o.size&&jQuery(document).trigger("readystatechange")}var o=new Set,s=0;return Object.freeze(Object.defineProperties({},{init:{value:e},clear:{value:t},hide:{value:r},show:{value:a},lock:{value:n},unlock:{value:i}}))}(),version=Object.freeze({title:"SugarCube",major:2,minor:27,patch:0,prerelease:null,build:8702,date:new Date("2018-08-20T14:49:45.399Z"),extensions:{},toString:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.major+"."+this.minor+"."+this.patch+e+"+"+this.build},short:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.title+" (v"+this.major+"."+this.minor+"."+this.patch+e+")"},long:function(){return this.title+" v"+this.toString()+" ("+this.date.toUTCString()+")"}}),TempState={},macros={},postdisplay={},postrender={},predisplay={},prehistory={},prerender={},session=null,settings={},setup={},storage=null,browser=Browser,config=Config,has=Has,History=State,state=State,tale=Story,TempVariables=State.temporary;window.SugarCube={},jQuery(function(){try{var e=LoadScreen.lock();LoadScreen.init(),document.normalize&&document.normalize(),Story.load(),storage=SimpleStore.create(Story.domId,!0),session=SimpleStore.create(Story.domId,!1),Dialog.init(),UIBar.init(),Engine.init(),Story.init(),L10n.init(),session.has("rcWarn")||"cookie"!==storage.name||(session.set("rcWarn",1),window.alert(L10n.get("warningNoWebStorage"))),Save.init(),Setting.init(),Macro.init(),Engine.start(),Config.debug&&DebugBar.init();var t=$(window),r=setInterval(function(){t.width()&&(clearInterval(r),setTimeout(function(){UIBar.start(),Config.debug&&DebugBar.start(),LoadScreen.unlock(e)},Engine.minDomActionDelay))},Engine.minDomActionDelay);window.SugarCube={Browser:Browser,Config:Config,Dialog:Dialog,DebugView:DebugView,Engine:Engine,Has:Has,L10n:L10n,Macro:Macro,Passage:Passage,Save:Save,Scripting:Scripting,Setting:Setting,SimpleAudio:SimpleAudio,State:State,Story:Story,UI:UI,UIBar:UIBar,DebugBar:DebugBar,Util:Util,Wikifier:Wikifier,macros:macros,session:session,settings:settings,setup:setup,storage:storage,version:version}}catch(e){return console.error(e),LoadScreen.clear(),Alert.fatal(null,e.message,e)}})}(window,window.document,jQuery);} +;var o=document.createDocumentFragment();new Wikifier(o,c.StoryTitle.processText().trim()),r(o.textContent.trim()),Config.saves.id=Story.domId}function t(){!function(){var e=document.createElement("style");new StyleWrapper(e).add(d.map(function(e){return e.text.trim()}).join("\n")),jQuery(e).appendTo(document.head).attr({id:"style-story",type:"text/css"})}();for(var e=0;e<h.length;++e)try{Scripting.evalJavaScript(h[e].text)}catch(t){console.error(t),Alert.error(h[e].title,"object"===(void 0===t?"undefined":_typeof(t))?t.message:t)}for(var t=0;t<f.length;++t)try{Wikifier.wikifyEval(f[t].processText())}catch(e){console.error(e),Alert.error(f[t].title,"object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}}function r(e){if(null==e||""===e)throw new Error("story title cannot be null or empty");document.title=p=Util.unescape(e),m=Util.slugify(p)}function a(){return p}function n(){return m}function i(){return g}function o(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":return c.hasOwnProperty(String(e));case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.has title parameter cannot be "+t)}function s(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r)?c[r]:new Passage(r||"(unknown)");case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.get title parameter cannot be "+t)}function u(e,t){for(var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"title",a=Object.keys(c),n=[],i=0;i<a.length;++i){var o=c[a[i]];if(o.hasOwnProperty(e))switch(_typeof(o[e])){case"undefined":break;case"object":o[e]instanceof Array&&o[e].some(function(e){return e==t})&&n.push(o);break;default:o[e]==t&&n.push(o)}}return n.sort(function(e,t){return e[r]==t[r]?0:e[r]<t[r]?-1:1}),n}function l(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"title";if("function"!=typeof e)throw new Error("Story.lookupWith filter parameter must be a function");for(var r=Object.keys(c),a=[],n=0;n<r.length;++n){var i=c[r[n]];e(i)&&a.push(i)}return a.sort(function(e,r){return e[t]==r[t]?0:e[t]<r[t]?-1:1}),a}var c={},d=[],h=[],f=[],p="",g="",m="";return Object.freeze(Object.defineProperties({},{passages:{value:c},styles:{value:d},scripts:{value:h},widgets:{value:f},load:{value:e},init:{value:t},title:{get:a},domId:{get:n},ifId:{get:i},has:{value:o},get:{value:s},lookup:{value:u},lookupWith:{value:l}}))}(),UI=function(){function e(e,t){var r=t,a=Config.debug,n=Config.cleanupWikifierOutput;Config.debug=!1,Config.cleanupWikifierOutput=!1;try{null==r&&(r=document.createElement("ul"));var i=document.createDocumentFragment();new Wikifier(i,Story.get(e).processText().trim());var o=[].concat(_toConsumableArray(i.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(o.length>0)throw new Error(o.join("; "));for(;i.hasChildNodes();){var s=i.firstChild;if(s.nodeType===Node.ELEMENT_NODE&&"A"===s.nodeName.toUpperCase()){var u=document.createElement("li");r.appendChild(u),u.appendChild(s)}else i.removeChild(s)}}finally{Config.cleanupWikifierOutput=n,Config.debug=a}return r}function t(e){jQuery(Dialog.setup("Alert","alert")).append("<p>"+e+'</p><ul class="buttons"><li><button id="alert-ok" class="ui-close">'+L10n.get(["alertOk","ok"])+"</button></li></ul>");for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];Dialog.open.apply(Dialog,r)}function r(){u(),Dialog.open.apply(Dialog,arguments)}function a(){l(),Dialog.open.apply(Dialog,arguments)}function n(){c(),Dialog.open.apply(Dialog,arguments)}function i(){d(),Dialog.open.apply(Dialog,arguments)}function o(){h(),Dialog.open.apply(Dialog,arguments)}function s(){return jQuery(Dialog.setup(L10n.get("autoloadTitle"),"autoload")).append("<p>"+L10n.get("autoloadPrompt")+'</p><ul class="buttons"><li><button id="autoload-ok" class="ui-close">'+L10n.get(["autoloadOk","ok"])+'</button></li><li><button id="autoload-cancel" class="ui-close">'+L10n.get(["autoloadCancel","cancel"])+"</button></li></ul>"),jQuery(document).one("click.autoload",".ui-close",function(e){var t="autoload-ok"===e.target.id;jQuery(document).one(":dialogclose",function(){t&&Save.autosave.load()||Engine.play(Config.passages.start)})}),!0}function u(){var e=document.createElement("ul");jQuery(Dialog.setup(L10n.get("jumptoTitle"),"jumpto list")).append(e);for(var t=State.expired.length,r=State.size-1;r>=0;--r)if(r!==State.activeIndex){var a=Story.get(State.history[r].title);a&&a.tags.includes("bookmark")&&jQuery(document.createElement("li")).append(jQuery(document.createElement("a")).ariaClick({one:!0},function(e){return function(){return jQuery(document).one(":dialogclose",function(){return Engine.goTo(e)})}}(r)).addClass("ui-close").text(L10n.get("jumptoTurn")+" "+(t+r+1)+": "+a.description())).appendTo(e)}e.hasChildNodes()||jQuery(e).append("<li><a><em>"+L10n.get("jumptoUnavailable")+"</em></a></li>")}function l(){return jQuery(Dialog.setup(L10n.get("restartTitle"),"restart")).append("<p>"+L10n.get("restartPrompt")+'</p><ul class="buttons"><li><button id="restart-ok">'+L10n.get(["restartOk","ok"])+'</button></li><li><button id="restart-cancel" class="ui-close">'+L10n.get(["restartCancel","cancel"])+"</button></li></ul>").find("#restart-ok").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){return Engine.restart()}),Dialog.close()}),!0}function c(){function e(e,t,r,a){var n=jQuery(document.createElement("button")).attr("id","saves-"+e).html(r);return t&&n.addClass(t),a?n.ariaClick(a):n.ariaDisabled(!0),jQuery(document.createElement("li")).append(n)}var r=jQuery(Dialog.setup(L10n.get("savesTitle"),"saves")),a=Save.ok();if(a&&r.append(function(){function e(e,t,r,a,n){var i=jQuery(document.createElement("button")).attr("id","saves-"+e+"-"+a).addClass(e).html(r);return t&&i.addClass(t),n?"auto"===a?i.ariaClick({label:r+" "+L10n.get("savesLabelAuto")},function(){return n()}):i.ariaClick({label:r+" "+L10n.get("savesLabelSlot")+" "+(a+1)},function(){return n(a)}):i.ariaDisabled(!0),i}var t=Save.get(),r=jQuery(document.createElement("tbody"));if(Save.autosave.ok()){var a=jQuery(document.createElement("td")),n=jQuery(document.createElement("td")),i=jQuery(document.createElement("td")),o=jQuery(document.createElement("td"));jQuery(document.createElement("b")).attr({title:L10n.get("savesLabelAuto"),"aria-label":L10n.get("savesLabelAuto")}).text("A").appendTo(a),t.autosave?(n.append(e("load","ui-close",L10n.get("savesLabelLoad"),"auto",function(){jQuery(document).one(":dialogclose",function(){return Save.autosave.load()})})),jQuery(document.createElement("div")).text(t.autosave.title).appendTo(i),jQuery(document.createElement("div")).addClass("datestamp").html(t.autosave.date?""+new Date(t.autosave.date).toLocaleString():"<em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(i),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto",function(){Save.autosave.delete(),c()}))):(n.append(e("load",null,L10n.get("savesLabelLoad"),"auto")),i.addClass("empty").text("•  •  •"),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto"))),jQuery(document.createElement("tr")).append(a).append(n).append(i).append(o).appendTo(r)}for(var s=0,u=t.slots.length;s<u;++s){var l=jQuery(document.createElement("td")),d=jQuery(document.createElement("td")),h=jQuery(document.createElement("td")),f=jQuery(document.createElement("td"));l.append(document.createTextNode(s+1)),t.slots[s]?(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save),e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){return Save.slots.load(e)})})),jQuery(document.createElement("div")).text(t.slots[s].title).appendTo(h),jQuery(document.createElement("div")).addClass("datestamp").html(t.slots[s].date?""+new Date(t.slots[s].date).toLocaleString():"<em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(h),f.append(e("delete",null,L10n.get("savesLabelDelete"),s,function(e){Save.slots.delete(e),c()}))):(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save)),h.addClass("empty").text("•  •  •"),f.append(e("delete",null,L10n.get("savesLabelDelete"),s))),jQuery(document.createElement("tr")).append(l).append(d).append(h).append(f).appendTo(r)}return jQuery(document.createElement("table")).attr("id","saves-list").append(r)}()),a||Has.fileAPI){var n=jQuery(document.createElement("ul")).addClass("buttons").appendTo(r);return Has.fileAPI&&(n.append(e("export","ui-close",L10n.get("savesLabelExport"),function(){return Save.export()})),n.append(e("import",null,L10n.get("savesLabelImport"),function(){return r.find("#saves-import-file").trigger("click")})),jQuery(document.createElement("input")).css({display:"block",visibility:"hidden",position:"fixed",left:"-9999px",top:"-9999px",width:"1px",height:"1px"}).attr({type:"file",id:"saves-import-file",tabindex:-1,"aria-hidden":!0}).on("change",function(e){jQuery(document).one(":dialogclose",function(){return Save.import(e)}),Dialog.close()}).appendTo(r)),a&&n.append(e("clear",null,L10n.get("savesLabelClear"),Save.autosave.has()||!Save.slots.isEmpty()?function(){Save.clear(),c()}:null)),!0}return t(L10n.get("savesIncapable")),!1}function d(){var e=jQuery(Dialog.setup(L10n.get("settingsTitle"),"settings"));return Setting.forEach(function(t){if(t.type===Setting.Types.Header){var r=t.name,a=Util.slugify(r),n=jQuery(document.createElement("div")),i=jQuery(document.createElement("h2"));return n.attr("id","header-body-"+a).append(i).appendTo(e),i.attr("id","header-heading-"+a).wiki(r),void(t.desc&&jQuery(document.createElement("p")).attr("id","header-desc-"+a).wiki(t.desc).appendTo(n))}var o=t.name,s=Util.slugify(o),u=jQuery(document.createElement("div")),l=jQuery(document.createElement("label")),c=jQuery(document.createElement("div")),d=void 0;switch(jQuery(document.createElement("div")).append(l).append(c).appendTo(u),t.desc&&jQuery(document.createElement("p")).attr("id","setting-desc-"+s).wiki(t.desc).appendTo(u),l.attr({id:"setting-label-"+s,for:"setting-control-"+s}).wiki(t.label),null==settings[o]&&(settings[o]=t.default),t.type){case Setting.Types.Toggle:d=jQuery(document.createElement("button")),settings[o]?d.addClass("enabled").text(L10n.get("settingsOn")):d.text(L10n.get("settingsOff")),d.ariaClick(function(){settings[o]?(jQuery(this).removeClass("enabled").text(L10n.get("settingsOff")),settings[o]=!1):(jQuery(this).addClass("enabled").text(L10n.get("settingsOn")),settings[o]=!0),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default})});break;case Setting.Types.List:d=jQuery(document.createElement("select"));for(var h=0,f=t.list.length;h<f;++h)jQuery(document.createElement("option")).val(h).text(t.list[h]).appendTo(d);d.val(t.list.indexOf(settings[o])).attr("tabindex",0).on("change",function(){settings[o]=t.list[Number(this.value)],Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default,list:t.list})});break;case Setting.Types.Range:d=jQuery(document.createElement("input")),d.attr({type:"range",min:t.min,max:t.max,step:t.step,value:settings[o],tabindex:0}).on("change input",function(){settings[o]=Number(this.value),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:o,value:settings[o],default:t.default,min:t.min,max:t.max,step:t.step})}).on("keypress",function(e){13===e.which&&(e.preventDefault(),d.trigger("change"))})}d.attr("id","setting-control-"+s).appendTo(c),u.attr("id","setting-body-"+s).appendTo(e)}),e.append('<ul class="buttons"><li><button id="settings-ok" class="ui-close">'+L10n.get(["settingsOk","ok"])+'</button></li><li><button id="settings-reset">'+L10n.get("settingsReset")+"</button></li></ul>").find("#settings-reset").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){Setting.reset(),window.location.reload()}),Dialog.close()}),!0}function h(){try{jQuery(Dialog.setup(L10n.get("shareTitle"),"share list")).append(e("StoryShare"))}catch(e){return console.error(e),Alert.error("StoryShare",e.message),!1}return!0}return Object.freeze(Object.defineProperties({},{assembleLinkList:{value:e},alert:{value:t},jumpto:{value:r},restart:{value:a},saves:{value:n},settings:{value:i},share:{value:o},buildAutoload:{value:s},buildJumpto:{value:u},buildRestart:{value:l},buildSaves:{value:c},buildSettings:{value:d},buildShare:{value:h},stow:{value:function(){return UIBar.stow()}},unstow:{value:function(){return UIBar.unstow()}},setStoryElements:{value:function(){return UIBar.setStoryElements()}},isOpen:{value:function(){return Dialog.isOpen.apply(Dialog,arguments)}},body:{value:function(){return Dialog.body()}},setup:{value:function(){return Dialog.setup.apply(Dialog,arguments)}},addClickHandler:{value:function(){return Dialog.addClickHandler.apply(Dialog,arguments)}},open:{value:function(){return Dialog.open.apply(Dialog,arguments)}},close:{value:function(){return Dialog.close.apply(Dialog,arguments)}},resize:{value:function(){return Dialog.resize()}},buildDialogAutoload:{value:s},buildDialogJumpto:{value:u},buildDialogRestart:{value:l},buildDialogSaves:{value:c},buildDialogSettings:{value:d},buildDialogShare:{value:h},buildLinkListFromPassage:{value:e}}))}(),UIBar=function(){function e(){o||document.getElementById("ui-bar")||(!function(){var e=L10n.get("uiBarToggle"),t=L10n.get("uiBarBackward"),r=L10n.get("uiBarJumpto"),a=L10n.get("uiBarForward");jQuery(document.createDocumentFragment()).append('<div id="ui-bar"><div id="ui-bar-tray"><button id="ui-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button><div id="ui-bar-history"><button id="history-backward" tabindex="0" title="'+t+'" aria-label="'+t+'">î ¡</button><button id="history-jumpto" tabindex="0" title="'+r+'" aria-label="'+r+'">î ¹</button><button id="history-forward" tabindex="0" title="'+a+'" aria-label="'+a+'">î ¢</button></div></div><div id="ui-bar-body"><header id="title" role="banner"><div id="story-banner"></div><h1 id="story-title"></h1><div id="story-subtitle"></div><div id="story-title-separator"></div><p id="story-author"></p></header><div id="story-caption"></div><nav id="menu" role="navigation"><ul id="menu-story"></ul><ul id="menu-core"><li id="menu-item-saves"><a tabindex="0">'+L10n.get("savesTitle")+'</a></li><li id="menu-item-settings"><a tabindex="0">'+L10n.get("settingsTitle")+'</a></li><li id="menu-item-restart"><a tabindex="0">'+L10n.get("restartTitle")+'</a></li><li id="menu-item-share"><a tabindex="0">'+L10n.get("shareTitle")+"</a></li></ul></nav></div></div>").insertBefore("#store-area")}(),jQuery(document).on(":historyupdate.ui-bar",function(e,t){return function(){e.ariaDisabled(State.length<2),t.ariaDisabled(State.length===State.size)}}(jQuery("#history-backward"),jQuery("#history-forward"))))}function t(){if(!o){var e=jQuery("#ui-bar");("boolean"==typeof Config.ui.stowBarInitially?Config.ui.stowBarInitially:jQuery(window).width()<=Config.ui.stowBarInitially)&&function(){var t=jQuery(e).add("#story");t.addClass("no-transition"),e.addClass("stowed"),setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}(),jQuery("#ui-bar-toggle").ariaClick({label:L10n.get("uiBarToggle")},function(){return e.toggleClass("stowed")}),Config.history.controls?(jQuery("#history-backward").ariaDisabled(State.length<2).ariaClick({label:L10n.get("uiBarBackward")},function(){return Engine.backward()}),Story.lookup("tags","bookmark").length>0?jQuery("#history-jumpto").ariaClick({label:L10n.get("uiBarJumpto")},function(){return UI.jumpto()}):jQuery("#history-jumpto").remove(),jQuery("#history-forward").ariaDisabled(State.length===State.size).ariaClick({label:L10n.get("uiBarForward")},function(){return Engine.forward()})):jQuery("#ui-bar-history").remove(),setPageElement("story-title","StoryTitle",Story.title),Story.has("StoryCaption")||jQuery("#story-caption").remove(),Story.has("StoryMenu")||jQuery("#menu-story").remove(),Config.ui.updateStoryElements||i(),Dialog.addClickHandler("#menu-item-saves a",null,UI.buildSaves).text(L10n.get("savesTitle")),Setting.isEmpty()?jQuery("#menu-item-settings").remove():Dialog.addClickHandler("#menu-item-settings a",null,UI.buildSettings).text(L10n.get("settingsTitle")),Dialog.addClickHandler("#menu-item-restart a",null,UI.buildRestart).text(L10n.get("restartTitle")),Story.has("StoryShare")?Dialog.addClickHandler("#menu-item-share a",null,UI.buildShare).text(L10n.get("shareTitle")):jQuery("#menu-item-share").remove()}}function r(){o||(jQuery(document).off(".ui-bar"),jQuery("#ui-bar").remove(),jQuery(document.head).find("#style-ui-bar").remove(),Config.ui.updateStoryElements=!1,o=!0)}function a(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.addClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function n(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.removeClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function i(){if(!o){setPageElement("story-banner","StoryBanner"),setPageElement("story-subtitle","StorySubtitle"),setPageElement("story-author","StoryAuthor"),setPageElement("story-caption","StoryCaption");var e=document.getElementById("menu-story");if(null!==e&&(jQuery(e).empty(),Story.has("StoryMenu")))try{UI.assembleLinkList("StoryMenu",e)}catch(e){console.error(e),Alert.error("StoryMenu",e.message)}}}var o=!1;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},destroy:{value:r},stow:{value:a},unstow:{value:n},setStoryElements:{value:i}}))}(),DebugBar=function(){function e(){var e=L10n.get("debugBarToggle"),t=L10n.get("debugBarAddWatch"),o=L10n.get("debugBarWatchAll"),u=L10n.get("debugBarWatchNone"),c=L10n.get("debugBarWatchToggle"),p=L10n.get("debugBarViewsToggle");jQuery(document.createDocumentFragment()).append('<div id="debug-bar"><div id="debug-bar-watch" aria-hidden="true" hidden="hidden"><div>'+L10n.get("debugBarNoWatches")+'</div>></div><div><button id="debug-bar-watch-toggle" tabindex="0" title="'+c+'" aria-label="'+c+'">'+L10n.get("debugBarLabelWatch")+'</button><label id="debug-bar-watch-label" for="debug-bar-watch-input">'+L10n.get("debugBarLabelAdd")+'</label><input id="debug-bar-watch-input" name="debug-bar-watch-input" type="text" list="debug-bar-watch-list" tabindex="0"><datalist id="debug-bar-watch-list" aria-hidden="true" hidden="hidden"></datalist><button id="debug-bar-watch-add" tabindex="0" title="'+t+'" aria-label="'+t+'"></button><button id="debug-bar-watch-all" tabindex="0" title="'+o+'" aria-label="'+o+'"></button><button id="debug-bar-watch-none" tabindex="0" title="'+u+'" aria-label="'+u+'"></button></div><div><button id="debug-bar-views-toggle" tabindex="0" title="'+p+'" aria-label="'+p+'">'+L10n.get("debugBarLabelViews")+'</button><label id="debug-bar-turn-label" for="debug-bar-turn-select">'+L10n.get("debugBarLabelTurn")+'</label><select id="debug-bar-turn-select" tabindex="0"></select></div><button id="debug-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button></div><div id="debug-bar-hint"></div>').appendTo("body"),y=jQuery("#debug-bar"),b=jQuery(y.find("#debug-bar-watch").get(0)),w=jQuery(y.find("#debug-bar-watch-list").get(0)),k=jQuery(y.find("#debug-bar-turn-select").get(0));var g=jQuery(y.find("#debug-bar-toggle").get(0)),m=jQuery(y.find("#debug-bar-watch-toggle").get(0)),v=jQuery(y.find("#debug-bar-watch-input").get(0)),E=jQuery(y.find("#debug-bar-watch-add").get(0)),x=jQuery(y.find("#debug-bar-watch-all").get(0)),j=jQuery(y.find("#debug-bar-watch-none").get(0)),C=jQuery(y.find("#debug-bar-views-toggle").get(0));g.ariaClick(function(){S?a():r(),S=!S,l()}),m.ariaClick(function(){b.attr("hidden")?b.removeAttr("aria-hidden hidden"):b.attr({"aria-hidden":!0,hidden:"hidden"}),l()}),v.on(":addwatch",function(){n(this.value.trim()),this.value=""}).on("keypress",function(e){13===e.which&&(e.preventDefault(),v.trigger(":addwatch"))}),E.ariaClick(function(){return v.trigger(":addwatch")}),x.ariaClick(i),j.ariaClick(s),k.on("change",function(){Engine.goTo(Number(this.value))}),C.ariaClick(function(){DebugView.toggle(),l()}),jQuery(document).on(":historyupdate.debug-bar",f).on(":passageend.debug-bar",function(){d(),h()}).on(":enginerestart.debug-bar",function(){session.delete("debugState")})}function t(){u(),c(),f(),d(),h()}function r(){y.css("right","-"+y.outerWidth()+"px"),l()}function a(){y.css("right",0),l()}function n(e){g.test(e)&&(v.pushUnique(e),v.sort(),d(),h(),l())}function i(){Object.keys(State.variables).map(function(e){return v.pushUnique("$"+e)}),Object.keys(State.temporary).map(function(e){return v.pushUnique("_"+e)}),v.sort(),d(),h(),l()}function o(e){v.delete(e),d(),h(),l()}function s(){for(var e=v.length-1;e>=0;--e)v.pop();d(),h(),l()}function u(){if(session.has("debugState")){var e=session.get("debugState");S=e.stowed,v.push.apply(v,_toConsumableArray(e.watchList)),e.watchEnabled?b.removeAttr("aria-hidden hidden"):b.attr({"aria-hidden":!0,hidden:"hidden"}),e.viewsEnabled?DebugView.enable():DebugView.disable()}}function l(){session.set("debugState",{stowed:S,watchList:v,watchEnabled:!b.attr("hidden"),viewsEnabled:DebugView.isEnabled()})}function c(){S?r():a()}function d(){if(0===v.length)return void b.empty().append("<div>"+L10n.get("debugBarNoWatches")+"</div>");for(var e=L10n.get("debugBarDeleteWatch"),t=jQuery(document.createElement("table")),r=jQuery(document.createElement("tbody")),a=0,n=v.length;a<n;++a)!function(t,a){var n=v[t],i=n.slice(1),s="$"===n[0]?State.variables:State.temporary,u=jQuery(document.createElement("tr")),l=jQuery(document.createElement("button")),c=jQuery(document.createElement("code"));l.addClass("watch-delete").attr("data-name",n).ariaClick({one:!0,label:e},function(){return o(n)}),c.text(p(s[i])),jQuery(document.createElement("td")).append(l).appendTo(u),jQuery(document.createElement("td")).text(n).appendTo(u),jQuery(document.createElement("td")).append(c).appendTo(u),u.appendTo(r)}(a);t.append(r),b.empty().append(t)}function h(){var e=Object.keys(State.variables),t=Object.keys(State.temporary);if(0===e.length&&0===t.length)return void w.empty();var r=[].concat(_toConsumableArray(e.map(function(e){return"$"+e})),_toConsumableArray(t.map(function(e){return"_"+e}))).sort(),a=document.createDocumentFragment();r.delete(v);for(var n=0,i=r.length;n<i;++n)jQuery(document.createElement("option")).val(r[n]).appendTo(a);w.empty().append(a)}function f(){for(var e=State.size,t=State.expired.length,r=document.createDocumentFragment(),a=0;a<e;++a)jQuery(document.createElement("option")).val(a).text(t+a+1+". "+Util.escape(State.history[a].title)).appendTo(r);k.empty().ariaDisabled(e<2).append(r).val(State.activeIndex)}function p(e){if(null===e)return"null";switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return"NaN";if(!Number.isFinite(e))return"Infinity";case"boolean":case"symbol":case"undefined":return String(e);case"string":return JSON.stringify(e);case"function":return"Function"}var t=Util.toStringTag(e);if("Date"===t)return"Date {"+e.toLocaleString()+"}";if("RegExp"===t)return"RegExp "+e.toString();var r=[];if(e instanceof Array||e instanceof Set){for(var a=e instanceof Array?e:Array.from(e),n=0,i=a.length;n<i;++n)r.push(a.hasOwnProperty(n)?p(a[n]):"<empty>");return Object.keys(a).filter(function(e){return!m.test(e)}).forEach(function(e){return r.push(p(e)+": "+p(a[e]))}),t+"("+a.length+") ["+r.join(", ")+"]"}return e instanceof Map?(e.forEach(function(e,t){return r.push(p(t)+" → "+p(e))}),t+"("+e.size+") {"+r.join(", ")+"}"):(Object.keys(e).forEach(function(t){return r.push(p(t)+": "+p(e[t]))}),t+" {"+r.join(", ")+"}")}var g=new RegExp("^"+Patterns.variable+"$"),m=/^\d+$/,v=[],y=null,b=null,w=null,k=null,S=!0;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},stow:{value:r},unstow:{value:a},watch:{value:n},watchAll:{value:i},unwatch:{value:o},unwatchAll:{value:s}}))}(),LoadScreen=function(){function e(){jQuery(document).on("readystatechange.SugarCube",function(){o.size>0||("complete"===document.readyState?"loading"===jQuery(document.documentElement).attr("data-init")&&(Config.loadDelay>0?setTimeout(function(){0===o.size&&r()},Math.max(Engine.minDomActionDelay,Config.loadDelay)):r()):a())})}function t(){jQuery(document).off("readystatechange.SugarCube"),o.clear(),r()}function r(){jQuery(document.documentElement).removeAttr("data-init")}function a(){jQuery(document.documentElement).attr("data-init","loading")}function n(){return++s,o.add(s),a(),s}function i(e){if(null==e)throw new Error("LoadScreen.unlock called with a null or undefined ID");o.has(e)&&o.delete(e),0===o.size&&jQuery(document).trigger("readystatechange")}var o=new Set,s=0;return Object.freeze(Object.defineProperties({},{init:{value:e},clear:{value:t},hide:{value:r},show:{value:a},lock:{value:n},unlock:{value:i}}))}(),version=Object.freeze({title:"SugarCube",major:2,minor:27,patch:0,prerelease:null,build:8702,date:new Date("2018-08-20T14:49:45.399Z"),extensions:{},toString:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.major+"."+this.minor+"."+this.patch+e+"+"+this.build},short:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.title+" (v"+this.major+"."+this.minor+"."+this.patch+e+")"},long:function(){return this.title+" v"+this.toString()+" ("+this.date.toUTCString()+")"}}),TempState={},macros={},postdisplay={},postrender={},predisplay={},prehistory={},prerender={},session=null,settings={},setup={},storage=null,browser=Browser,config=Config,has=Has,History=State,state=State,tale=Story,TempVariables=State.temporary;window.SugarCube={},jQuery(function(){try{var e=LoadScreen.lock();LoadScreen.init(),document.normalize&&document.normalize(),Story.load(),storage=SimpleStore.create(Story.domId,!0),session=SimpleStore.create(Story.domId,!1),Dialog.init(),UIBar.init(),Engine.init(),Story.init(),L10n.init(),session.has("rcWarn")||"cookie"!==storage.name||(session.set("rcWarn",1),window.alert(L10n.get("warningNoWebStorage"))),Save.init(),Setting.init(),Macro.init(),Engine.start(),Config.debug&&DebugBar.init();var t=$(window),r=setInterval(function(){t.width()&&(clearInterval(r),setTimeout(function(){UIBar.start(),Config.debug&&DebugBar.start(),LoadScreen.unlock(e)},Engine.minDomActionDelay))},Engine.minDomActionDelay);window.SugarCube={Browser:Browser,Config:Config,Dialog:Dialog,DebugView:DebugView,Engine:Engine,Has:Has,L10n:L10n,Macro:Macro,Passage:Passage,Save:Save,Scripting:Scripting,Setting:Setting,SimpleAudio:SimpleAudio,State:State,Story:Story,UI:UI,UIBar:UIBar,DebugBar:DebugBar,Util:Util,Wikifier:Wikifier,macros:macros,session:session,settings:settings,setup:setup,storage:storage,version:version}}catch(e){return console.error(e),LoadScreen.clear(),Alert.fatal(null,e.message,e)}})}(window,window.document,jQuery);} </script> </body> </html> diff --git a/src/SecExp/SecExpBackwardCompatibility.tw b/src/SecExp/SecExpBackwardCompatibility.tw index 7e471b4611ababd3632a30b55244bb0eae7da7ca..8d485753311eed8d65d808a04ba0bb031a236ffa 100644 --- a/src/SecExp/SecExpBackwardCompatibility.tw +++ b/src/SecExp/SecExpBackwardCompatibility.tw @@ -208,7 +208,7 @@ <<if ndef $pharaonTradition>> <<set $pharaonTradition = 0>> <</if>> -<<if ndef $weaponsLaw || $wasToggledBefore == 1>> +<<if ndef $weaponsLaw>> <<set $weaponsLaw = 3>> <</if>> <<if ndef $soldierWages>> diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw index 89a8842bdc7d638513e698134afa2eb1772515fc..abf9ff39b5a0be8d5b333477daa121b4b4aac9c2 100644 --- a/src/gui/Encyclopedia/encyclopedia.tw +++ b/src/gui/Encyclopedia/encyclopedia.tw @@ -2628,6 +2628,7 @@ LORE: INTERVIEWS <br>''Editoranon and Milkanon?'' for prison markets and the nursing handjob scene. <br>''DCoded'' for creating the favicon and adding animals to the Pit, as well as nursery and bestiality content, scenes, facilities and fixes. Also a pussy licking scene. <br>''HiveBro'' for giving hyperpregnant slaves some serious loving. + <br>''Quin2k'' for overwriting save function via Degrees of Lewdity. <br>''git contributors lost to time'' for their submissions and work through pregmod's git. <br>''Bane70'' optimized huge swaths of code with notable professionalism. <br>''Circle Tritagonist'' provided several new collars and outfits. diff --git a/src/js/storyJS.tw b/src/js/storyJS.tw index 3aa697fa4726f496fc3a17797dd4b0a2e591f7c9..99cb7b1aad6e85eb481564bc27a1cda3bab1c29b 100644 --- a/src/js/storyJS.tw +++ b/src/js/storyJS.tw @@ -1,6 +1,8 @@ :: StoryJS [script] /*config.history.tracking = false;*/ +State.expired.disable; + window.variableAsNumber = function(x, defaultValue, minValue, maxValue) { x = Number(x) if (x != x) {//NaN diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw index 5dc2e0fbb5fd2c230e829361e9083b06a979e271..6d4993bf5a7713b5a02c0ceb944b4a8ee7c6bc53 100644 --- a/src/uncategorized/arcmgmt.tw +++ b/src/uncategorized/arcmgmt.tw @@ -222,9 +222,9 @@ _topClassP = 1>> _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSArabianRevivalist, 100) / 20) * 0.025>> <</if>> <<if $arcologies[0].FSChineseRevivalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSDegradationist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.025>> + <<set _FSScore += Math.min($arcologies[0].FSChineseRevivalist, 100), + _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSChineseRevivalist, 100) / 20) * 0.02, + _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSChineseRevivalist, 100) / 20) * 0.025>> <</if>> <<if $arcologies[0].FSAztecRevivalist != "unset">> <<set _FSScore += Math.min($arcologies[0].FSAztecRevivalist, 100), @@ -571,7 +571,11 @@ $helots -= _expirationPC, $fuckdolls -= _expirationFD, $menialBioreactors -= _expirationBR>> <<if _expiration > 1>> - @@.red;<<print _expiration>> slaves died@@ due to the tough working conditions in your arcology. + <<if _expirationFS <= 0.5>> + @@.red;<<print _expiration>> slaves passed away@@ due to natural causes. + <<else>> + @@.red;<<print _expiration>> slaves died@@ due to the tough working conditions in your arcology. + <</if>> <<if _expirationPC > 1>> Of which @@.red;<<print _expirationPC>> were yours.@@ <<elseif _expirationPC > 0>> @@ -586,7 +590,7 @@ $lowerClass -= _enslaved>> /*Bad weather switch*/ <<if $weatherToday.severity > 3>> <<if $secExp == 1>> - <<if $docks && $railway < 4>> + <<if $docks < 4 && $railway < 4>> <<set _weatherFreeze = 1>> <br>//The terrible weather is @@.red;preventing people from entering or leaving@@ your arcology. Improving your transport infrastructure will prevent this from happening.// <<else>> @@ -600,11 +604,11 @@ $lowerClass -= _enslaved>> <</if>> <<elseif $weatherToday.severity > 2>> <<if $secExp == 1>> - <<if $docks && $railway < 3>> + <<if $docks < 3 && $railway < 3>> <<set _weatherFreeze = 1>> <br>//The terrible weather is @@.red;preventing people from entering or leaving@@ your arcology. Improving your transport infrastructure will prevent this from happening.// <<else>> - <<set _weatherFeeze = 0>> + <<set _weatherFreeze = 0>> <</if>> <<elseif $antiWeatherFreeze < 1>> <<set _weatherFreeze = 1>> @@ -616,6 +620,27 @@ $lowerClass -= _enslaved>> <<set _weatherFreeze = 0>> <</if>> +/*For enslavement that happens despite the weather*/ +<<if _weatherFreeze == 1>> + <<if _enslaved > 0>> + <<if _enslaved < 4>> + <<set _enslavedPC = 1, + _enslavedNPC = _enslaved - 1>> + <<else>> + <<set _enslavedPC = Math.trunc(_enslaved / 4), + _enslavedNPC = _enslaved - _enslavedPC>> + <</if>> + <<set $helots += _enslavedPC, + $NPCSlaves += _enslavedNPC>> + <</if>> + <<if _enslaved > 1>> + <br>In total @@.green;<<print _enslaved>> lower class citizens@@ were enslaved for failing to pay their debts. + <br>@@.green;You enslaved <<print _enslavedPC>>@@ of them while other debtholders in the arcology enslaved the remaining <<print _enslavedNPC>>. + <<elseif _enslaved > 0>> + <br>@@.green;As arcology owner you claimed the slave.@@ + <</if>> +<</if>> + /*Bunch of visitor stuff*/ <<if _weatherFreeze == 0>> <<set _FSScore = _FSScore / $FSCreditCount>> diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index 96c76990055a0c3a19d759db0608448746854cb3..e01f4d3f8d20a94ffa1d19feac5f819f374b0dcf 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -45,7 +45,7 @@ End of week autosaving is currently @@.cyan;ENABLED@@. [[Disable|Options][$autos <br> ''COLOR CONTROL'' <br> -<<link "flip lighting">><<run flipColors(setup.lightColorMap)>><</link>> //Currently a WIP, use at own risk.// +<<link "flip lighting">><<run flipColors(setup.lightColorMap)>><</link>> <br> ''IMAGES''