[[AO3|http://archiveofourown.org/works/874016]] | [[DW|http://thedeadparrot.dreamwidth.org/528144.html]] | [[Tumblr|http://thedeadparrot.tumblr.com/post/54856407802/fic-what-you-want-glee-kurt-blaine]] | [[LJ|http://parrotfic.livejournal.com/41168.html]]
The lube is slippery on your fingers. Blaine spreads his legs underneath you, arching up, stomach tight, thighs straining. Sometimes, you think you know his body as well as your own. <<insertion explore>>There's a scar on his ribs, pale and healing, from climbing over barbed wire when he was first starting out with the Warblers.<<gains>> There's a bruise yellowing on his hip from when he crashed into a wall two days ago. <<gains>>His knee is scraped from playing football with Sam on concrete last week.<<gains>>\n\nYou slide two fingers between his legs, pushing inside, feeling his body open up for you.\n\n"Come on," Blaine says. "//Kurt//." He presses a kiss high on your neck, just below your ear, where he knows you're sensitive, lips sloppy and wet. A shiver runs through your body.\n\n"I've [[got you]]," you say, and your voice has gone raspy and hoarse.\n<<endinsertion>>\n\n<<revise explore "Explore.">>
It takes you a moment to build up to it, the right push-pull of your bodies, until you're panting into Blaine's neck, and he's letting out these high, breathy noises with each thrust.\n\nHis cock brushes against your stomach, hard and a little wet, and his head is tilted up, Adam's apple bobbing with every breath he takes.\n\n"You feel so good," Blaine says. "Come on. Harder."<<insertion harder>>\n\nYou pick up the pace, hands tight on his hips. <<gains>>A bead of sweat rolls down his neck, and you have to lick it off, salty and slick. <<gains>>You wrap a hand around his cock, more friction, tight heat. <<gains>>"Yes, //Kurt//, fuck, please," he says, rushed, words tumbling out of his mouth. <<gains>>Your orgasm builds, low in your body.<<gains>> His back arches when you brush his prostate, and he pushes back against your cock, chasing the feeling. The pitch of his voice tells you that he's close.\n\n<<revise seeyou "You want to see him come apart.">><<insertion seeyou>>"I want to [[see you]]," you say.<<endinsertion>>\n<<endinsertion>>\n\n<<revise harder "And" "you" "do" "what" "he" "says.">>
''Summary:'' For the longest time, wanting was uncomfortable, scary, something that set you apart, something that made you odd and wrong and different. It feels good now, to know that you can have what you want, to know that it will smile at you and laugh with you and kiss you and sing you silly songs on your birthday, that it will let you in and let you see it at its most fragile and its most vulnerable.\n\n''Notes:'' A short PWP sequel to [[A Far Better Thing|http://thedeadparrot.github.io/fic-projects/edge/a-far-better-thing.html]]. Takes place about one year after the events of that story.\n\n''Feedback:'' <<display "feedback">>\n\n[[Begin.|Begin]]
"[[You|meeting]]," you say, and this time there's heat, chasing its way down your spine as you press your lips to his. You kiss him harder than before, teeth and tongue, drawing out a low, pleased sound from his throat.\n\n"Mmpf," Blaine says against your mouth. He tangles his fingers in your hair, pulling you [[closer]].
You come with Blaine's name on your lips, shuddering through it as he runs [[a gentle hand|afterglow]] down your back. Your orgasms always feel like this, too much, like your body is about to shake apart.
You remember the first time he kissed you, shrouded in the darkness of the club, the lights glittering and glowing overhead, and you remember the way your chest had felt too tight, squeezed [[until it could burst|kiss]].
You press your hips down. The two of you are half hard, and there's a bit of friction, not very much at all. You like it when it's frantic and quick, hard and fast and all at once, but you like it like this too, the way you can be slow and easy about it, unhurried.\n\n"Kurt," Blaine says, voice gone high and breathy. His hips rock up to meet yours, his fingers [[digging into your shoulders|smell]].
When you wake, Blaine's mouth is pressed against your shoulder, [[soft wet breaths]] against your skin. His hair is unruly, curls brushing your chin. You turn your head to get a better [[look at him]].
Sunlight filters in through the tree outside your window, leaves making patterns on your crisp, white sheets. Blaine's skin is golden in this light, bronzed from days out in the sun. He [[hums]] under his breath, eyes fluttering open. "Morning," he mumbles.\n\n"Good morning," you [[say|kiss]].
This might be the thing that that surprises you the most, the way your bodies fit together, <<cyclinglink "hands" "mouths" "shoulders" "hips">>, the way Blaine's skin runs [[hotter|Begin]] than your own.
!!! End notes\nAfter finishing [[A Far Better Thing|http://thedeadparrot.github.io/fic-projects/edge/a-far-better-thing.html]], some people asked me for a sequel, and I was (foolishly) like "Pshaw, sequel. I'll never write a sequel!" And then, you know, this happened. I don't think this really works as a proper sequel. It has too little plot, and it doesn't move these characters much further from where we saw them last. But it wouldn't exist without the people who planted the idea in my head.\n\nThis was a bit of an experiment as well, a chance to push things in a different direction with the format and see how it turned out. I like to think it went well.\n\n!!! Influences\nI'd also like to make a shoutout to a couple of other Twine stories that really left an impact on this one.\n \n- [[Positive Space|http://www.freeindiegam.es/2013/02/positive-space-merritt-kopas/]]\n- [[all i want is for my friends to become insanely rich and powerful|http://aliendovecote.com/uploads/twine/powerful.html]]\n\nThose people are doing much cooler things than I am.\n\n!!! Feedback\nWant to leave feedback? I would love to hear from you.\n<<display "feedback">>\n\n!!! Code\nYou can find the code for this [[on Github|https://github.com/thedeadparrot/fic-projects/tree/master/edge-2]].
What You Want
You tuck your nose into his neck, where he smells like <<revision smell>>sweat<<gains>> and hair gel<<gains>> and sex<<gains>> and the faintest hint of cigarette smoke from the bar he was in last night before he came over, the scent of it still clinging to his skin<<becomes>>Blaine<<endrevision>>.\n\n<<revise smell "Breathe.">>\n\nYou slide your hand along his side until it comes to [[rest on his hip|can you]]. "Can I?" you ask.
He comes with a low moan, wet and sticky between the two of you, eyes closed, lips parted. Your own cock throbs at the sight, at the way his body tightens, at the smell and the feel and the everything.\n\n"Blaine," you say. Now you're the one who's too eager, because you want-- you need to come right now.\n\n"I can take it," he says. "I want to."\n\n<<revise fuck "Fuck.">><<insertion fuck>>Your hips snap forward, almost of their own volition, wanting closer, wanting //more//. You aren't going to last long. "Blaine," you say again, because you want to, you like the way it sounds, like the way it rolls off your tongue.\n\n"I want to [[feel it]] tomorrow," he says, and his body under yours is tight and hot and slick.<<endinsertion>>
@import url(http://fonts.googleapis.com/css?family=Open+Sans);\n.passage\n{\n font-family: 'Open Sans';\n}\n.addition\n{\n transition: 2s;\n -webkit-transiton: 2s;\n -moz-transition: 2s;\n}\n.passage:not(.transition-out)\n{\n transition: 1s;\n -webkit-transiton: 1s;\n -moz-transiton: 1s;\n}\n.addition-in, .transition-in, .transition-out\n{\n opacity: 0;\n}\n.transition-in, .transition-out\n{\n position:absolute;\n}\n.revision-span-in {\n opacity: 0;\n}\n.revision-span:not(.revision-span-out) {\n transition: 1s;\n -webkit-transition: 1s;\n}\n.revision-span-out {\n position:absolute;\n opacity: 0;\n}
History.prototype.display=function(d,b,a){var c=tale.get(d);this.history.unshift({passage:c,variables:clone(this.history[0].variables)});\nwindow.transitionCount=0;\nthis.history[0].hash=this.save();var e=c.render();e.style.visibility="visible";if(a!="offscreen"){var p=document.getElementById("passages");\nfor(var i=0;i<p.childNodes.length;i+=1){var q=p.childNodes[ i ];q.classList.add("transition-out");\nsetTimeout(function(){p.removeChild(q);},1000);}e.classList.add("transition-in");\nsetTimeout(function(){e.classList.remove("transition-in");},1);p.appendChild(e);}if((a=="quietly")||(a=="offscreen")){e.style.visibility="visible";\n}if(a!="offscreen"){document.title=tale.title;this.hash=this.save();document.title+=": "+c.title;\nwindow.location.hash=this.hash;window.scroll(0,0);}return e;};
He's eager underneath your hands, arching into your touch. "Yes," he says, breathing hard. "Whatever you--"\n\nHeat pools low in your belly as you wrap your fingers around [[his cock|first time]], soft skin and hard flesh, and you press a kiss against his collarbone. He shivers at your touch, and you think about putting your mouth on him, swallowing him down, letting him fill you up.\n\nBut no, you have [[other ideas]].
You get yourselves cleaned up, showered and dressed and ready to start the day. Blaine lingers in your kitchen, even though you both know-- He has work to do today, Warblers work, and you have to throw a polite dinner party tonight with your ten least favorite city councilmen in order to charm them over to your dad's newest initiative.\n\n"I need to--" he says.\n\nYou pull him into a hug. "Don't go," you say, whispering it into his hair.\n\n"It's not goodbye," he promises. You remind each other of this every time. You're sure that one day, one of you will be lying, but you can't let yourself think about that, not when so much else is at stake.\n\nOnce he's polished off a quick breakfast -- eggs and toast, a tall glass of milk -- he disappears out the front door, closing it quietly behind him. You make yourself some tea. There's a spot his likes to kiss on your left wrist, where the sweat tends to gather underneath your watch, and you brush your fingers against it, remembering the press of his mouth against your skin.\n\nThe sun is bright, the sky clear and blue. It's going to be a beautiful day.\n\n\n[[FIN.|end notes]]
macros['display_scroll'] = {\n handler: function(place, name, params) {\n // fetch the correct passage\n var passage = tale.get(params[0]);\n // display of the passage\n display_transition(place, passage.text, passage.title, true);\n }\n}\nmacros['text_fade'] = {\n handler: function(place, name, params) {\n // use the given text\n var text = params[0];\n var title = "fade-title"+window.transitionCount;\n // set the delay we want on transition\n var transitionDelay = window.transitionCount * 1750; \n window.transitionCount++;\n setTimeout( function() {\n display_transition(place, text, title, false);\n }, transitionDelay);\n }\n}\nfunction display_transition(place, text, title, scroll) {\n var passageClass = 'inner-passage';\n var length = document.getElementsByClassName(passageClass).length;\n // render text \n var elementId = 'inner-passage-' + title.split(' ').join('_');\n var body = insertElement(null, 'div', elementId, passageClass);\n body.classList.add('addition');\n body.classList.add('addition-in');\n new Wikifier(body, text);\n // append it to the page\n content = document.getElementsByClassName('content')[0];\n place.appendChild(body);\n\n // polls until we know the DOM has updated and then scroll to passage\n function pollForNew(){\n var el = document.getElementById(elementId);\n if(el) {\n // trigger CSS transition\n setTimeout(function() {\n setTimeout(function() {\n el.classList.remove('addition-in');\n }, 400);\n // release lock\n if(scroll) {\n scrollWindowTo(el);\n }\n }, 300);\n }\n else {\n setTimeout(pollForNew, 100);\n }\n }\n\n pollForNew();\n}
When you finally catch your breath, heart slowing back down to normal, you disentangle yourself from Blaine, laughing when he makes a small annoyed noise as you pull away.\n\nHis skin is flushed, you're sure your hair is a mess, and your bodies are <<cyclinglink "sticky" "messy" "sated">>. You want to keep this, a memory of the two of you stripped down, bare skin and simple desire, a moment when you could leave [[the rest of the world|after]] behind.\n\nIt doesn't last. It can't.
Blaine smiles before he kisses you. His lips still taste gummy with sleep, dry and slightly chapped. His hand cups your face as his tongue presses inside, [[wet and intimate and familiar|first kiss]]. His body is solid and steady underneath [[your hands|roll him over]].
(function(){\nvar bs = String.fromCharCode(92);\nWikifier.formatters.unshift({\n name: "continuedLine",\n match: bs+bs+"s",\n handler: function(a) {\n a.nextMatch = a.matchStart+3;\n }\n});\n}());
Your hands almost shake with the [[force of it]] as you slick up your cock with lube. Blaine is smiling at you, the expression soft and fuzzy around the edges. His eyes flutter shut as you lean over.\n\n"Okay," you say, and he wraps his legs around your waist, drawing you in.\n\n"Fuck," he whispers as you press [[inside]].
version.extensions["cyclinglinkMacro"]={major:3,minor:2,revision:0};macros.cyclinglink={handler:function(a,b,c){var rl="cyclingLink";\nfunction toggleText(w){w.classList.toggle(rl+"Enabled");w.classList.toggle(rl+"Disabled");\nw.style.display=((w.style.display=="none")?"inline":"none");}switch(c[c.length-1]){case"end":var end=true;\nc.pop();break;case"out":var out=true;c.pop();break;}var v="";if(c.length&&c[0][0]=="$"){v=c[0].slice(1);\nc.shift();}var h=state.history[0].variables;if(out&&h[v]===""){return;}var l=Wikifier.createInternalLink(a,null);\nl.className="internalLink cyclingLink";l.setAttribute("data-cycle",0);for(var i=0;\ni<c.length;i++){var on=(i==Math.max(c.indexOf(h[v]),0));var d=insertElement(null,"span",null,"cyclingLink"+((on)?"En":"Dis")+"abled");\nif(on){h[v]=c[ i ];l.setAttribute("data-cycle",i);}else{d.style.display="none";}insertText(d,c[ i ]);\nif(on&&end&&i==c.length-1){l.parentNode.replaceChild(d,l);}else{l.appendChild(d);\n}}l.onclick=function(){var t=this.childNodes;var u=this.getAttribute("data-cycle")-0;\nvar m=t.length;toggleText(t[u]);u=(u+1);if(!(out&&u==m)){u%=m;if(v){h[v]=c[u];}}else{h[v]="";\n}if((end||out)&&u==m-(end?1:0)){if(end){var n=this.removeChild(t[u]);n.className=rl+"End";\nn.style.display="inline";this.parentNode.replaceChild(n,this);}else{this.parentNode.removeChild(this);\nreturn;}return;}toggleText(t[u]);this.setAttribute("data-cycle",u);};}};
For the longest time, wanting was uncomfortable, scary, something that set you apart, something that made you odd and wrong and different. \n\nIt feels good now, to know that you can have what you want, to know that it will smile at you and laugh with you and kiss you and sing you silly songs on your birthday, that it will [[let you in and let you see it|want him]] at its most fragile and its most vulnerable.
Sometimes in your more fanciful moments, you think you've always know that it would be him, that before you'd even met, you were waiting.\n\nYou were alone for so long. You made it through school by being cool and distant to everyone around you, shrouded in your father's power and influence, seeing and knowing how //wrong// everything was. For the longest time, it seemed like you and your father were the only two people who noticed it, the only ones who understood that it was something that needed to be fixed.\n\nAnd then he was [[there|want]], in your hospital room, holding out a hand, telling you that you needed to go, with messy ink on his hands and an earnest look in his eyes.\n\nYou went.\n\nAnd the whole world opened up right in front of you.
His body is hot, a furnace underneath your hands and around your cock. You wait a moment, eyes squeezed shut, taking a breath so you can get used to the feel of it. Blaine wraps his arms around your neck. He presses a kiss against your temple.\n\n"Move," he murmurs. \n\nWhat else can you do? [[You move.|move]]
(function(){ var render2 = Passage.prototype.render; Passage.prototype.render = function () { var b = render2.call(this); var t = this.tags.join(" "); document.body.setAttribute("data-tags", t); return b; }}());
It's been weeks since you last had a chance to do this, and Blaine is hot and tight around your fingers. His body clenches down as you add another. You have to kiss him again, have to swallow his groan as it leaves his throat.\n\nWhen you pull back, his pupils are wide and dark, and his mouth is bitten red and swollen, and his body is covered in a sheen of sweat.\n\n"Please," he says, and all you can think about is [[how much you want him|want him]].
The first time he touched you here, you were <<cyclinglink "nervous" "excited" "tense" "eager">>. The two of you were on his bed, during one of your few trips to Under, sheets scratchy underneath your back, moonlight haloing his hair. His fingers were <<cyclinglink "careful" "calloused" "unfamiliar" "strange">> on your body, mapping out territory, lighting up nerves you didn't even know existed.\n \n"Hey," Blaine had said, smiling like what you were doing wasn't brand new, shockingly intimate. "It's okay," He pressed his forehead against yours, bumping your noses together.\n\n"More," you had said, because your skin felt tight, too hot, and this wasn't enough. You weren't sure anything would ever be enough. "Please."\n\n"[[Okay|can you]]," Blaine had whispered. "Okay."
You roll him over so that he's on his back, straddling his hips, elbows bracketing his neck. His eyes are wide and soft, his lips pink and inviting.\n\n<<revision curl>>A stray curl falls over his forehead. <<becomes>>His hair is pushed back, away from his face. His mouth is pulled into a silly, fond smile.<<endrevision>> <<revise curl "Push it back.">>\n\nHe grabs hold of your fingers and presses a kiss to them. "[[What do you want|want]]?" he asks.
A rumble deep in his chest, the kind that warms you up, from the inside [[out|look at him]].
(function () {\n version.extensions['revisionMacros'] = {\n major: 1,\n minor: 2,\n revision: 0\n };\n\n function tagcontents(b, starttags, desttags, endtags, k) {\n function tagfound(i, e) {\n for (var j = 0; j < e.length; j++) {\n if (a.indexOf(e[j], i) == i) {\n return e[j];\n }\n }\n }\n var a = b.source.slice(k);\n var l = 0;\n var c = "";\n var tg;\n for (var i = 0; i < a.length; i++) {\n if (tg = tagfound(i, starttags)) {\n l++;\n }\n else if ((tg = tagfound(i, desttags)) && l == 0) {\n b.nextMatch = k + i + tg.length;\n return [c, tg];\n }\n else if (tg = tagfound(i, endtags)) {\n l--;\n if (l < 0) {\n return null;\n }\n }\n c += a.charAt(i);\n }\n return null;\n }\n macros['cycle'] = macros['insertion'] = macros['removal'] = macros['revision'] = macros['span'] = {\n handler: function (g, e, f, b) {\n var begintags = ["<<revision", "<<cycle", "<<insertion", "<<removal", "<<span"];\n var becomes = ["<<becomes>>", "<<gains>>"];\n var endtags = ["<<endrevision>>", "<<endcycle>>", "<<endinsertion>>", "<<endremoval>>", "<<endspan>>"];\n var name = f[0].replace(" ", "_");\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var c, vsns, vsn, i, cn, vtype;\n vsns = [];\n c = tagcontents(b, begintags, becomes.concat(endtags), endtags, k);\n if (c && endtags.indexOf(c[1]) == -1) {\n while (c) {\n vsns.push(c);\n c = tagcontents(b, begintags, becomes, endtags, b.nextMatch);\n }\n c = tagcontents(b, begintags, ["<<end" + e + ">>"], endtags, b.nextMatch);\n }\n if (!c) {\n throwError(g, "can't find matching end" + e);\n return;\n }\n vsns.push(c);\n i = 0;\n cn = 0;\n m = insertElement(g, "span", null, e + " " + name);\n if (vsns.length > 0) {\n h = insertElement(m, "span", null, "revision-span initial");\n }\n else {\n h = m;\n }\n if (e == "insertion") {\n h.style.display = "none";\n }\n h.setAttribute("data-enabled", (e != "insertion") + "");\n vsn = vsns.shift();\n h.tweecode = vsn[0];\n while (vsns.length > 0) {\n i += 1;\n vtype = vsn[1].slice(2, -2);\n vsn = vsns.shift();\n h = insertElement(m, "span", null, "revision-span " + vtype);\n h.tweecode = vsn[0];\n h.setAttribute("data-enabled", "false");\n h.style.display = "none";\n }\n h = m.firstChild;\n new Wikifier(h, h.tweecode);\n }\n }\n var de = "data-enabled";\n\n function revise(rt, rname) {\n var rall, r, rc, rcl, ind, ind2, curr, next, ins, rmv, cyc, rev, rnd;\n rev = (rt == "revert");\n rnd = (rt.indexOf("random") > -1);\n var rsp = "revision-span";\n\n function showVer(n) {\n n.innerHTML = "";\n new Wikifier(n, n.tweecode);\n n.setAttribute(de, "true");\n n.style.display = "inline";\n n.classList.remove(rsp + "-out");\n n.classList.add(rsp + "-in");\n if (n.timeout) clearTimeout(n.timeout);\n n.timeout = setTimeout(function () {\n n.classList.remove(rsp + "-in");\n }, 100);\n }\n\n function hideVer(n) {\n n.setAttribute(de, "false");\n n.classList.remove(rsp + "-in");\n n.classList.add(rsp + "-out");\n if (n.timeout) clearTimeout(n.timeout);\n n.timeout = setTimeout(function () {\n if (n.getAttribute(de) == "false") {\n n.classList.remove(rsp + "-out");\n n.style.display = "none";\n n.innerHTML = "";\n }\n }, 1000);\n }\n\n function doToGainerSpans(n, fn) {\n for (var k = n - 1; k >= 0; k--) {\n if (rc[k + 1].classList.contains("gains")) {\n fn(rc[k]);\n }\n else break;\n }\n }\n rall = document.getElementsByClassName(rname);\n for (var i = 0; i < rall.length; i++) {\n r = rall[i];\n rc = r.childNodes;\n ins = r.classList.contains("insertion");\n rmv = r.classList.contains("removal");\n cyc = r.classList.contains("cycle");\n rcl = rc.length - 1;\n ind = -1;\n for (var k = 0; k <= rcl; k++) {\n if (rc[k].getAttribute(de) == "true") {\n ind = k;\n }\n }\n if (ind == -1) {\n if (ins) {\n ind = -1;\n curr = null;\n }\n else if (rmv) {\n ind = rcl + 1;\n curr = null;\n }\n }\n else {\n if (rev) {\n ind -= 1;\n }\n curr = (ind >= 0 ? rc[ind] : (cyc ? rc[rcl] : null));\n }\n ind2 = ind;\n if (rnd) {\n ind2 = (ind + (Math.floor(Math.random() * rcl))) % rcl;\n }\n next = (ind2 < rcl ? rc[ind2 + 1] : (cyc ? rc[0] : null));\n var docurr = (rev ? showVer : hideVer);\n var donext = (rev ? hideVer : showVer);\n if (curr) {\n if (!(next && next.classList.contains("gains")) || rnd) {\n docurr(curr);\n doToGainerSpans(ind, docurr);\n }\n }\n if (next) {\n donext(next);\n if (rnd) {\n doToGainerSpans(ind2 + 1, donext);\n }\n }\n }\n }\n\n macros['revert'] = macros['revise'] = macros['randomise'] = macros['randomize'] = {\n handler: function (a, b, c) {\n var l, rev, rname;\n\n function disableLink(l) {\n l.style.display = "none";\n }\n\n function enableLink(l) {\n l.style.display = "inline";\n }\n\n function updateLink(l) {\n if (l.className.indexOf("random") > -1) {\n enableLink(l);\n return;\n }\n var rall = document.getElementsByClassName(rname);\n var cannext, canprev;\n for (var i = 0; i < rall.length; i++) {\n var r = rall[i];\n if (r.classList.contains("cycle")) {\n cannext = canprev = true;\n }\n else {\n var rc = r.childNodes;\n var rcl = rc.length;\n var ins = r.classList.contains("insertion");\n var rmv = r.classList.contains("removal");\n var rnd = rname.indexOf("random") > -1;\n var ind = -1;\n for (var k = 0; k < rc.length; k++) {\n if (rc[k].getAttribute(de) == "true") {\n ind = k;\n }\n }\n if (ind == -1 && (ins || rmv)) {\n (ins ? cannext = true : canprev = true);\n }\n if (ind > (ins ? -1 : 0)) {\n canprev = true;\n }\n if (ind > -1 && ind < (rmv ? rcl : rcl - 1)) {\n cannext = true;\n }\n }\n }\n var can = (l.classList.contains("revert") ? canprev : cannext);\n (can ? enableLink : disableLink)(l);\n }\n function toggleText(w) {\n w.classList.toggle(rl + "Enabled");\n w.classList.toggle(rl + "Disabled");\n w.style.display = ((w.style.display == "none") ? "inline" : "none");\n }\n var rl = "reviseLink";\n if (c.length < 2) {\n throwError(a, b + ' macro needs 2 parameters');\n return;\n }\n rname = c.shift().replace(" ", "_");\n l = Wikifier.createInternalLink(a, null);\n l.className = "internalLink " + rl + " " + rl + "_" + rname + " " + b;\n var v = "";\n var end = false;\n var out = false;\n if(c.length>1 && c[0][0] == "$") {\n v = c[0].slice(1);\n c.shift();\n }\n switch(c[c.length - 1]) {\n case "end":\n end = true;\n c.pop();\n break;\n case "out":\n out = true;\n c.pop();\n break;\n }\n var h = state.history[0].variables;\n for(var i = 0; i < c.length; i++) {\n var on = (i == Math.max(c.indexOf(h[v]), 0));\n var d = insertElement(null, "span", null, rl + ((on) ? "En" : "Dis") + "abled");\n if(on) {\n h[v] = c[i];\n l.setAttribute("data-cycle", i);\n } else {\n d.style.display="none";\n }\n insertText(d, c[i]);\n l.appendChild(d);\n }\n l.onclick = function () {\n revise(b, rname);\n var t = this.childNodes;\n var u = this.getAttribute("data-cycle") - 0;\n var m = t.length;\n if((end || out) && u == m - (end ? 2 : 1)) {\n if (end) {\n var n = this.removeChild(t[u + 1]);\n n.className = rl + "End";\n n.style.display = "inline";\n this.parentNode.replaceChild(n, this);\n } else {\n this.parentNode.removeChild(this);\n return;\n }\n } else {\n toggleText(t[u]);\n u = (u + 1) % m;\n if(v) {\n h[v] = c[u];\n }\n toggleText(t[u]);\n this.setAttribute("data-cycle", u);\n }\n var lall = document.getElementsByClassName(rl + "_" + rname);\n for (var i = 0; i < lall.length; i++) {\n updateLink(lall[i]);\n }\n };\n disableLink(l);\n setTimeout(function () {\n updateLink(l);\n }, 1);\n }\n }\n macros['hoverrevise'] = {\n handler: function (a, b, c, d) {\n var endtags = ["<<end" + b + ">>"];\n var t = tagcontents(d, ["<<" + b + ">>"], endtags, endtags, d.source.indexOf('>>', d.matchStart) + 2);\n if (t) {\n var rname = c[0].replace(" ", "_");\n h = insertElement(a, "span", null, "hoverrevise hoverrevise_" + rname);\n new Wikifier(h, t[0]);\n h.onmouseover = function () {\n revise("revise", rname);\n }\n h.onmouseout = function () {\n revise("revert", rname);\n }\n }\n }\n }\n macros['becomes'] = macros['gains'] = macros['endrevision'] = macros['endinsertion'] = macros['endremoval'] = macros[\n 'endcycle'] = macros['endhoverrevise'] = {\n handler: function () {}\n }\n\n}());