{"version":3,"sources":["assets/images/screenshot-plugin.png","../node_modules/react-use/esm/useEffectOnce.js","../node_modules/react-use/esm/useMount.js","../node_modules/react-use/esm/useUnmount.js","pages/plugins-wordpress.js","hooks/useMetaTags.js","components/footer/footer-brand.module.scss","components/footer/footer-link.module.scss","components/footer/social-icons.module.scss","components/footer/footer.module.scss","components/Shared/Jumbotron/Jumbotron.js","components/Shared/Jumbotron/Jumbotron.module.scss","components/footer/about-us.js","components/footer/footer-brand.js","components/footer/footer-link.js","components/footer/social-icons.js","components/footer/top-link.js","components/footer/footer.js","utils/payments.js","pages/plugins-wordpress.module.scss"],"names":["useEffectOnce","effect","useEffect","useMount","fn","useUnmount","fnRef","useRef","current","PluginsWordPress","description","keywords","metaDescription","document","querySelector","setAttribute","metaKeywords","Jumbotron","className","styles","plugins_jumbotron","container","href","type","span","src","screenshot","alt","Icon","glyph","GLYPHS","SNAZZY_MAPS","feature_icon","GOOGLE","STAR","classNames","pricing_tier","price","subtitle","info","action","itemId","WORDPRESS_SINGLE_ID","WORDPRESS_MULTI_ID","target","rel","PurchaseButton","authenticated","useSelector","currentUserAuthenticatedSelector","dispatch","useDispatch","showAuthModal","useCallback","showModal","MODAL","NOT_AUTHENTICATED","checkoutItem","checkout","onClick","module","exports","children","jumbotron","img_jumbotron","StyledFooterAboutUs","styled","div","AboutUs","routes","home","path","press","FooterBrand","footer_brand","title","FooterLink","text","highlight","footer_link","new_label","SocialIcons","social_icons","TWITTER","FACEBOOK","MAIL","StyledLink","a","TopLink","scrollTop","e","preventDefault","window","scroll","top","left","behavior","error","scrollTo","Footer","hasPricingEnabled","currentUserHasPricingEnabledSelector","footer","footer_content","explore","createStyle","mapBuilder","plugins","help","pricing","link_grid","PRO_PLAN_ID","TEAM_PLAN_ID","httpPost","sessionId","stripe","Stripe","process","redirectToCheckout","console","notify"],"mappings":"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","file":"static/js/plugins-wordpress.2dbaaf55.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/screenshot-plugin.f438ecd3.png\";","import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n useEffect(effect, []);\n};\nexport default useEffectOnce;\n","import useEffectOnce from './useEffectOnce';\nvar useMount = function (fn) {\n useEffectOnce(function () {\n fn();\n });\n};\nexport default useMount;\n","import { useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmount = function (fn) {\n var fnRef = useRef(fn);\n // update the ref each render so if it change the newest callback will be invoked\n fnRef.current = fn;\n useEffectOnce(function () { return function () { return fnRef.current(); }; });\n};\nexport default useUnmount;\n","import { Footer } from 'components/footer/footer';\r\nimport { Jumbotron } from 'components/Shared/Jumbotron/Jumbotron';\r\nimport { Col, ContentSet, Row, Section } from 'components/Shared/Scaffolding';\r\nimport React, { useCallback } from 'react';\r\nimport styles from './plugins-wordpress.module.scss';\r\nimport screenshot from '../assets/images/screenshot-plugin.png';\r\nimport { GLYPHS, Icon } from 'components/Shared/Icon';\r\nimport classNames from 'classnames';\r\nimport { checkout, WORDPRESS_MULTI_ID, WORDPRESS_SINGLE_ID } from 'utils/payments';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { currentUserAuthenticatedSelector } from 'modules/currentUser';\r\nimport MODAL from 'components/Shared/Modals';\r\nimport { showModal } from 'modules/modal';\r\nimport { useMetaTags } from 'hooks/useMetaTags';\r\n\r\nconst PAGE_DESCRIPTION =\r\n 'The Snazzy Maps WordPress plugin adds styles to your existing Google Maps with the click of a button.';\r\nconst PAGE_KEYWORDS = 'snazzy maps,wordpress,google maps,plugin,styles';\r\n\r\n/**\r\n * Page for viewing and purchasing the WordPress plugin.\r\n */\r\nexport default function PluginsWordPress() {\r\n useMetaTags(PAGE_DESCRIPTION, PAGE_KEYWORDS);\r\n return (\r\n <>\r\n <Jumbotron className={styles.plugins_jumbotron}>\r\n <ContentSet className={styles.container}>\r\n <header>\r\n <span className=\"h3 no-margin text-primary\">Snazzy Maps</span>\r\n <h1 className=\"no-margin\">WordPress Plugin</h1>\r\n </header>\r\n <p className=\"lead\">Apply styles to Google Maps in WordPress with the click of a button.</p>\r\n <a\r\n href=\"https://snazzymaps.com/plugins/download/wordpress/snazzy-maps.1.4.0.zip\"\r\n className=\"btn btn-primary btn-lg btn-drop-shadow btn-border-radius\"\r\n >\r\n Download\r\n </a>\r\n <div>\r\n <em>Free for personal use. Affordable for businesses.</em>\r\n </div>\r\n </ContentSet>\r\n </Jumbotron>\r\n <Section type=\"sub\">\r\n <ContentSet className=\"container-fluid container-max-width content-padded-y-lg\">\r\n <Row>\r\n <Col span=\"col-md-8 col-md-offset-2\">\r\n <img src={screenshot} className={styles.screenshot} alt=\"Preview of our WordPress plugin\" />\r\n </Col>\r\n </Row>\r\n </ContentSet>\r\n </Section>\r\n <Section>\r\n <ContentSet className=\"container-fluid container-max-width content-padded-y-lg\">\r\n <Row>\r\n <Col span=\"col-lg-10 col-lg-offset-1 content-set\">\r\n <h1 className=\"text-center no-margin\">Features</h1>\r\n <div className=\"row-spaced-wrapper\">\r\n <div className=\"row flex flex-wrap\">\r\n <section className=\"plugin-feature col-md-4 flex-item-grow-shrink flex\">\r\n <div className=\"bordered-content content-padded content-set flex-item-grow-shrink\">\r\n <div className=\"text-center\">\r\n <Icon glyph={GLYPHS.SNAZZY_MAPS} className={styles.feature_icon} />\r\n </div>\r\n <h1 className=\"h3 title text-center\">Quickly apply styles</h1>\r\n <p>\r\n Browse through hundreds of styles and choose the one that's right for\r\n you. Quickly apply your favorite style to all the maps on your WordPress\r\n site.\r\n </p>\r\n </div>\r\n </section>\r\n <section className=\"plugin-feature col-md-4 flex-item-grow-shrink flex\">\r\n <div className=\"bordered-content content-padded content-set flex-item-grow-shrink\">\r\n <div className=\"text-center\">\r\n <Icon glyph={GLYPHS.GOOGLE} className={styles.feature_icon} />\r\n </div>\r\n <h1 className=\"h3 title text-center\">Works with other map plugins</h1>\r\n <p>\r\n The Snazzy Maps WordPress plugin works alongside your existing Google\r\n Maps plugins to make your maps just a little bit snazzier.\r\n </p>\r\n </div>\r\n </section>\r\n <section className=\"plugin-feature col-md-4 flex-item-grow-shrink flex\">\r\n <div className=\"bordered-content content-padded content-set flex-item-grow-shrink\">\r\n <div className=\"text-center\">\r\n <Icon glyph={GLYPHS.STAR} className={styles.feature_icon} />\r\n </div>\r\n <h1 className=\"h3 title text-center\">Access your favorites</h1>\r\n <p>\r\n Add in your account key and access your list of favorites to apply\r\n styles even faster. You can also access private styles that you have\r\n created in our editor.\r\n </p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n </Col>\r\n </Row>\r\n </ContentSet>\r\n </Section>\r\n <Section type=\"sub\">\r\n <ContentSet className=\"container-fluid container-max-width content-padded-y-lg\">\r\n <Row>\r\n <Col span=\"col-lg-10 col-lg-offset-1 content-set\">\r\n <h1 className=\"text-center no-margin\">Pricing</h1>\r\n <div className=\"row-spaced-wrapper\">\r\n <div className=\"row flex flex-wrap\">\r\n <section\r\n className={classNames(\r\n styles.pricing_tier,\r\n 'col-md-4 flex-item-grow-shrink flex'\r\n )}\r\n >\r\n <div className=\"bordered-content flex-item-grow-shrink flex flex-dir-col\">\r\n <div className={styles.price}>\r\n <h1 className=\"h4 text-primary no-margin\">\r\n Open source and/or personal use\r\n </h1>\r\n <div className={styles.subtitle}>FREE</div>\r\n </div>\r\n <div className={classNames(styles.info, 'flex-item-grow-shrink')}>\r\n <p>\r\n Download and use the plugin free of charge on open source projects\r\n or on your personal site.\r\n </p>\r\n </div>\r\n <div className={styles.action}>\r\n <a\r\n className=\"btn btn-primary btn-drop-shadow btn-border-radius\"\r\n href=\"https://snazzymaps.com/plugins/download/wordpress/snazzy-maps.1.4.0.zip\"\r\n >\r\n Download\r\n </a>\r\n </div>\r\n </div>\r\n </section>\r\n <section\r\n className={classNames(\r\n styles.pricing_tier,\r\n 'col-md-4 flex-item-grow-shrink flex'\r\n )}\r\n >\r\n <div className=\"bordered-content flex-item-grow-shrink flex flex-dir-col\">\r\n <div className={styles.price}>\r\n <h1 className=\"h4 text-primary no-margin\">\r\n Business - Single Site License\r\n </h1>\r\n <div className={styles.subtitle}>\r\n <span>$10.00</span>\r\n </div>\r\n </div>\r\n <div className={classNames(styles.info, 'flex-item-grow-shrink')}>\r\n <p>\r\n Purchase a license to use the plugin on a single business related\r\n site. Helps support future development on the site and even more\r\n plugins.\r\n </p>\r\n </div>\r\n <div className={styles.action}>\r\n <PurchaseButton itemId={WORDPRESS_SINGLE_ID} />\r\n </div>\r\n </div>\r\n </section>\r\n <section\r\n className={classNames(\r\n styles.pricing_tier,\r\n 'col-md-4 flex-item-grow-shrink flex'\r\n )}\r\n >\r\n <div className=\"bordered-content flex-item-grow-shrink flex flex-dir-col\">\r\n <div className={styles.price}>\r\n <h1 className=\"h4 text-primary no-margin\">\r\n Business - Multiple Site License\r\n </h1>\r\n <div className={styles.subtitle}>\r\n <span>$20.00</span>\r\n </div>\r\n </div>\r\n <div className={classNames(styles.info, 'flex-item-grow-shrink')}>\r\n <p>\r\n Use the plugin on as many sites as you want and support future\r\n development on the site.\r\n </p>\r\n </div>\r\n <div className={styles.action}>\r\n <PurchaseButton itemId={WORDPRESS_MULTI_ID} />\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n </Col>\r\n </Row>\r\n </ContentSet>\r\n </Section>\r\n <Section type=\"dark\" className=\"text-center\">\r\n <div className=\"container-fluid container-max-width content-padded-y-lg content-set\">\r\n <h1 className=\"h2 no-margin\">Visit our plugin page on WordPress.org for more details</h1>\r\n <a\r\n href=\"https://wordpress.org/plugins/snazzy-maps/\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"btn btn-primary btn-lg btn-drop-shadow btn-border-radius btn-text-wrap\"\r\n >\r\n View Details\r\n </a>\r\n </div>\r\n </Section>\r\n <Footer />\r\n </>\r\n );\r\n}\r\n\r\nconst PurchaseButton = ({ itemId }) => {\r\n const authenticated = useSelector(currentUserAuthenticatedSelector);\r\n const dispatch = useDispatch();\r\n const showAuthModal = useCallback(() => dispatch(showModal(MODAL.NOT_AUTHENTICATED)), [dispatch]);\r\n const checkoutItem = useCallback(() => checkout(itemId), [itemId]);\r\n const onClick = authenticated ? checkoutItem : showAuthModal;\r\n\r\n return (\r\n <button className=\"btn btn-primary btn-drop-shadow btn-border-radius\" type=\"button\" onClick={onClick}>\r\n Purchase\r\n </button>\r\n );\r\n};\r\n","import { useMount, useUnmount } from 'react-use';\r\n\r\nconst DEFAULT_DESCRIPTION =\r\n 'Snazzy Maps is a repository of different color schemes for Google Maps aimed towards web designers and developers.';\r\nconst DEFAULT_KEYWORDS = 'google,maps,google maps,styled maps,styles,color,schemes,themes';\r\n\r\nexport const useMetaTags = (description, keywords) => {\r\n useMount(() => {\r\n const metaDescription = document.querySelector('meta[name=\"description\"]');\r\n if (metaDescription) metaDescription.setAttribute('content', description);\r\n\r\n const metaKeywords = document.querySelector('meta[name=\"keywords\"]');\r\n if (metaKeywords) metaKeywords.setAttribute('content', keywords);\r\n });\r\n\r\n useUnmount(() => {\r\n const metaDescription = document.querySelector('meta[name=\"description\"]');\r\n if (metaDescription) metaDescription.setAttribute('content', DEFAULT_DESCRIPTION);\r\n\r\n const metaKeywords = document.querySelector('meta[name=\"keywords\"]');\r\n if (metaKeywords) metaKeywords.setAttribute('content', DEFAULT_KEYWORDS);\r\n });\r\n};\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer_brand\":\"footer-brand_footer_brand__37vG6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer_link\":\"footer-link_footer_link__BHbVk\",\"new_label\":\"footer-link_new_label__XETWt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"social_icons\":\"social-icons_social_icons__3f35k\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"footer_footer__7O90g\",\"footer_content\":\"footer_footer_content__3c5-p\",\"link_grid\":\"footer_link_grid__yt0jr\"};","import classNames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport styles from './Jumbotron.module.scss';\r\n\r\nexport const Jumbotron = ({ className, children }) => {\r\n return <div className={classNames(className, styles.jumbotron, styles.img_jumbotron)}>{children}</div>;\r\n};\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"jumbotron\":\"Jumbotron_jumbotron__1Ioyg\",\"jumbotron_sm\":\"Jumbotron_jumbotron_sm__6Zta4\",\"img_jumbotron\":\"Jumbotron_img_jumbotron__3oWg7\"};","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Link } from 'wouter';\r\nimport { routes } from '../../modules/routes';\r\n\r\nconst StyledFooterAboutUs = styled.div`\r\n a {\r\n text-decoration: underline;\r\n color: var(--sm-footer-text);\r\n\r\n &:hover,\r\n &:focus,\r\n &:active {\r\n color: var(--sm-text-inverse);\r\n }\r\n }\r\n`;\r\n\r\nexport function AboutUs() {\r\n return (\r\n <StyledFooterAboutUs>\r\n <p>\r\n <Link href={routes.home.path}>Snazzy Maps</Link> is a repository of different styles for Google Maps\r\n aimed towards web designers and developers.\r\n </p>\r\n <p>\r\n All styles are licensed under{' '}\r\n <a href=\"http://creativecommons.org/publicdomain/zero/1.0/\" target=\"_blank\" rel=\"noreferrer noopener\">\r\n creative commons\r\n </a>{' '}\r\n and are completely free to use.\r\n </p>\r\n <p>\r\n Read more <Link href={routes.press.path}>about us</Link> or leave us some{' '}\r\n <a\r\n href=\"https://snazzymaps.uservoice.com/forums/228743-general\"\r\n target=\"_blank\"\r\n rel=\"noreferrer noopener\"\r\n >\r\n feedback\r\n </a>\r\n .\r\n </p>\r\n <p>\r\n Created by{' '}\r\n <a href=\"https://adamkrogh.com\" rel=\"noreferrer noopener\" target=\"_blank\">\r\n Adam Krogh\r\n </a>\r\n .\r\n </p>\r\n </StyledFooterAboutUs>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Link } from 'wouter';\r\nimport { routes } from '../../modules/routes';\r\n\r\nimport styles from './footer-brand.module.scss';\r\n\r\nexport function FooterBrand() {\r\n return (\r\n <div className={styles.footer_brand}>\r\n <Link href={routes.home.path} title=\"Snazzy Maps\">\r\n <span>Snazzy Maps</span>\r\n <span></span>\r\n </Link>\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Link } from 'wouter';\r\n\r\nimport styles from './footer-link.module.scss';\r\n\r\nexport function FooterLink({ text, href, highlight = false }) {\r\n return (\r\n <Link href={href} className={styles.footer_link}>\r\n {text}\r\n {highlight && <span className={styles.new_label}>New</span>}\r\n </Link>\r\n );\r\n}\r\n","import { GLYPHS, Icon } from 'components/Shared/Icon';\r\nimport React from 'react';\r\n\r\nimport styles from './social-icons.module.scss';\r\n\r\nexport function SocialIcons() {\r\n return (\r\n <div className={styles.social_icons}>\r\n <a\r\n href=\"https://twitter.com/snazzymaps\"\r\n target=\"_blank\"\r\n rel=\"noreferrer noopener\"\r\n title=\"Follow us on Twitter\"\r\n >\r\n <Icon glyph={GLYPHS.TWITTER} />\r\n </a>\r\n <a\r\n href=\"https://www.facebook.com/SnazzyMaps\"\r\n target=\"_blank\"\r\n rel=\"noreferrer noopener\"\r\n title=\"Like us on Facebook\"\r\n >\r\n <Icon glyph={GLYPHS.FACEBOOK} />\r\n </a>\r\n <a href=\"mailto:support@snazzymaps.com\" title=\"Email us at support@snazzymaps.com\">\r\n <Icon glyph={GLYPHS.MAIL} />\r\n </a>\r\n </div>\r\n );\r\n}\r\n","import React, { useCallback } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst StyledLink = styled.a`\r\n width: 100%;\r\n text-align: center;\r\n background-color: var(--sm-brand-bg);\r\n color: var(--sm-footer-text);\r\n text-transform: uppercase;\r\n display: inline-block;\r\n text-decoration: none;\r\n padding: 10px 0;\r\n font-size: 1rem;\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: #fff;\r\n }\r\n`;\r\n\r\nexport function TopLink() {\r\n const scrollTop = useCallback((e) => {\r\n e.preventDefault();\r\n try {\r\n window.scroll({ top: 0, left: 0, behavior: 'smooth' });\r\n } catch (error) {\r\n window.scrollTo(0, 0);\r\n }\r\n }, []);\r\n return (\r\n <StyledLink href=\"#\" type=\"button\" onClick={scrollTop}>\r\n Back to top\r\n </StyledLink>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { routes } from '../../modules/routes';\r\nimport { AboutUs } from './about-us';\r\nimport { FooterBrand } from './footer-brand';\r\nimport { FooterLink } from './footer-link';\r\nimport { SocialIcons } from './social-icons';\r\nimport { TopLink } from './top-link';\r\n\r\nimport styles from './footer.module.scss';\r\nimport { useSelector } from 'react-redux';\r\nimport { currentUserHasPricingEnabledSelector } from 'modules/currentUser';\r\n\r\nexport function Footer() {\r\n const hasPricingEnabled = useSelector(currentUserHasPricingEnabledSelector);\r\n return (\r\n <>\r\n <TopLink />\r\n <footer className={styles.footer}>\r\n <div className={styles.footer_content}>\r\n <div>\r\n <FooterBrand />\r\n <AboutUs />\r\n <SocialIcons />\r\n </div>\r\n <nav>\r\n <div>\r\n <FooterLink href={routes.home.path} text=\"Home\" />\r\n <FooterLink href={routes.explore.path} text=\"Explore Styles\" />\r\n <FooterLink href={routes.createStyle.path} text=\"Create a Style\" />\r\n <FooterLink href={routes.mapBuilder.path} text=\"Build a Map\" highlight />\r\n <FooterLink href={routes.plugins.path} text=\"Plugins\" />\r\n <FooterLink href={routes.help.path} text=\"Help\" />\r\n <FooterLink href={routes.press.path} text=\"Press\" />\r\n {hasPricingEnabled && <FooterLink href={routes.pricing.path} text=\"Pricing\" />}\r\n </div>\r\n <h4>Tags</h4>\r\n <div className={styles.link_grid}>\r\n <FooterLink href=\"/explore?tag=colorful\" text=\"Colorful\" />\r\n <FooterLink href=\"/explore?tag=complex\" text=\"Complex\" />\r\n <FooterLink href=\"/explore?tag=dark\" text=\"Dark\" />\r\n <FooterLink href=\"/explore?tag=greyscale\" text=\"Greyscale\" />\r\n <FooterLink href=\"/explore?tag=light\" text=\"Light\" />\r\n <FooterLink href=\"/explore?tag=monochrome\" text=\"Monochrome\" />\r\n <FooterLink href=\"/explore?tag=no-labels\" text=\"No Labels\" />\r\n <FooterLink href=\"/explore?tag=simple\" text=\"Simple\" />\r\n <FooterLink href=\"/explore?tag=two-tone\" text=\"Two Tone\" />\r\n </div>\r\n <h4>Colors</h4>\r\n <div className={styles.link_grid}>\r\n <FooterLink href=\"/explore?color=black\" text=\"Black\" />\r\n <FooterLink href=\"/explore?color=blue\" text=\"Blue\" />\r\n <FooterLink href=\"/explore?color=gray\" text=\"Gray\" />\r\n <FooterLink href=\"/explore?color=green\" text=\"Green\" />\r\n <FooterLink href=\"/explore?color=multi\" text=\"Multi\" />\r\n <FooterLink href=\"/explore?color=orange\" text=\"Orange\" />\r\n <FooterLink href=\"/explore?color=purple\" text=\"Purple\" />\r\n <FooterLink href=\"/explore?color=red\" text=\"Red\" />\r\n <FooterLink href=\"/explore?color=white\" text=\"White\" />\r\n <FooterLink href=\"/explore?color=yellow\" text=\"Yellow\" />\r\n </div>\r\n </nav>\r\n </div>\r\n </footer>\r\n </>\r\n );\r\n}\r\n","import { httpPost } from '../modules/api';\r\nimport notify from './notify';\r\n\r\nexport const WORDPRESS_SINGLE_ID = 1;\r\nexport const WORDPRESS_MULTI_ID = 2;\r\nexport const PRO_PLAN_ID = 3;\r\nexport const TEAM_PLAN_ID = 4;\r\n\r\nexport const checkout = async (itemId) => {\r\n try {\r\n const { sessionId } = await httpPost('/payments/checkout-sessions', { itemId });\r\n var stripe = window.Stripe(process.env.REACT_APP_STRIPE_API_KEY);\r\n await stripe.redirectToCheckout({ sessionId });\r\n } catch (e) {\r\n console.error(e);\r\n notify.error('Something went wrong during checkout. Please contact support.');\r\n }\r\n};\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"plugins-wordpress_container__2smcu\",\"plugins_jumbotron\":\"plugins-wordpress_plugins_jumbotron__2KXfw\",\"screenshot\":\"plugins-wordpress_screenshot__2TmIr\",\"feature_icon\":\"plugins-wordpress_feature_icon__21PI5\",\"price\":\"plugins-wordpress_price__3fwi-\",\"info\":\"plugins-wordpress_info__1-mSH\",\"action\":\"plugins-wordpress_action__2DBgn\",\"subtitle\":\"plugins-wordpress_subtitle__39KTB\"};"],"sourceRoot":""}