When Marriage Equality Finally Passed, John Early Was Moved … to Make Fun of It
ByJesse David Fox,
a Vulture writer and host of Good One: A Podcast About Jokes
John Early
Vulture’s Good One podcastwill be recording a live episode with comedian Bill Burr at this year’s Vulture Festival on Sunday, May 21, at 6:30 p.m. in New York. Tickets are available now on VultureFestival.com!
John Early is a tremendous performer who likes to play people who are performing tremendously, whether they are a liar like his character on Search Party, an aspiring star like his characters in the Vimeo series he co-created with Kate Berlant, 555, or the control-freak groom on his wedding day like in his Netflix Characters special. Affectation in the best-worst ways is Early’s muse.
This is the subject of this week’s Good One, Vulture’s podcast about jokes and the people who tell them, which was recorded live at SXSW. Early discusses the wedding toast that closes out his Characters special (watch here, at the 22:12 mark), what it represents in his progress as a comedians and his understanding of society, and how growing up gay and the child of ministers created a lifelong interest in performance.
Listen to the episode and read an edited transcript of our discussion below. Tune in to Good One every Monday on iTunes, or wherever you get your podcasts.
You picked the runner from your Netflix Characters special, in which you play a sort of groomzilla version of yourself. Specifically, I wanted to focus on the last scene, where you give the most affected toast. You filmed this in 2015 or so, I believe. What is it like seeing it a year and a half since you made it? The pressure, as I’m watching it with an audience, is of Wow, that’s long. The joke is that I’m hijacking the room for 12 minutes. But I remember editing it and having to cut so much stuff and being like “Fuck!” and, “This is too short!” Now I feel insane. It’s so long.
I’ve heard you talk about it in your stand-up, but when you were writing this piece, what was your feeling about gay marriage? I fear that people think I’m shitting on gay marriage. It was accidental. The first draft of the special, the runner was going to take place at an apartment party, and the big announcement at the end was going to be “I’m moving to LA,” and no one was going to care. Then, I was going to fake faint to get the attention back. When I turned in a second draft, the marriage ruling happened and I was like, “It would be stupid for me not to raise the stakes and put it at a wedding or a rehearsal dinner.” The intention behind that was just to make the whole special more high stakes.
Weddings are just so funny to me, period. I am very much pro-gay marriage. I’m comedically thrilled about gay marriage, because it opens up the door for me to make fun of gay weddings, which gives me the opportunity to make fun of weddings in general. It’s funny when, in the fight for equality, you end up just doing what straight people do. One of the privileges of being gay, for years, was being able to sit on the sidelines and watch straight people get married and be like, “What?!”
Also, it felt like a really good PR move by our government to be like, We’re doing something for human rights in this time that people are horrified by human-rights violations. It felt hypocritical and strange to like fully celebrate it as this human-rights victory while there were all these horrible instances of police brutality, black people getting murdered by police. and then the police going completely free. A lot of that made it into the special with this perfect hyperliberal Rachel Getting Married wedding. Super diverse, curated within an inch of its life, and then the main character can’t keep racial tension out of it, which is in the rest of the special.
Do you think of it as specifically a gay wedding sketch, with whatever specific trappings might be associated with it, or just a general wedding sketch where you happen to play a gay character? I didn’t think much about it. It’s just my favorite mode to be in comedically — someone who just wants to be in control of every single moment. The whole point of having a party is for everyone to have a good time, and he’s completely preventing that from happening at every turn. It was more about a perfect comedic setup.
I’ve heard you talk about how it’s difficult for gay people to make art about themselves. What pitfalls do you think people fall into, and how did you try to avoid it? Gay people like art with women in it because it takes sexuality out of the equation. You just get to worship. It’s such an easy transaction: “I worship you!” When gay people see a gay person onstage or onscreen, they’re like, “Oh, no no no,” because sexuality creeps in. They’re like, “What do I do with you? Should I worship you? I want to fuck you. I don’t want to fuck you.” It just complicates things. I think the pitfall would’ve been to make Eating Out 14. For those of you who aren’t familiar with the Eating Out series, it’s a straight-to-video soft-core, barely comedic porn. Mink Stole is in it, anyway. Beyond Eating Out, there’s the hypernaturalism of gay guys who are cool and not faggy and not threatening, and they’re dating and they’re lost, and that is something I never want to do. But yeah, the pitfalls would’ve been to make something super sincere about a gay guy who, like, wants to get married but the society won’t let him. I avoided that by being a little juvenile and nasty and annoying and grating.
Partly because the acting is so good, it felt improvised. How much of it is or isn’t? This scene was the most improvised of the whole special, just because it was a toast. So they let me do a million takes of this, and this was the last thing we shot and it was like 11 o’clock at night. Poor Debra Monk — theater legend Debra Monk — was being a good sport and sticking around.
Their frustration was genuine? It was real. They let me go for 20-minute takes and we did, like, seven of them. I got to say whatever I wanted. I’ve taken bits from my stand-up and bits from other videos I’ve made, but most of what it made it in this is improvised.
How much was, especially with production design, basically planning your own wedding? [Laughs.] I am the thing I parody, too. I do genuinely love upstate New York. I talk about it all the time. There’s parts of L.A. where I’m like, “It’s upstate, right?” Alan Lampert was such a good production designer, he just really got it. A lesser production designer would’ve just done Mason jars and Edison bulbs and an antler, y’know? And he got that it needed to have kind of the Rachel Getting Married feel. It was much more subtle, and he brought in different cultural references that made it aggressively multicultural.
You mentioned that this is also kind of who you are, so who is this person you’re playing? This character is John, a comedian and actor. Is the person you? There are definitely parts of me in it, but I don’t think I’m that much of a monster. I used to want to play women. I was very much inspired by Divine’s career, and I was always obsessed with this idea of, What would Divine’s career look like now, with the way that film has evolved? I was this close to writing a movie that was like the movie Thirteen, but it was me. I was like, I’m gonna play a teenage girl in like a hypernaturalistic movie about a bunch of girlfriends that do coke and punch each other. Then I was like, This is insane. Also it was getting exhausting. I was doing these sketches online where I was buying very expensive lace-front wigs and it was getting logistically impossible. I was just like, What is it, comedically, if I just look like me? and I was immediately like, Oh my God, I am a handsome white man. I’m an Aryan god. I was like, Well, great, I don’t want to see that person on-camera. The only option was to make that person a monster.
This character, versus the characters where you wear wigs, do you feel like you play them in similar ways? The goal with the special was, What are my favorite, most comfortable comedic zones to be in? One of them is this hawkeyed person who’s trying to control everything, and then Vicki — who’s my Southern character — she’s the opposite. She’s free and funny, she knows how to kill and she’s relaxed. And then dumb youth pastor Jason. I love to do straight, super, super dumb-puppy characters. And then the shivering girl in the rain. I don’t know her name, but she’s a Neve Campbell, basically. Yeah, so I had a similar approach with all of them in that I wanted to make sure I was in my sweet spot.
Rewatching this and Vicki, I was reminded of — I think it’s a RuPaul quote — “You’re born naked and then the rest is drag.” Your safe space is either broad performance or people who are performing. I wanted you to talk about your feeling about performance as kind of a social concept. I’m obsessed with performance I think because my parents are ministers. They don’t do it anymore, but they did when I was a kid, and I spent a lot of time going to Southern states watching them preach and being like, What the hell is going on? That’s the person who I know very well, and I’m watching them in this heightened performance.
Also, as a gay person, before you know it, you’re like, I’m trapped in a performance. Before you know what’s going on, you have a very fractured understanding of what it means to be authentic. I’ve always been interested in that, and my favorite TV shows or favorite comedic performances are usually about people who are performing themselves. The way that we see who they really are is in the way that performance fails.
People think what’s real and raw and vulnerable onscreen is, like, crying in movies. When people cry in real life, they’re so embarrassed that they’re crying, and they’re trying to stop themselves from crying and hiding and wiping away their tears. Or they just leave or they don’t cry — they push it down. So many actors, when they cry on-camera, they’re like, And here’s a tear, and I’ve got it and watch it roll. That’s not real, but we overvalue vulnerability in film. I’ve always been more interested in the people who play the covering it up. That’s funnier, and that’s what I know about life, that everyone’s trying to hide shit.
There’s essentially four of these scenes, and you learn halfway through that the house used to be owned by a slave owner in the North. You feel bad for a black waitress and start cutting the vegetables and won’t let her work anymore. What do you kind of find funny about what we’d call performative liberalness? Most people don’t choose their political affiliation. Most people are born into a hyper-Republican or Democratic family. And a lot of us reject or question that, but most of us just stay in line. I feel fortunate to have been born of very liberal parents. I absolutely think liberalism is the better path, but it is funny to be a liberal in this day and age. It’s actually a privilege to be a liberal for the most part. It’s funny to talk about it like it’s something that you arrived at naturally, or you earned it.
On Search Party you play a — spoiler alert — a liar and a fraud and, toward the end of the season, a person with a very big secret. How is that? It was so fun. It was an extension of this kind of energy. What I like about Elliott, there’s part of him that is able to just relax. He’s a very bold liar but he’s so comfortable in his lying. He can get in a manic presentational mode, for sure, but the other characters are very focused on their moral journey, and he’s like, “You look like idiots, come to my side.” I don’t know, I find that very cool.
Both of the times I’ve run into you, you just had or were about to have a dinner party. If you could throw a dream dinner party, with four to six people living or dead, who would they be? This is easy. John Waters, Divine, Lisa Kudrow, Laura Dern, Amy Sedaris. I have one more … Jennifer Saunders.
And then what would you make? I would make a cacio e pepe bucatini. That would be the main event. To counterbalance that I’d make some sort of butter lettuce with a champagne, citrusy vinaigrette or a Dijon. Then, we’d have a Penicillin as the house cocktail. So lemon, ginger, honey, a smoky scotch and then a simple berry cobbler for dessert with Häagen-Dazs vanilla ice cream on top.
That’s the correct answer. And I’m single. Can you believe, I can cook all of that and no one cares?
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(3),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),(auth.isSubscriber()||auth.isMobileAppRequest())&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"3":3,"4":4,"17":17,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(408),Fingerprint2=require(407),DS=require(406),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(408),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"408":408,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"ads.legacy":"ads.legacy","cid.legacy":"cid.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy","facebook.legacy":"facebook.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]