ghost 6.57.1 → 6.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/bin/validate-adapters.js +1 -5
- package/components/ghost-storage-base-3.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
- package/components/tryghost-adapter-base-jobs-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-redirects-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-route-settings-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-scheduling-0.2.2.tgz +0 -0
- package/components/tryghost-adapter-base-sso-0.1.2.tgz +0 -0
- package/components/tryghost-admin-api-schema-0.0.0.tgz +0 -0
- package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
- package/components/tryghost-i18n-0.0.0.tgz +0 -0
- package/components/tryghost-kg-card-factory-5.2.4.tgz +0 -0
- package/components/tryghost-kg-clean-basic-html-4.3.4.tgz +0 -0
- package/components/tryghost-kg-converters-1.2.5.tgz +0 -0
- package/components/tryghost-kg-default-cards-10.3.5.tgz +0 -0
- package/components/tryghost-kg-default-nodes-2.2.0.tgz +0 -0
- package/components/tryghost-kg-default-transforms-1.3.4.tgz +0 -0
- package/components/tryghost-kg-html-to-lexical-1.4.0.tgz +0 -0
- package/components/tryghost-kg-lexical-html-renderer-1.5.0.tgz +0 -0
- package/components/tryghost-kg-markdown-html-renderer-7.2.4.tgz +0 -0
- package/components/tryghost-kg-utils-1.1.4.tgz +0 -0
- package/components/tryghost-nql-string-0.0.0.tgz +0 -0
- package/components/tryghost-parse-email-address-0.0.0.tgz +0 -0
- package/core/boot.js +35 -3
- package/core/built/admin/assets/{about-BNojRaxf.js → about-B_BvSyLF.js} +1 -1
- package/core/built/admin/assets/{account-migration-DMS8JsM-.js → account-migration-oJUGxnzT.js} +1 -1
- package/core/built/admin/assets/activitypub/{account-migration-DHFbePl6.js → account-migration-BpDeIF3G.js} +8 -8
- package/core/built/admin/assets/activitypub/activitypub.js +4 -4
- package/core/built/admin/assets/activitypub/{avatar-CT4tS2_S.js → avatar-B0SpBPVL.js} +3 -3
- package/core/built/admin/assets/activitypub/{avatar-flipboard-ByYWKipo.js → avatar-flipboard-DKt1LGcE.js} +3 -3
- package/core/built/admin/assets/activitypub/{bluesky-sharing-srVnSHDz.js → bluesky-sharing-aPMtrS3L.js} +10 -10
- package/core/built/admin/assets/activitypub/{chunk-KS7C4IRE-D4HEcEwi.js → chunk-KS7C4IRE-CnTrsgmM.js} +26 -15
- package/core/built/admin/assets/activitypub/{content-formatters-C2sos5Ht.js → content-formatters-BORfuA9G.js} +318 -284
- package/core/built/admin/assets/activitypub/{copy-B1UBTOoZ.js → copy-D-YvNi2E.js} +2 -2
- package/core/built/admin/assets/activitypub/{dist-MPsb2WZ1.js → dist-Dqggkccr.js} +5 -5
- package/core/built/admin/assets/activitypub/{domain-DzcM9Dzo.js → domain-CPdiB27_.js} +10 -10
- package/core/built/admin/assets/activitypub/{edit-profile-CsQ_4xAk.js → edit-profile-BY2PawIe.js} +7 -7
- package/core/built/admin/assets/activitypub/{explore-CJe0DZBK.js → explore-Sp9bgAwq.js} +11 -11
- package/core/built/admin/assets/activitypub/{feed-CKV3qWON.js → feed-BjtF4ohL.js} +10 -10
- package/core/built/admin/assets/activitypub/{field-DckHfDJf.js → field-BDOYVTg6.js} +4 -4
- package/core/built/admin/assets/activitypub/{hash-Dlp8RM55.js → hash-DqXYHgzG.js} +2 -2
- package/core/built/admin/assets/activitypub/{inbox-CsPy4R0M.js → inbox-CZ7IOAMn.js} +2 -2
- package/core/built/admin/assets/activitypub/{inbox-DAsjzUUe.js → inbox-z1o2j1Tb.js} +11 -11
- package/core/built/admin/assets/activitypub/{label-DWyo9E5T.js → label-1jhN-qhD.js} +4 -4
- package/core/built/admin/assets/activitypub/layout-BRMezuty.js +1 -0
- package/core/built/admin/assets/activitypub/{moderation-B0Inc03M.js → moderation-CZudJi8N.js} +9 -9
- package/core/built/admin/assets/activitypub/{note-CSE54lER.js → note-nr_m_5yb.js} +8 -8
- package/core/built/admin/assets/activitypub/{notifications-RSwbKqdh.js → notifications-BdcyivbT.js} +10 -10
- package/core/built/admin/assets/activitypub/{onboarding-BFDkzeR2.js → onboarding-B4kwav9u.js} +2 -2
- package/core/built/admin/assets/activitypub/{onboarding-D6rcBdPe.js → onboarding-DZNElJYP.js} +3 -3
- package/core/built/admin/assets/activitypub/{preferences-CE231n2_.js → preferences-CNqy1x9C.js} +13 -13
- package/core/built/admin/assets/activitypub/{profile-aaQ1j1Eo.js → profile-DlY4rhbO.js} +15 -15
- package/core/built/admin/assets/activitypub/{reply-Cjb0Vs3m.js → reply-DASIN0Ec.js} +2 -2
- package/core/built/admin/assets/activitypub/{routes-Djb0mc9k.js → routes-CEHdEZzS.js} +31 -31
- package/core/built/admin/assets/activitypub/{separator-D8pROI5n.js → separator-B3k35sUV.js} +4 -4
- package/core/built/admin/assets/activitypub/{settings-DMc32IQl.js → settings-CrSV1cux.js} +6 -6
- package/core/built/admin/assets/activitypub/{site-DVIcsohX.js → site-CtBUCPBz.js} +6 -6
- package/core/built/admin/assets/activitypub/{step-1-9Yey9usF.js → step-1-D9jGWyAy.js} +7 -7
- package/core/built/admin/assets/activitypub/{step-2-DdYmKRXV.js → step-2-Jz_enuo9.js} +7 -7
- package/core/built/admin/assets/activitypub/{step-3-hdSkcjZU.js → step-3-KpUqpGWi.js} +12 -12
- package/core/built/admin/assets/activitypub/{tabs-CUqseYzQ.js → tabs-DvlsxTCI.js} +7 -7
- package/core/built/admin/assets/activitypub/{topic-filter-Coni6OXM.js → topic-filter-CIN1E2jg.js} +4 -4
- package/core/built/admin/assets/activitypub/{use-activity-pub-queries-MeHTPMQv.js → use-activity-pub-queries-CATFd6YV.js} +4 -4
- package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-B046AM38.js → use-navigate-with-base-path-iCkcbMGk.js} +2 -2
- package/core/built/admin/assets/activitypub/{use-reply-chain-data-1AO-Xob6.js → use-reply-chain-data-DJ0vhA8V.js} +6 -6
- package/core/built/admin/assets/activitypub/{users-BLeiOTHc.js → users-sgJ6GNZX.js} +12 -11
- package/core/built/admin/assets/activitypub/{x-BRfRYd16.js → x-Cy2jUiYM.js} +2 -2
- package/core/built/admin/assets/add-integration-modal-BW23PDYs.js +1 -0
- package/core/built/admin/assets/add-newsletter-modal-M0ls8BKO.js +1 -0
- package/core/built/admin/assets/{add-recommendation-modal-D-3LOrdd.js → add-recommendation-modal-B0NeBMzl.js} +1 -1
- package/core/built/admin/assets/{analytics-DTIMRhWw.js → analytics-BC2oR8ay.js} +1 -1
- package/core/built/admin/assets/announcement-bar-modal-pXBqjQE_.js +1 -0
- package/core/built/admin/assets/{api-keys-_iCT4dxr.js → api-keys-BgKr003d.js} +1 -1
- package/core/built/admin/assets/{api-keys-Dx4NeNpK.js → api-keys-Df6uv1dT.js} +1 -1
- package/core/built/admin/assets/{audience-DkknNqhZ.js → audience-BY8od8If.js} +1 -1
- package/core/built/admin/assets/{automated-emails-PayPCT8L.js → automated-emails-28c2Lbb3.js} +1 -1
- package/core/built/admin/assets/{automations-DvSU7QhW.js → automations-DCs6Wady.js} +1 -1
- package/core/built/admin/assets/{automations-162q5HjL.js → automations-Dzp_QnON.js} +1 -1
- package/core/built/admin/assets/{bluesky-sharing-yZ9A_jL8.js → bluesky-sharing-D0P42Cws.js} +1 -1
- package/core/built/admin/assets/{breadcrumb-CjOH7LCU.js → breadcrumb-MTj_cKLb.js} +1 -1
- package/core/built/admin/assets/card-CiiE7QfM.js +1 -0
- package/core/built/admin/assets/{chart-helpers-DGxvWnBT.js → chart-helpers-DcO3k_vA.js} +1 -1
- package/core/built/admin/assets/{checkbox-BSUcnNq_.js → checkbox-LmClhqcS.js} +1 -1
- package/core/built/admin/assets/{chunk.424.4a27628efdade15c2dab.js → chunk.408.1a258af360eb8d905508.js} +40 -37
- package/core/built/admin/assets/{chunk.571.40f093ed6d883993714e.js → chunk.492.a9da46ca956b10116774.js} +1342 -1342
- package/core/built/admin/assets/{chunk.571.40f093ed6d883993714e.js.LICENSE.txt → chunk.492.a9da46ca956b10116774.js.LICENSE.txt} +1 -1
- package/core/built/admin/assets/chunk.524.4c693c3a00ac91df34fa.js +25 -0
- package/core/built/admin/assets/chunk.582.20b600e329e58d12d7c2.js +27 -0
- package/core/built/admin/assets/code-editor-view-DqTOUnbM.js +1 -0
- package/core/built/admin/assets/code-editor-view-bA0lfxUL.js +1 -0
- package/core/built/admin/assets/{debounce-Cx5B_9OI.js → color-picker-CBlJMv3y.js} +2 -2
- package/core/built/admin/assets/color-picker-field-Cv9GOJQZ.js +1 -0
- package/core/built/admin/assets/{combobox-5rdgDrDV.js → combobox-BbPJzjCp.js} +1 -1
- package/core/built/admin/assets/command-BrhXIlDr.js +1 -0
- package/core/built/admin/assets/comments-Cu4rD1aJ.js +1 -0
- package/core/built/admin/assets/confirmation-provider-BEdrnHns.js +1 -0
- package/core/built/admin/assets/{content-api-modal-BtW4Z1-1.js → content-api-modal-BOFWRUkC.js} +1 -1
- package/core/built/admin/assets/{copy-field-CEp_XieW.js → copy-field-8biQvNMD.js} +1 -1
- package/core/built/admin/assets/custom-field-type-option-CNhAgHbJ.js +1 -0
- package/core/built/admin/assets/custom-integration-modal-CrGOI8IB.js +1 -0
- package/core/built/admin/assets/{date-range-select-B3Ij1Rqg.js → date-range-select-Bsh4gIek.js} +1 -1
- package/core/built/admin/assets/debounce-pscB46sW.js +1 -0
- package/core/built/admin/assets/design-and-theme-modal-DWZguwWX.js +23 -0
- package/core/built/admin/assets/{dirty-confirm-dialog-YE9L21gY.js → dirty-confirm-dialog-DmdMpgyN.js} +1 -1
- package/core/built/admin/assets/{disabled-sources-indicator-uIzbWL7K.js → disabled-sources-indicator-BLnmyWgt.js} +1 -1
- package/core/built/admin/assets/dist-4m6pHdc0.js +23 -0
- package/core/built/admin/assets/{dist-DCk0UkGx.js → dist-B6bJuxL3.js} +1 -1
- package/core/built/admin/assets/{dist-CbHbGtQ-.js → dist-BtaTA7Ii.js} +1 -1
- package/core/built/admin/assets/{dist-Q1p9iXwH.js → dist-CZgIBXQN.js} +1 -1
- package/core/built/admin/assets/dist-CiHx7vA5.js +6 -0
- package/core/built/admin/assets/{dist-ARN6XTcR.js → dist-ECAUrdGc.js} +1 -1
- package/core/built/admin/assets/dist-Z97pCNqS.js +11 -0
- package/core/built/admin/assets/{dist-t6AXpf_4.js → dist-zwwGt8Yf.js} +1 -1
- package/core/built/admin/assets/{domain-DzrOAPY8.js → domain-Dp9TRrFp.js} +1 -1
- package/core/built/admin/assets/{dropzone-CzhP33wa.js → dropzone-B21Entqz.js} +1 -1
- package/core/built/admin/assets/{edit-profile-oufs4R4n.js → edit-profile-DG6lpMsr.js} +1 -1
- package/core/built/admin/assets/editor-CPQOrhrn.js +8 -0
- package/core/built/admin/assets/{editor-DtxX27Jz.css → editor-DLioOiRN.css} +1 -1
- package/core/built/admin/assets/{embed-signup-form-modal-Ch3s6lqA.js → embed-signup-form-modal-CgWniDha.js} +2 -2
- package/core/built/admin/assets/esm-CXo5SEPy.js +2 -0
- package/core/built/admin/assets/{explore-CA-R01Br.js → explore-C3rzONJv.js} +1 -1
- package/core/built/admin/assets/{feed-ClC8_Gld.js → feed-DpUwS1cU.js} +1 -1
- package/core/built/admin/assets/{field-B3OPenbP.js → field-BQqLTgHM.js} +1 -1
- package/core/built/admin/assets/{filter-sources-CiPLnG9A.js → filter-sources-FgqoUIL7.js} +1 -1
- package/core/built/admin/assets/{filters-yFvybRMe.js → filters-D0uIMD8n.js} +1 -1
- package/core/built/admin/assets/filters-DZJT29GW.js +1 -0
- package/core/built/admin/assets/{first-promoter-modal-BC0UpYCD.js → first-promoter-modal-DJhQQheG.js} +1 -1
- package/core/built/admin/assets/framework-provider-CFLwK5uS.js +4 -0
- package/core/built/admin/assets/{ghost-d38c30b866e59f2e06a357b5eb844fe5.css → ghost-68f447a1796b93a1f128b649bac8506d.css} +1 -1
- package/core/built/admin/assets/{ghost-d683fbeb945b13155ea669caa5d8db41.js → ghost-ba408063a5922b458b4a8f216cf23251.js} +124 -342
- package/core/built/admin/assets/{ghost-dark-1bffd5099ba7a749303133efacf8480b.css → ghost-dark-28ae4899c92022857f3584694bcb50ef.css} +1 -1
- package/core/built/admin/assets/{gift-link-modal-BKRuqo-k.js → gift-link-modal-sdFLjND9.js} +1 -1
- package/core/built/admin/assets/{gift-links-CVuqLhsZ.js → gift-links-D7BJ9qfe.js} +1 -1
- package/core/built/admin/assets/{global-data-provider-RzW6Bnlf.js → global-data-provider-CixmTX00.js} +1 -1
- package/core/built/admin/assets/{growth-ClNAldfL.js → growth-0YYkBEeS.js} +1 -1
- package/core/built/admin/assets/{growth-Dz8OSG06.js → growth-DpjAPeQT.js} +2 -2
- package/core/built/admin/assets/{history-modal-DIVuQ5Ct.js → history-modal-BWJ4-cJ0.js} +1 -1
- package/core/built/admin/assets/{hooks-D6EE7BIt.js → hooks-CJepWnbB.js} +1 -1
- package/core/built/admin/assets/{html-field-CVZ2sMxw.js → html-field-C-oa5DEl.js} +1 -1
- package/core/built/admin/assets/{iframe-buffering-e8vH4-Qn.js → iframe-buffering-Ba9sDpi2.js} +1 -1
- package/core/built/admin/assets/{images-Ok8FFJ3A.js → images-3cQgwfTD.js} +1 -1
- package/core/built/admin/assets/{inbox-CMUVI6qb.js → inbox-Dz_JblyJ.js} +6 -6
- package/core/built/admin/assets/index-BOJzlYiz.js +67 -0
- package/core/built/admin/assets/index-Bid6LAyc.css +1 -0
- package/core/built/admin/assets/{input-group-2XU-iuh_.js → input-group-DpogNUIt.js} +1 -1
- package/core/built/admin/assets/{integrations-BT6_iJvu.js → integrations-B9yYgci5.js} +1 -1
- package/core/built/admin/assets/{invite-user-modal-DrZ7xxrZ.js → invite-user-modal-DCiQSiuD.js} +1 -1
- package/core/built/admin/assets/{koenig-editor-base-BPj4S760.js → koenig-editor-base-BApy8Q7C.js} +1 -1
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +8328 -8294
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +84 -84
- package/core/built/admin/assets/{koenig-lexical-Cdjv-m3_.js → koenig-lexical-2KuqRwZI.js} +33 -33
- package/core/built/admin/assets/{kpi-card-J8Mj1sDX.js → kpi-card-Ck3tT2Wg.js} +1 -1
- package/core/built/admin/assets/{kpi-card-awos0BMH.js → kpi-card-DDIxptaS.js} +1 -1
- package/core/built/admin/assets/{kpi-helpers-SEhvH-8E.js → kpi-helpers-ssbuy-hD.js} +1 -1
- package/core/built/admin/assets/{kpi-tabs-R6BjsKhd.js → kpi-tabs-BqoIM6bI.js} +1 -1
- package/core/built/admin/assets/{label-BMC3dzLI.js → label-DodDsMzn.js} +1 -1
- package/core/built/admin/assets/label-picker-Cvvbmzb5.js +1 -0
- package/core/built/admin/assets/{labels-DAPjKPy2.js → labels-DqvSR6JF.js} +1 -1
- package/core/built/admin/assets/layout-DkkGyev2.js +1 -0
- package/core/built/admin/assets/limit-service-BhiEvqcP.js +20 -0
- package/core/built/admin/assets/{link-helpers-Bzkk68GD.js → link-helpers-kpbU8TWh.js} +1 -1
- package/core/built/admin/assets/luxon-D1RVjjpq.js +1 -0
- package/core/built/admin/assets/member-custom-fields-CvGcpaiW.js +1 -0
- package/core/built/admin/assets/member-detail-CMCMZ47_.js +1 -0
- package/core/built/admin/assets/members-sRl6fNfq.js +11 -0
- package/core/built/admin/assets/{moderation-mPjYHgZW.js → moderation-KhKwGqI1.js} +1 -1
- package/core/built/admin/assets/{multi-select-combobox-CsoyHAiX.js → multi-select-combobox-nhCff0_K.js} +1 -1
- package/core/built/admin/assets/{navigation-modal-D_c0badj.js → navigation-modal-MDJExWDJ.js} +1 -1
- package/core/built/admin/assets/newsletter-BIBHumfV.js +1 -0
- package/core/built/admin/assets/newsletter-detail-modal-CfjBMH3v.js +1 -0
- package/core/built/admin/assets/{newsletter-emails-B-OLfrvr.js → newsletter-emails-ClDL-7dA.js} +1 -1
- package/core/built/admin/assets/newsletters-CBe-IPzK.js +1 -0
- package/core/built/admin/assets/{newsletters-Du0lzskS.js → newsletters-ILsexy-5.js} +1 -1
- package/core/built/admin/assets/{note-CSVsUKBm.js → note-HnNUOt4d.js} +1 -1
- package/core/built/admin/assets/{notifications-DV9FRtDw.js → notifications-Cj5e-258.js} +1 -1
- package/core/built/admin/assets/nql-lang-CaWrLesS.js +19 -0
- package/core/built/admin/assets/{offers-Um6ab71O.js → offers-DMxebaoK.js} +1 -1
- package/core/built/admin/assets/offers-container-modal-BHwHtixC.js +1 -0
- package/core/built/admin/assets/{onboarding-route--jL5KLPD.js → onboarding-route-D_4jp7Nq.js} +1 -1
- package/core/built/admin/assets/overview-CezDdg-F.js +1 -0
- package/core/built/admin/assets/overview-D5mM51Lj.js +1 -0
- package/core/built/admin/assets/{page-header-DAvDYKO9.js → page-header-VLPJfj_d.js} +1 -1
- package/core/built/admin/assets/{pages-BVMnpI2O.js → pages-Gchxp5c7.js} +1 -1
- package/core/built/admin/assets/{pintura-modal-jiUCxX0Q.js → pintura-modal-BXXJ8Iaa.js} +1 -1
- package/core/built/admin/assets/{portal-frame-D4D4nEO6.js → portal-frame-BLCvF8f-.js} +1 -1
- package/core/built/admin/assets/portal-modal-DN80tAcy.js +1 -0
- package/core/built/admin/assets/{post-analytics-BhAtiFJp.js → post-analytics-Gv81eN_g.js} +1 -1
- package/core/built/admin/assets/post-analytics-header-_ydSY8qO.js +1 -0
- package/core/built/admin/assets/{post-analytics-provider-DGg0FUqs.js → post-analytics-provider-O2YjZMhN.js} +1 -1
- package/core/built/admin/assets/{post-share-modal-DtFAC132.js → post-share-modal-CzYak_a5.js} +1 -1
- package/core/built/admin/assets/{posts-CxG7v0-M.js → posts-DgcUi2rc.js} +1 -1
- package/core/built/admin/assets/preferences-gneLb6LV.js +5 -0
- package/core/built/admin/assets/{preview-modal-DctYx20m.js → preview-modal-Bkq-tgVm.js} +1 -1
- package/core/built/admin/assets/profile-CzXmCNTC.js +1 -0
- package/core/built/admin/assets/{radio-group-CI5_Kf_d.js → radio-group-Dsq5ZEbV.js} +1 -1
- package/core/built/admin/assets/{referrers-B9QDAfYm.js → referrers-C3a2K8qB.js} +1 -1
- package/core/built/admin/assets/{router-provider-DSQfprxH.js → router-provider-CkB_ArLF.js} +1 -1
- package/core/built/admin/assets/{select-CkXqNJDJ.js → select-xuZAuDyS.js} +1 -1
- package/core/built/admin/assets/{settings-ZCj-W56o.js → settings-Ct8pabhr.js} +1 -1
- package/core/built/admin/assets/settings-KSWWQanQ.js +4 -0
- package/core/built/admin/assets/{settings-breadcrumbs-DIq31FwA.js → settings-breadcrumbs-DbPGu-Tu.js} +1 -1
- package/core/built/admin/assets/{share-modal-BNj14g79.js → share-modal-CdiUx9WM.js} +1 -1
- package/core/built/admin/assets/{slack-modal-C6SpMQ-q.js → slack-modal-BP--Z3jE.js} +1 -1
- package/core/built/admin/assets/{sort-button-B-k54ow2.js → sort-button-CjfKdlsL.js} +1 -1
- package/core/built/admin/assets/{source-icon-Cej3sZM6.js → source-icon-DHj1h6Ts.js} +1 -1
- package/core/built/admin/assets/{stats-B2KW8E2y.js → stats-C615kulJ.js} +1 -1
- package/core/built/admin/assets/{stats-view-CVzU2-p5.js → stats-view-BSMRdYiN.js} +1 -1
- package/core/built/admin/assets/{step-1-Dbn1iIMU.js → step-1-pSdGYtIF.js} +1 -1
- package/core/built/admin/assets/{step-2-BahnSuN6.js → step-2-T9Uy4eBD.js} +1 -1
- package/core/built/admin/assets/{step-3-CW04e2ZJ.js → step-3-D4uXe_XG.js} +2 -2
- package/core/built/admin/assets/{stripe-button-BkBZqaGG.js → stripe-button-Bh4p6Wud.js} +1 -1
- package/core/built/admin/assets/stripe-connect-modal-C2vTvepi.js +1 -0
- package/core/built/admin/assets/{table-BtLcEi1M.js → table-DghJxZMH.js} +1 -1
- package/core/built/admin/assets/{tabs-BaWRfg8j.js → tabs-l9c7FjzI.js} +1 -1
- package/core/built/admin/assets/tag-detail-DBw_M2-p.js +2 -0
- package/core/built/admin/assets/{tags-BbygUvNB.js → tags-DoWsAG6l.js} +1 -1
- package/core/built/admin/assets/{tags-BwCgmr5v.js → tags-EmEvJN75.js} +1 -1
- package/core/built/admin/assets/{testimonials-modal--bdzppyh.js → testimonials-modal-BZKePE2T.js} +1 -1
- package/core/built/admin/assets/tier-detail-modal-D65pVWsN.js +1 -0
- package/core/built/admin/assets/{tiers-Da6kxHQP.js → tiers-8iTFjJWg.js} +1 -1
- package/core/built/admin/assets/{toggle-group-CVl-Xigr.js → toggle-group-uJnl42w3.js} +1 -1
- package/core/built/admin/assets/{topic-filter-BoRHRbL1.js → topic-filter-BM7hz0kW.js} +1 -1
- package/core/built/admin/assets/transistor-modal-VZOGN3od.js +1 -0
- package/core/built/admin/assets/{unsplash-modal-CixoRAO2.js → unsplash-modal-CKGfACxF.js} +1 -1
- package/core/built/admin/assets/{use-analytics-data-BiWvcf1u.js → use-analytics-data-IxJcSjc9.js} +1 -1
- package/core/built/admin/assets/use-check-theme-limit-error-CGp3CGT5.js +1 -0
- package/core/built/admin/assets/use-feature-flag-CSq2Lwzt.js +1 -0
- package/core/built/admin/assets/use-filter-params-0hcJJuEJ.js +1 -0
- package/core/built/admin/assets/{use-filterable-api-iMpDZBxD.js → use-filterable-api-CQBtVG-l.js} +1 -1
- package/core/built/admin/assets/{use-growth-stats-Dom8xVzo.js → use-growth-stats-1NW-8eEZ.js} +1 -1
- package/core/built/admin/assets/use-limiter-ffwpsZPp.js +2 -0
- package/core/built/admin/assets/{use-pintura-config-Bj4QmiVk.js → use-pintura-config-BjFChXV1.js} +1 -1
- package/core/built/admin/assets/{use-pintura-editor-DvrslmPE.js → use-pintura-editor-Cb41oJyL.js} +1 -1
- package/core/built/admin/assets/{use-post-referrers-pxIHTXFs.js → use-post-referrers-Dp1BnTAK.js} +1 -1
- package/core/built/admin/assets/{use-reply-chain-data-CmFe0N6F.js → use-reply-chain-data-C0ZUTkfk.js} +1 -1
- package/core/built/admin/assets/{use-setting-group-Cmp_sy-d.js → use-setting-group-Bx8M6FL2.js} +1 -1
- package/core/built/admin/assets/{use-settings-navigation-BmROPrls.js → use-settings-navigation-BOZcat_V.js} +1 -1
- package/core/built/admin/assets/{use-simple-pagination-D5rL3YwO.js → use-simple-pagination-DsEGSJhe.js} +1 -1
- package/core/built/admin/assets/{use-tinybird-query-DP2dMaq7.js → use-tinybird-query-Ci_DiPkX.js} +1 -1
- package/core/built/admin/assets/{use-tinybird-token-DrK_skPQ.js → use-tinybird-token-CsUwc722.js} +1 -1
- package/core/built/admin/assets/use-upgrade-route-B3_DUiuT.js +1 -0
- package/core/built/admin/assets/{use-url-input-ChrUZBFf.js → use-url-input-BEZJpVgN.js} +2 -2
- package/core/built/admin/assets/user-detail-modal-595z1N5r.js +1 -0
- package/core/built/admin/assets/{users-B6hIds6n.js → users-DmGMPfw7.js} +1 -1
- package/core/built/admin/assets/virtual-list-D5ugXyZY.js +1 -0
- package/core/built/admin/assets/{web-D71mjB2r.js → web-CAta3lRE.js} +1 -1
- package/core/built/admin/assets/web-Ds9_wWJK.js +2 -0
- package/core/built/admin/assets/zapier-modal-CcfDZY53.js +1 -0
- package/core/built/admin/index.html +12 -12
- package/core/frontend/apps/private-blogging/lib/middleware.js +5 -58
- package/core/frontend/helpers/ghost_head.js +52 -0
- package/core/frontend/meta/asset-url.js +20 -9
- package/core/frontend/public/cards.manifest.json +1 -0
- package/core/frontend/public/ghost-stats.min.js +1 -1
- package/core/frontend/services/assets-minification/card-assets.js +121 -46
- package/core/frontend/services/assets-minification/index.js +13 -4
- package/core/frontend/services/data/fetch-data.js +7 -14
- package/core/frontend/services/llms/service.js +27 -6
- package/core/frontend/services/proxy.js +1 -0
- package/core/frontend/services/routing/api-adapter.js +11 -5
- package/core/frontend/services/routing/collection-router.js +1 -2
- package/core/frontend/services/routing/controllers/entry/markdown.js +63 -5
- package/core/frontend/services/routing/controllers/entry.js +1 -1
- package/core/frontend/services/routing/controllers/previews.js +0 -3
- package/core/frontend/services/routing/events.js +2 -1
- package/core/frontend/services/routing/parent-router.js +0 -22
- package/core/frontend/services/routing/router-manager.js +2 -2
- package/core/frontend/services/routing/static-pages-router.js +0 -1
- package/core/frontend/services/sitemap/handler.js +3 -4
- package/core/frontend/services/sitemap/site-map-manager.js +1 -2
- package/core/frontend/services/theme-engine/i18n/i18n.js +0 -33
- package/core/frontend/web/middleware/llms-discovery.js +2 -2
- package/core/frontend/web/routers/serve-public-file.js +33 -3
- package/core/frontend/web/site.js +5 -4
- package/core/server/adapters/jobs/InMemoryJobsBackend.js +113 -0
- package/core/server/adapters/redirects/S3RedirectsStore.js +33 -13
- package/core/server/adapters/route-settings/S3RouteSettingsStore.js +33 -13
- package/core/server/adapters/scheduling/scheduling-default.js +6 -7
- package/core/server/adapters/storage/LocalStorageBase.js +1 -3
- package/core/server/api/endpoints/index.js +0 -4
- package/core/server/api/endpoints/member-custom-fields.js +15 -4
- package/core/server/api/endpoints/pages.js +3 -11
- package/core/server/api/endpoints/posts.js +3 -11
- package/core/server/api/endpoints/utils/api-filter-utils.js +15 -1
- package/core/server/api/endpoints/utils/serializers/input/settings.js +4 -0
- package/core/server/api/endpoints/utils/serializers/output/index.js +0 -4
- package/core/server/api/endpoints/utils/serializers/output/mappers/email-batches.js +1 -1
- package/core/server/api/endpoints/utils/serializers/output/mappers/snippets.js +0 -1
- package/core/server/api/endpoints/utils/serializers/output/member-custom-fields.js +1 -0
- package/core/server/data/exporter/table-lists.js +4 -1
- package/core/server/data/migrations/utils/schema.js +5 -3
- package/core/server/data/migrations/versions/6.57/2026-08-04-18-00-00-store-custom-field-values-as-leaf-rows.js +19 -7
- package/core/server/data/migrations/versions/6.58/2026-08-10-08-20-50-add-machine-payments-settings.js +41 -0
- package/core/server/data/migrations/versions/6.58/2026-08-10-08-21-00-add-machine-payment-events-table.js +18 -0
- package/core/server/data/migrations/versions/6.58/2026-08-10-15-24-09-reset-custom-field-definitions-for-underscored-keys.js +66 -0
- package/core/server/data/migrations/versions/6.58/2026-08-11-10-00-00-swap-custom-field-values-to-key-fk.js +65 -0
- package/core/server/data/migrations/versions/6.58/2026-08-11-10-34-25-remove-legacy-explore-integration.js +131 -0
- package/core/server/data/migrations/versions/6.58/2026-08-11-16-00-00-add-sort-order-to-members-custom-fields.js +13 -0
- package/core/server/data/migrations/versions/6.58/2026-08-11-21-22-48-rename-email-batches-provider-id.js +8 -0
- package/core/server/data/migrations/versions/6.58/2026-08-13-16-07-33-add-automation-runs-automation-id-created-at-index.js +28 -0
- package/core/server/data/schema/README.md +87 -0
- package/core/server/data/schema/commands.js +5 -2
- package/core/server/data/schema/default-settings/default-settings.json +27 -0
- package/core/server/data/schema/fixtures/fixtures.json +0 -21
- package/core/server/data/schema/schema.js +37 -9
- package/core/server/data/seeders/data-generator.js +3 -1
- package/core/server/data/seeders/importers/automation-action-edges-importer.js +38 -0
- package/core/server/data/seeders/importers/automation-action-revisions-importer.js +139 -0
- package/core/server/data/seeders/importers/automation-actions-importer.js +84 -0
- package/core/server/data/seeders/importers/automation-run-steps-importer.js +134 -0
- package/core/server/data/seeders/importers/automation-runs-importer.js +97 -0
- package/core/server/data/seeders/importers/automations-importer.js +78 -0
- package/core/server/data/seeders/importers/benefits-importer.js +1 -1
- package/core/server/data/seeders/importers/comment-reports-importer.js +5 -5
- package/core/server/data/seeders/importers/comments-importer.js +6 -6
- package/core/server/data/seeders/importers/email-batches-importer.js +9 -8
- package/core/server/data/seeders/importers/email-recipient-failures-importer.js +1 -1
- package/core/server/data/seeders/importers/email-recipients-importer.js +12 -12
- package/core/server/data/seeders/importers/emails-importer.js +7 -7
- package/core/server/data/seeders/importers/index.js +6 -0
- package/core/server/data/seeders/importers/labels-importer.js +4 -4
- package/core/server/data/seeders/importers/members-click-events-importer.js +4 -4
- package/core/server/data/seeders/importers/members-created-events-importer.js +5 -5
- package/core/server/data/seeders/importers/members-feedback-importer.js +7 -7
- package/core/server/data/seeders/importers/members-importer.js +5 -5
- package/core/server/data/seeders/importers/members-labels-importer.js +1 -1
- package/core/server/data/seeders/importers/members-login-events-importer.js +4 -4
- package/core/server/data/seeders/importers/members-newsletters-importer.js +1 -1
- package/core/server/data/seeders/importers/members-paid-subscription-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-products-importer.js +3 -3
- package/core/server/data/seeders/importers/members-status-events-importer.js +4 -4
- package/core/server/data/seeders/importers/members-stripe-customers-importer.js +3 -3
- package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +8 -8
- package/core/server/data/seeders/importers/members-subscribe-events-importer.js +3 -3
- package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +4 -4
- package/core/server/data/seeders/importers/newsletters-importer.js +1 -1
- package/core/server/data/seeders/importers/offer-redemptions-importer.js +6 -6
- package/core/server/data/seeders/importers/offers-importer.js +4 -4
- package/core/server/data/seeders/importers/posts-authors-importer.js +1 -1
- package/core/server/data/seeders/importers/posts-importer.js +5 -5
- package/core/server/data/seeders/importers/posts-products-importer.js +1 -1
- package/core/server/data/seeders/importers/posts-tags-importer.js +1 -1
- package/core/server/data/seeders/importers/products-benefits-importer.js +1 -1
- package/core/server/data/seeders/importers/products-importer.js +1 -1
- package/core/server/data/seeders/importers/recommendation-click-events-importer.js +1 -1
- package/core/server/data/seeders/importers/recommendation-subscribe-events-importer.js +1 -1
- package/core/server/data/seeders/importers/recommendations-importer.js +1 -1
- package/core/server/data/seeders/importers/redirects-importer.js +1 -1
- package/core/server/data/seeders/importers/roles-users-importer.js +1 -1
- package/core/server/data/seeders/importers/stripe-prices-importer.js +1 -1
- package/core/server/data/seeders/importers/stripe-products-importer.js +1 -1
- package/core/server/data/seeders/importers/table-importer.js +92 -91
- package/core/server/data/seeders/importers/tags-importer.js +3 -3
- package/core/server/data/seeders/importers/users-importer.js +3 -3
- package/core/server/data/seeders/importers/web-mentions-importer.js +3 -3
- package/core/server/data/seeders/utils/database-date.js +14 -18
- package/core/server/data/seeders/utils/json-importer.js +1 -1
- package/core/server/data/seeders/utils/random.js +8 -7
- package/core/server/data/seeders/utils/topological-sort.js +5 -3
- package/core/server/data/tinybird/ARCHITECTURE.md +1 -2
- package/core/server/models/base/plugins/crud.js +0 -5
- package/core/server/models/index.js +2 -0
- package/core/server/models/machine-payment-event.js +18 -0
- package/core/server/models/member.js +24 -0
- package/core/server/models/settings.js +32 -3
- package/core/server/models/user.js +1 -1
- package/core/server/services/README.md +30 -0
- package/core/server/services/activitypub/activity-pub-service.js +2 -3
- package/core/server/services/adapter-manager/base-classes.js +3 -1
- package/core/server/services/auth/passwordreset.js +47 -51
- package/core/server/services/automations/database-automations-repository.js +19 -3
- package/core/server/services/automations/poll.js +2 -8
- package/core/server/services/comments/comments-service.js +4 -16
- package/core/server/services/comments/index.js +1 -3
- package/core/server/services/email-analytics/email-analytics-service-wrapper.js +68 -119
- package/core/server/services/email-analytics/email-analytics-service.js +73 -229
- package/core/server/services/email-analytics/event-processing-result.js +0 -10
- package/core/server/services/email-analytics/fetch-mailgun-events.js +25 -0
- package/core/server/services/email-analytics/index.js +35 -67
- package/core/server/services/email-analytics/lib/queries.js +88 -51
- package/core/server/services/email-analytics/newsletter-email-analytics-batch-processor.js +4 -1
- package/core/server/services/email-service/batch-sending-service.js +1 -1
- package/core/server/services/email-service/email-event-processor.js +12 -12
- package/core/server/services/email-service/events/email-bounced-event.js +8 -46
- package/core/server/services/email-service/events/email-delivered-event.js +8 -36
- package/core/server/services/email-service/events/email-opened-event.js +8 -36
- package/core/server/services/email-service/events/email-temporary-bounced-event.js +8 -46
- package/core/server/services/email-service/events/email-unsubscribed-event.js +8 -31
- package/core/server/services/email-service/events/spam-complaint-event.js +8 -31
- package/core/server/services/email-service/newsletter-email-event-storage.js +8 -7
- package/core/server/services/email-service/sending-service.js +1 -1
- package/core/server/services/email-suppression-list/mailgun-email-suppression-list.js +2 -2
- package/core/server/services/email-suppression-list/service.js +1 -3
- package/core/server/services/explore-ping/explore-ping-service.js +1 -6
- package/core/server/services/explore-ping/index.js +0 -2
- package/core/server/services/gifts/index.js +109 -3
- package/core/server/services/gifts/jobs/clean-gifts-job.js +1 -1
- package/core/server/services/gifts/jobs/send-gift-reminders-job.js +1 -1
- package/core/server/services/jobs-service/index.js +36 -0
- package/core/server/services/jobs-service/job.js +6 -0
- package/core/server/services/jobs-service/jobs-service.js +91 -0
- package/core/server/services/jobs-service/register-job-handlers.js +6 -0
- package/core/server/services/lib/mailgun-client.js +1 -1
- package/core/server/services/machine-payments/README.md +23 -0
- package/core/server/services/machine-payments/adapters/mpp-adapter.js +195 -0
- package/core/server/services/machine-payments/content-loader.js +89 -0
- package/core/server/services/machine-payments/eligibility.js +6 -0
- package/core/server/services/machine-payments/events/machine-payment-event-repository.js +58 -0
- package/core/server/services/machine-payments/events/machine-payment-event.js +46 -0
- package/core/server/services/machine-payments/index.js +87 -0
- package/core/server/services/machine-payments/pricing.js +54 -0
- package/core/server/services/machine-payments/service.js +275 -0
- package/core/server/services/machine-payments/stripe/deposit-address-store.js +157 -0
- package/core/server/services/machine-payments/stripe/payment-recorder.js +85 -0
- package/core/server/services/machine-payments/stripe/stripe-client-options.js +25 -0
- package/core/server/services/machine-payments/types.js +2 -0
- package/core/server/services/members/import-export/csv/parse.js +9 -1
- package/core/server/services/members/import-export/import/completion-email.js +61 -27
- package/core/server/services/members/import-export/import/email-template.js +28 -15
- package/core/server/services/members/import-export/import/importer.js +99 -51
- package/core/server/services/members/import-export/import/spool.js +1 -1
- package/core/server/services/members/import-export/index.js +24 -1
- package/core/server/services/members/members-api/services/member-bread-service.js +2 -2
- package/core/server/services/members/members-config-provider.js +12 -2
- package/core/server/services/members-custom-fields/actions.js +2 -1
- package/core/server/services/members-custom-fields/definitions-service.js +109 -27
- package/core/server/services/members-custom-fields/filter.js +199 -0
- package/core/server/services/members-custom-fields/key.js +37 -0
- package/core/server/services/members-custom-fields/queries.js +15 -0
- package/core/server/services/members-custom-fields/schema.js +1 -1
- package/core/server/services/members-custom-fields/values-service.js +18 -14
- package/core/server/services/members-events/last-seen-at-updater.js +1 -1
- package/core/server/services/oembed/oembed-service.js +8 -2
- package/core/server/services/permissions/can-this.js +4 -1
- package/core/server/services/posts/posts-service.js +18 -16
- package/core/server/services/public-config/config.js +1 -1
- package/core/server/services/route-settings/dynamic-routing-service.js +2 -0
- package/core/server/services/settings-helpers/settings-helpers.js +0 -1
- package/core/server/services/stats/posts-stats-service.js +0 -2
- package/core/server/services/stripe/stripe-api.js +2 -9
- package/core/server/web/api/endpoints/admin/middleware.js +0 -1
- package/core/server/web/api/endpoints/admin/routes.js +2 -3
- package/core/server/web/comments/routes.js +31 -8
- package/core/shared/config/defaults.json +17 -2
- package/core/shared/config/loader.js +11 -2
- package/core/shared/config/overrides.json +2 -0
- package/core/shared/config/secrets.js +71 -0
- package/core/shared/labs.js +4 -13
- package/core/shared/machine-payments.js +30 -0
- package/core/shared/private-site-access/index.js +68 -0
- package/package.json +48 -43
- package/pnpm-lock.yaml +1412 -1583
- package/pnpm-workspace.yaml +85 -48
- package/bin/validate-adapters.ts +0 -87
- package/components/tryghost-adapter-base-scheduling-0.2.1.tgz +0 -0
- package/components/tryghost-adapter-base-sso-0.1.1.tgz +0 -0
- package/components/tryghost-kg-card-factory-5.2.3.tgz +0 -0
- package/components/tryghost-kg-clean-basic-html-4.3.3.tgz +0 -0
- package/components/tryghost-kg-converters-1.2.4.tgz +0 -0
- package/components/tryghost-kg-default-cards-10.3.4.tgz +0 -0
- package/components/tryghost-kg-default-nodes-2.1.5.tgz +0 -0
- package/components/tryghost-kg-default-transforms-1.3.3.tgz +0 -0
- package/components/tryghost-kg-html-to-lexical-1.3.3.tgz +0 -0
- package/components/tryghost-kg-lexical-html-renderer-1.4.3.tgz +0 -0
- package/components/tryghost-kg-markdown-html-renderer-7.2.3.tgz +0 -0
- package/components/tryghost-kg-utils-1.1.3.tgz +0 -0
- package/content/themes/casper/assets/built/casper.js.map +0 -1
- package/content/themes/casper/assets/built/global.css.map +0 -1
- package/content/themes/casper/assets/built/screen.css.map +0 -1
- package/content/themes/source/assets/built/screen.css.map +0 -1
- package/content/themes/source/assets/built/source.js.map +0 -1
- package/core/built/admin/assets/activitypub/layout-DM_3pqsU.js +0 -1
- package/core/built/admin/assets/add-integration-modal-DU9ghGLS.js +0 -1
- package/core/built/admin/assets/add-newsletter-modal-DFxuQrYu.js +0 -1
- package/core/built/admin/assets/announcement-bar-modal-DGCcezB6.js +0 -1
- package/core/built/admin/assets/card-aUHX0hyR.js +0 -1
- package/core/built/admin/assets/chunk.524.dce1c51e0bc30fb2718e.js +0 -25
- package/core/built/admin/assets/chunk.582.3a430d5c6a744fd475b6.js +0 -27
- package/core/built/admin/assets/code-editor-view-BcyKABrG.js +0 -1
- package/core/built/admin/assets/color-picker-field-8NoSnhNI.js +0 -1
- package/core/built/admin/assets/command-BOYMbZa_.js +0 -1
- package/core/built/admin/assets/comments-BhNM5CYl.js +0 -1
- package/core/built/admin/assets/confirmation-modal-CYD7x3UQ.js +0 -1
- package/core/built/admin/assets/custom-integration-modal-bk3lNEuQ.js +0 -1
- package/core/built/admin/assets/design-and-theme-modal-B2xYKS1I.js +0 -23
- package/core/built/admin/assets/dist-Bg8bSvLA.js +0 -6
- package/core/built/admin/assets/dist-BnFdlebk.js +0 -11
- package/core/built/admin/assets/dist-CsvXCJSe.js +0 -23
- package/core/built/admin/assets/editor-BBKrunMK.js +0 -8
- package/core/built/admin/assets/filters-Bz0HsRie.js +0 -1
- package/core/built/admin/assets/framework-provider-CmtnPXIT.js +0 -4
- package/core/built/admin/assets/index-DUXM0NlS.js +0 -67
- package/core/built/admin/assets/index-Ds2iUoF6.css +0 -1
- package/core/built/admin/assets/label-picker-Bnlru5tO.js +0 -1
- package/core/built/admin/assets/layout-yR9rlvEw.js +0 -1
- package/core/built/admin/assets/limit-modal-COmLevuY.js +0 -1
- package/core/built/admin/assets/limit-service-9fwD33lU.js +0 -20
- package/core/built/admin/assets/member-custom-fields-BvFKEpxJ.js +0 -1
- package/core/built/admin/assets/member-detail-CWdPAe3p.js +0 -1
- package/core/built/admin/assets/members-Bnt0ih2R.js +0 -11
- package/core/built/admin/assets/newsletter-DR49NyGS.js +0 -1
- package/core/built/admin/assets/newsletter-detail-modal-B45pL1pb.js +0 -1
- package/core/built/admin/assets/newsletters-DGs5BaKH.js +0 -1
- package/core/built/admin/assets/nql-lang-B7faUf8D.js +0 -19
- package/core/built/admin/assets/offers-container-modal-B0hFS8nk.js +0 -1
- package/core/built/admin/assets/overview-B-ZPNqMo.js +0 -1
- package/core/built/admin/assets/overview-D96iwoJi.js +0 -1
- package/core/built/admin/assets/portal-modal-BLFdYeDH.js +0 -1
- package/core/built/admin/assets/post-analytics-header-DK27VjJm.js +0 -1
- package/core/built/admin/assets/preferences-CuWLISHa.js +0 -5
- package/core/built/admin/assets/profile-BsKYYtuL.js +0 -1
- package/core/built/admin/assets/settings-B4vM-rgV.js +0 -4
- package/core/built/admin/assets/stripe-connect-modal-CYDDrSJm.js +0 -1
- package/core/built/admin/assets/tag-detail-CmqiC32L.js +0 -1
- package/core/built/admin/assets/tier-detail-modal-BZmAsIy4.js +0 -1
- package/core/built/admin/assets/transistor-modal-CBPDqEGy.js +0 -1
- package/core/built/admin/assets/use-check-theme-limit-error-B14lZukR.js +0 -2
- package/core/built/admin/assets/use-feature-flag-BmJoc5WN.js +0 -1
- package/core/built/admin/assets/use-filter-params-ChoV72Hw.js +0 -1
- package/core/built/admin/assets/use-limiter-Dwg8ivgQ.js +0 -2
- package/core/built/admin/assets/user-detail-modal-XODpOqNC.js +0 -1
- package/core/built/admin/assets/virtual-list-Dnoafqbk.js +0 -1
- package/core/built/admin/assets/web-z71lA1Y3.js +0 -2
- package/core/built/admin/assets/zapier-modal-Bp507Um7.js +0 -1
- package/core/frontend/meta/og-type.ts +0 -13
- package/core/frontend/services/routing/api-adapter.ts +0 -157
- package/core/frontend/services/routing/config.ts +0 -59
- package/core/frontend/services/routing/controllers/entry/canonical-url.ts +0 -14
- package/core/frontend/services/routing/controllers/entry/gift-links.ts +0 -56
- package/core/frontend/services/routing/controllers/entry/markdown.ts +0 -72
- package/core/frontend/services/routing/controllers/entry.ts +0 -120
- package/core/frontend/services/routing/controllers/rss.ts +0 -66
- package/core/frontend/services/routing/permalink-adapter.ts +0 -10
- package/core/frontend/src/utils/privacy.ts +0 -66
- package/core/server/adapters/redirects/FileStore.ts +0 -113
- package/core/server/adapters/redirects/S3RedirectsStore.ts +0 -185
- package/core/server/adapters/route-settings/FileStore.ts +0 -144
- package/core/server/adapters/route-settings/S3RouteSettingsStore.ts +0 -199
- package/core/server/adapters/route-settings/utils.ts +0 -17
- package/core/server/adapters/scheduling/deps.d.ts +0 -1
- package/core/server/adapters/scheduling/error-capture.ts +0 -91
- package/core/server/adapters/scheduling/scheduling-default.ts +0 -248
- package/core/server/adapters/scheduling/utils.ts +0 -36
- package/core/server/adapters/sso/DefaultSSOAdapter.ts +0 -15
- package/core/server/adapters/storage/LocalFilesStorage.ts +0 -24
- package/core/server/adapters/storage/LocalImagesStorage.ts +0 -24
- package/core/server/adapters/storage/LocalMediaStorage.ts +0 -24
- package/core/server/adapters/storage/LocalStorageBase.ts +0 -342
- package/core/server/adapters/storage/S3Storage.ts +0 -506
- package/core/server/adapters/storage/utils.ts +0 -60
- package/core/server/api/endpoints/automation-action-links.ts +0 -46
- package/core/server/api/endpoints/explore.js +0 -18
- package/core/server/api/endpoints/gift-links.ts +0 -87
- package/core/server/api/endpoints/libraries.d.ts +0 -2
- package/core/server/api/endpoints/member-commenting.ts +0 -92
- package/core/server/api/endpoints/member-custom-fields.ts +0 -106
- package/core/server/api/endpoints/utils/api-filter-utils.ts +0 -22
- package/core/server/api/endpoints/utils/gift-link-access.ts +0 -82
- package/core/server/api/endpoints/utils/public-cache-keys.ts +0 -47
- package/core/server/api/endpoints/utils/serializers/input/member-commenting.ts +0 -29
- package/core/server/api/endpoints/utils/serializers/output/explore.js +0 -11
- package/core/server/api/endpoints/utils/serializers/output/gift-links.ts +0 -21
- package/core/server/api/endpoints/utils/serializers/output/member-commenting.ts +0 -8
- package/core/server/api/endpoints/utils/serializers/output/member-custom-fields.ts +0 -25
- package/core/server/api/endpoints/utils/serializers/output/members.d.ts +0 -20
- package/core/server/api/endpoints/utils/serializers/output/posts-csv-transform.ts +0 -46
- package/core/server/api/endpoints/utils/serializers/output/stream-csv-response.ts +0 -47
- package/core/server/api/endpoints/utils/validate-email-sender-fields.ts +0 -42
- package/core/server/data/importer/email-template.ts +0 -213
- package/core/server/data/seeders/utils/topological-sort.ts +0 -48
- package/core/server/lib/auto-filling-map.ts +0 -23
- package/core/server/lib/bootstrap-socket.ts +0 -114
- package/core/server/lib/case-keys.ts +0 -30
- package/core/server/lib/common/to-plain.ts +0 -25
- package/core/server/lib/db-date.ts +0 -8
- package/core/server/lib/get-inbox-links.ts +0 -276
- package/core/server/lib/post-revisions.ts +0 -152
- package/core/server/lib/soonest-timer.ts +0 -57
- package/core/server/models/base/plugins/bulk-filters.ts +0 -35
- package/core/server/models/role-utils.ts +0 -56
- package/core/server/services/activitypub/activity-pub-service.ts +0 -216
- package/core/server/services/adapter-manager/adapter-manager.ts +0 -253
- package/core/server/services/adapter-manager/adapter-paths.ts +0 -26
- package/core/server/services/adapter-manager/base-classes.ts +0 -22
- package/core/server/services/adapter-manager/index.ts +0 -16
- package/core/server/services/adapter-manager/types.ts +0 -45
- package/core/server/services/adapter-manager/utils.ts +0 -308
- package/core/server/services/auth/reset-authentication.ts +0 -72
- package/core/server/services/automations/automations-api.ts +0 -396
- package/core/server/services/automations/automations-repository.ts +0 -218
- package/core/server/services/automations/constants.ts +0 -4
- package/core/server/services/automations/database-automations-repository.ts +0 -1513
- package/core/server/services/automations/database-date.ts +0 -26
- package/core/server/services/automations/fake-wait-hours-multiplier.ts +0 -12
- package/core/server/services/automations/get-scheduler-idempotency-key.ts +0 -8
- package/core/server/services/automations/mailgun-message-id.ts +0 -27
- package/core/server/services/automations/poll.ts +0 -325
- package/core/server/services/automations/scheduler-poll-time.ts +0 -38
- package/core/server/services/automations/service.ts +0 -131
- package/core/server/services/automations/stale-lock-cutoff.ts +0 -5
- package/core/server/services/comments/email-templates/new-comment-reply.txt.ts +0 -25
- package/core/server/services/comments/email-templates/new-comment.txt.ts +0 -25
- package/core/server/services/comments/email-templates/report.txt.ts +0 -34
- package/core/server/services/custom-redirects/redirect-config-parser.ts +0 -148
- package/core/server/services/custom-redirects/redirects-service.ts +0 -181
- package/core/server/services/custom-redirects/utils.ts +0 -7
- package/core/server/services/donations/donation-bookshelf-repository.ts +0 -63
- package/core/server/services/donations/donation-payment-event.ts +0 -51
- package/core/server/services/email-address/email-address-parser.d.ts +0 -12
- package/core/server/services/email-address/email-address-service.ts +0 -241
- package/core/server/services/email-analytics/automation-email-analytics-batch-processor.ts +0 -130
- package/core/server/services/email-analytics/batch-event-processor.ts +0 -18
- package/core/server/services/email-analytics/email-analytics-provider-mailgun.js +0 -57
- package/core/server/services/email-analytics/event-processing-result.ts +0 -66
- package/core/server/services/email-analytics/events/start-automation-email-analytics-job-event.ts +0 -14
- package/core/server/services/email-analytics/events/start-email-analytics-job-event.ts +0 -15
- package/core/server/services/email-analytics/index.ts +0 -109
- package/core/server/services/email-analytics/jobs/email-analytics-job-scheduler.ts +0 -126
- package/core/server/services/email-analytics/lib/queries.ts +0 -341
- package/core/server/services/email-service/domain-warming-service.ts +0 -91
- package/core/server/services/explore/explore-service.js +0 -59
- package/core/server/services/explore/index.js +0 -18
- package/core/server/services/explore-ping/explore-ping-service.ts +0 -198
- package/core/server/services/explore-ping/index.ts +0 -42
- package/core/server/services/files/file-type-utils.ts +0 -56
- package/core/server/services/gift-links/actions.ts +0 -51
- package/core/server/services/gift-links/codec.ts +0 -16
- package/core/server/services/gift-links/index.ts +0 -20
- package/core/server/services/gift-links/models.ts +0 -22
- package/core/server/services/gift-links/schema.ts +0 -33
- package/core/server/services/gift-links/serializers.ts +0 -20
- package/core/server/services/gift-links/service.ts +0 -95
- package/core/server/services/gifts/constants.ts +0 -3
- package/core/server/services/gifts/email-templates/gift-purchase-confirmation.ts +0 -43
- package/core/server/services/gifts/email-templates/gift-reminder.ts +0 -50
- package/core/server/services/gifts/gift-bookshelf-repository.ts +0 -366
- package/core/server/services/gifts/gift-checkout-offer.ts +0 -127
- package/core/server/services/gifts/gift-codec.ts +0 -62
- package/core/server/services/gifts/gift-controller.ts +0 -51
- package/core/server/services/gifts/gift-email-renderer.ts +0 -97
- package/core/server/services/gifts/gift-email-service.ts +0 -158
- package/core/server/services/gifts/gift-reminder-scheduler.ts +0 -107
- package/core/server/services/gifts/gift-schema.ts +0 -39
- package/core/server/services/gifts/gift-service-wrapper.js +0 -142
- package/core/server/services/gifts/gift-service.ts +0 -1034
- package/core/server/services/gifts/gift.ts +0 -234
- package/core/server/services/identity-tokens/identity-token-service.ts +0 -36
- package/core/server/services/indexnow-ping/constants.ts +0 -32
- package/core/server/services/indexnow-ping/index.ts +0 -35
- package/core/server/services/indexnow-ping/indexnow-ping-service.ts +0 -311
- package/core/server/services/internal-keys/index.ts +0 -53
- package/core/server/services/lib/dynamic-redirect-manager.d.ts +0 -20
- package/core/server/services/lib/in-memory-repository.ts +0 -78
- package/core/server/services/lib/member-signup-contexts.ts +0 -22
- package/core/server/services/link-redirection/link-redirect.ts +0 -24
- package/core/server/services/member-welcome-emails/constants.ts +0 -35
- package/core/server/services/members/commenting/index.ts +0 -2
- package/core/server/services/members/commenting/member-commenting-codec.ts +0 -73
- package/core/server/services/members/commenting/member-commenting.ts +0 -69
- package/core/server/services/members/create-paid-member-shim.ts +0 -40
- package/core/server/services/members/import-export/config.ts +0 -34
- package/core/server/services/members/import-export/csv/formula.ts +0 -14
- package/core/server/services/members/import-export/csv/index.ts +0 -3
- package/core/server/services/members/import-export/csv/parse.ts +0 -69
- package/core/server/services/members/import-export/csv/serialize.ts +0 -18
- package/core/server/services/members/import-export/export/exporter.ts +0 -325
- package/core/server/services/members/import-export/import/completion-email.ts +0 -146
- package/core/server/services/members/import-export/import/importer.ts +0 -489
- package/core/server/services/members/import-export/import/reader.ts +0 -33
- package/core/server/services/members/import-export/import/row.ts +0 -56
- package/core/server/services/members/import-export/import/spool.ts +0 -38
- package/core/server/services/members/import-export/index.ts +0 -143
- package/core/server/services/members/index.d.ts +0 -32
- package/core/server/services/members-custom-fields/actions.ts +0 -62
- package/core/server/services/members-custom-fields/codec.ts +0 -13
- package/core/server/services/members-custom-fields/config.ts +0 -38
- package/core/server/services/members-custom-fields/definitions-service.ts +0 -413
- package/core/server/services/members-custom-fields/index.ts +0 -50
- package/core/server/services/members-custom-fields/models.ts +0 -15
- package/core/server/services/members-custom-fields/queries.ts +0 -13
- package/core/server/services/members-custom-fields/schema.ts +0 -71
- package/core/server/services/members-custom-fields/serializers.ts +0 -22
- package/core/server/services/members-custom-fields/storage.ts +0 -122
- package/core/server/services/members-custom-fields/values-service.ts +0 -269
- package/core/server/services/notifications/notification-email.ts +0 -66
- package/core/server/services/notifications/sanitize-email-html.ts +0 -35
- package/core/server/services/post-scheduling/index.ts +0 -13
- package/core/server/services/post-scheduling/post-scheduling.ts +0 -133
- package/core/server/services/recommendations/service/bookshelf-click-event-repository.ts +0 -49
- package/core/server/services/recommendations/service/bookshelf-recommendation-repository.ts +0 -117
- package/core/server/services/recommendations/service/bookshelf-repository.ts +0 -192
- package/core/server/services/recommendations/service/bookshelf-subscribe-event-repository.ts +0 -49
- package/core/server/services/recommendations/service/click-event.ts +0 -32
- package/core/server/services/recommendations/service/in-memory-recommendation-repository.ts +0 -20
- package/core/server/services/recommendations/service/incoming-recommendation-controller.ts +0 -51
- package/core/server/services/recommendations/service/incoming-recommendation-email-renderer.ts +0 -37
- package/core/server/services/recommendations/service/incoming-recommendation-service.ts +0 -159
- package/core/server/services/recommendations/service/index.ts +0 -15
- package/core/server/services/recommendations/service/libraries.d.ts +0 -2
- package/core/server/services/recommendations/service/recommendation-controller.ts +0 -257
- package/core/server/services/recommendations/service/recommendation-metadata-service.ts +0 -132
- package/core/server/services/recommendations/service/recommendation-repository.ts +0 -13
- package/core/server/services/recommendations/service/recommendation-service.ts +0 -285
- package/core/server/services/recommendations/service/recommendation.ts +0 -200
- package/core/server/services/recommendations/service/subscribe-event.ts +0 -32
- package/core/server/services/recommendations/service/unsafe-data.ts +0 -217
- package/core/server/services/recommendations/service/well-known-service.ts +0 -47
- package/core/server/services/remote-flags/index.ts +0 -101
- package/core/server/services/remote-flags/remote-flags-service.ts +0 -236
- package/core/server/services/remote-flags/resolve.ts +0 -108
- package/core/server/services/route-settings/route-settings-parser.ts +0 -455
- package/core/server/services/route-settings/validation-errors.ts +0 -271
- package/core/server/services/route-settings/yaml-parser.d.ts +0 -4
- package/core/server/services/slack-ping/constants.ts +0 -15
- package/core/server/services/slack-ping/index.ts +0 -35
- package/core/server/services/slack-ping/slack-ping-service.ts +0 -295
- package/core/server/services/staff/email-templates/donation.txt.ts +0 -26
- package/core/server/services/staff/email-templates/gift.txt.ts +0 -27
- package/core/server/services/staff/email-templates/new-free-signup.txt.ts +0 -15
- package/core/server/services/staff/email-templates/new-gift-subscription.txt.ts +0 -26
- package/core/server/services/staff/email-templates/new-milestone-received.txt.ts +0 -20
- package/core/server/services/staff/email-templates/new-paid-cancellation.txt.ts +0 -15
- package/core/server/services/staff/email-templates/new-paid-started.txt.ts +0 -15
- package/core/server/services/staff/email-templates/recommendation-received.txt.ts +0 -23
- package/core/server/services/staff/email-templates/types.ts +0 -13
- package/core/server/services/url/lazy-find-resource.ts +0 -104
- package/core/server/services/url/lazy-url-service.ts +0 -647
- package/core/server/services/url/permalink-matcher.ts +0 -119
- package/core/server/services/url/router-filter.ts +0 -80
- package/core/server/services/verification/verification-webhook-service.ts +0 -137
- package/core/shared/config/helpers.ts +0 -133
- package/core/shared/config/index.ts +0 -12
- package/core/shared/config/loader.ts +0 -87
- package/core/shared/config/utils.ts +0 -104
- package/core/shared/errify.ts +0 -31
- package/core/shared/events-ts/index.ts +0 -8
- package/core/shared/events-ts/post-deleted-event.ts +0 -15
- package/core/shared/events-ts/posts-bulk-add-tags-event.ts +0 -13
- package/core/shared/events-ts/posts-bulk-destroyed-event.ts +0 -13
- package/core/shared/events-ts/posts-bulk-featured-event.ts +0 -13
- package/core/shared/events-ts/posts-bulk-unfeatured-event.ts +0 -13
- package/core/shared/events-ts/posts-bulk-unpublished-event.ts +0 -13
- package/core/shared/events-ts/posts-bulk-unscheduled-event.ts +0 -13
- package/core/shared/labs-flag-overrides.ts +0 -35
- package/core/shared/one-at-a-time.ts +0 -47
- package/core/shared/url-utils.ts +0 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var g={countries:{AD:"Andorra",AE:"United Arab Emirates",AF:"Afghanistan",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Albania",AM:"Armenia",AO:"Angola",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Austria",AU:"Australia",AW:"Aruba",AX:"\xC5land Islands",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BB:"Barbados",BD:"Bangladesh",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BL:"Saint Barth\xE9lemy",BM:"Bermuda",BN:"Brunei",BO:"Bolivia",BQ:"Caribbean Netherlands",BR:"Brazil",BS:"Bahamas",BT:"Bhutan",BW:"Botswana",BY:"Belarus",BZ:"Belize",CA:"Canada",CC:"Cocos Islands",CD:"Democratic Republic of the Congo",CF:"Central African Republic",CG:"Republic of the Congo",CH:"Switzerland",CI:"Ivory Coast",CK:"Cook Islands",CL:"Chile",CM:"Cameroon",CN:"China",CO:"Colombia",CR:"Costa Rica",CU:"Cuba",CV:"Cabo Verde",CW:"Cura\xE7ao",CX:"Christmas Island",CY:"Cyprus",CZ:"Czechia",DE:"Germany",DJ:"Djibouti",DK:"Denmark",DM:"Dominica",DO:"Dominican Republic",DZ:"Algeria",EC:"Ecuador",EE:"Estonia",EG:"Egypt",EH:"Western Sahara",ER:"Eritrea",ES:"Spain",ET:"Ethiopia",FI:"Finland",FJ:"Fiji",FK:"Falkland Islands",FM:"Micronesia",FO:"Faroe Islands",FR:"France",GA:"Gabon",GB:"United Kingdom",GD:"Grenada",GE:"Georgia",GF:"French Guiana",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Greenland",GM:"Gambia",GN:"Guinea",GP:"Guadeloupe",GQ:"Equatorial Guinea",GR:"Greece",GS:"South Georgia and the South Sandwich Islands",GT:"Guatemala",GU:"Guam",GW:"Guinea-Bissau",GY:"Guyana",HK:"Hong Kong",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Croatia",HT:"Haiti",HU:"Hungary",ID:"Indonesia",IE:"Ireland",IL:"Israel",IM:"Isle of Man",IN:"India",IO:"British Indian Ocean Territory",IQ:"Iraq",IR:"Iran",IS:"Iceland",IT:"Italy",JE:"Jersey",JM:"Jamaica",JO:"Jordan",JP:"Japan",KE:"Kenya",KG:"Kyrgyzstan",KH:"Cambodia",KI:"Kiribati",KM:"Comoros",KN:"Saint Kitts and Nevis",KP:"North Korea",KR:"South Korea",KW:"Kuwait",KY:"Cayman Islands",KZ:"Kazakhstan",LA:"Laos",LB:"Lebanon",LC:"Saint Lucia",LI:"Liechtenstein",LK:"Sri Lanka",LR:"Liberia",LS:"Lesotho",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",LY:"Libya",MA:"Morocco",MC:"Monaco",MD:"Moldova",ME:"Montenegro",MF:"Saint Martin",MG:"Madagascar",MH:"Marshall Islands",MK:"North Macedonia",ML:"Mali",MM:"Myanmar",MN:"Mongolia",MO:"Macao",MP:"Northern Mariana Islands",MQ:"Martinique",MR:"Mauritania",MS:"Montserrat",MT:"Malta",MU:"Mauritius",MV:"Maldives",MW:"Malawi",MX:"Mexico",MY:"Malaysia",MZ:"Mozambique",NA:"Namibia",NC:"New Caledonia",NE:"Niger",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Netherlands",NO:"Norway",NP:"Nepal",NR:"Nauru",NU:"Niue",NZ:"New Zealand",OM:"Oman",PA:"Panama",PE:"Peru",PF:"French Polynesia",PG:"Papua New Guinea",PH:"Philippines",PK:"Pakistan",PL:"Poland",PM:"Saint Pierre and Miquelon",PN:"Pitcairn",PR:"Puerto Rico",PS:"Palestine",PT:"Portugal",PW:"Palau",PY:"Paraguay",QA:"Qatar",RE:"R\xE9union",RO:"Romania",RS:"Serbia",RU:"Russia",RW:"Rwanda",SA:"Saudi Arabia",SB:"Solomon Islands",SC:"Seychelles",SD:"Sudan",SE:"Sweden",SG:"Singapore",SH:"Saint Helena, Ascension and Tristan da Cunha",SI:"Slovenia",SJ:"Svalbard and Jan Mayen",SK:"Slovakia",SL:"Sierra Leone",SM:"San Marino",SN:"Senegal",SO:"Somalia",SR:"Suriname",SS:"South Sudan",ST:"Sao Tome and Principe",SV:"El Salvador",SX:"Sint Maarten",SY:"Syria",SZ:"Eswatini",TC:"Turks and Caicos Islands",TD:"Chad",TF:"French Southern Territories",TG:"Togo",TH:"Thailand",TJ:"Tajikistan",TK:"Tokelau",TL:"Timor-Leste",TM:"Turkmenistan",TN:"Tunisia",TO:"Tonga",TR:"T\xFCrkiye",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"Taiwan",TZ:"Tanzania",UA:"Ukraine",UG:"Uganda",UM:"United States Minor Outlying Islands",US:"United States of America",UY:"Uruguay",UZ:"Uzbekistan",VA:"Holy See",VC:"Saint Vincent and the Grenadines",VE:"Venezuela",VG:"Virgin Islands (UK)",VI:"Virgin Islands (US)",VN:"Vietnam",VU:"Vanuatu",WF:"Wallis and Futuna",WS:"Samoa",YE:"Yemen",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe"},timezones:JSON.parse('{"Africa/Abidjan":{"u":0,"c":["CI","BF","GH","GM","GN","IS","ML","MR","SH","SL","SN","TG"]},"Africa/Accra":{"a":"Africa/Abidjan","c":["GH"],"r":1},"Africa/Addis_Ababa":{"a":"Africa/Nairobi","c":["ET"],"r":1},"Africa/Algiers":{"u":60,"c":["DZ"]},"Africa/Asmara":{"a":"Africa/Nairobi","c":["ER"],"r":1},"Africa/Asmera":{"a":"Africa/Nairobi","c":["ER"],"r":1},"Africa/Bamako":{"a":"Africa/Abidjan","c":["ML"],"r":1},"Africa/Bangui":{"a":"Africa/Lagos","c":["CF"],"r":1},"Africa/Banjul":{"a":"Africa/Abidjan","c":["GM"],"r":1},"Africa/Bissau":{"u":0,"c":["GW"]},"Africa/Blantyre":{"a":"Africa/Maputo","c":["MW"],"r":1},"Africa/Brazzaville":{"a":"Africa/Lagos","c":["CG"],"r":1},"Africa/Bujumbura":{"a":"Africa/Maputo","c":["BI"],"r":1},"Africa/Cairo":{"u":120,"d":180,"c":["EG"]},"Africa/Casablanca":{"u":60,"d":0,"c":["MA"]},"Africa/Ceuta":{"u":60,"d":120,"c":["ES"]},"Africa/Conakry":{"a":"Africa/Abidjan","c":["GN"],"r":1},"Africa/Dakar":{"a":"Africa/Abidjan","c":["SN"],"r":1},"Africa/Dar_es_Salaam":{"a":"Africa/Nairobi","c":["TZ"],"r":1},"Africa/Djibouti":{"a":"Africa/Nairobi","c":["DJ"],"r":1},"Africa/Douala":{"a":"Africa/Lagos","c":["CM"],"r":1},"Africa/El_Aaiun":{"u":60,"d":0,"c":["EH"]},"Africa/Freetown":{"a":"Africa/Abidjan","c":["SL"],"r":1},"Africa/Gaborone":{"a":"Africa/Maputo","c":["BW"],"r":1},"Africa/Harare":{"a":"Africa/Maputo","c":["ZW"],"r":1},"Africa/Johannesburg":{"u":120,"c":["ZA","LS","SZ"]},"Africa/Juba":{"u":120,"c":["SS"]},"Africa/Kampala":{"a":"Africa/Nairobi","c":["UG"],"r":1},"Africa/Khartoum":{"u":120,"c":["SD"]},"Africa/Kigali":{"a":"Africa/Maputo","c":["RW"],"r":1},"Africa/Kinshasa":{"a":"Africa/Lagos","c":["CD"],"r":1},"Africa/Lagos":{"u":60,"c":["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},"Africa/Libreville":{"a":"Africa/Lagos","c":["GA"],"r":1},"Africa/Lome":{"a":"Africa/Abidjan","c":["TG"],"r":1},"Africa/Luanda":{"a":"Africa/Lagos","c":["AO"],"r":1},"Africa/Lubumbashi":{"a":"Africa/Maputo","c":["CD"],"r":1},"Africa/Lusaka":{"a":"Africa/Maputo","c":["ZM"],"r":1},"Africa/Malabo":{"a":"Africa/Lagos","c":["GQ"],"r":1},"Africa/Maputo":{"u":120,"c":["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},"Africa/Maseru":{"a":"Africa/Johannesburg","c":["LS"],"r":1},"Africa/Mbabane":{"a":"Africa/Johannesburg","c":["SZ"],"r":1},"Africa/Mogadishu":{"a":"Africa/Nairobi","c":["SO"],"r":1},"Africa/Monrovia":{"u":0,"c":["LR"]},"Africa/Nairobi":{"u":180,"c":["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},"Africa/Ndjamena":{"u":60,"c":["TD"]},"Africa/Niamey":{"a":"Africa/Lagos","c":["NE"],"r":1},"Africa/Nouakchott":{"a":"Africa/Abidjan","c":["MR"],"r":1},"Africa/Ouagadougou":{"a":"Africa/Abidjan","c":["BF"],"r":1},"Africa/Porto-Novo":{"a":"Africa/Lagos","c":["BJ"],"r":1},"Africa/Sao_Tome":{"u":0,"c":["ST"]},"Africa/Timbuktu":{"a":"Africa/Abidjan","c":["ML"],"r":1},"Africa/Tripoli":{"u":120,"c":["LY"]},"Africa/Tunis":{"u":60,"c":["TN"]},"Africa/Windhoek":{"u":120,"c":["NA"]},"America/Adak":{"u":-600,"d":-540,"c":["US"]},"America/Anchorage":{"u":-540,"d":-480,"c":["US"]},"America/Anguilla":{"a":"America/Puerto_Rico","c":["AI"],"r":1},"America/Antigua":{"a":"America/Puerto_Rico","c":["AG"],"r":1},"America/Araguaina":{"u":-180,"c":["BR"]},"America/Argentina/Buenos_Aires":{"u":-180,"c":["AR"]},"America/Argentina/Catamarca":{"u":-180,"c":["AR"]},"America/Argentina/ComodRivadavia":{"a":"America/Argentina/Catamarca","r":1},"America/Argentina/Cordoba":{"u":-180,"c":["AR"]},"America/Argentina/Jujuy":{"u":-180,"c":["AR"]},"America/Argentina/La_Rioja":{"u":-180,"c":["AR"]},"America/Argentina/Mendoza":{"u":-180,"c":["AR"]},"America/Argentina/Rio_Gallegos":{"u":-180,"c":["AR"]},"America/Argentina/Salta":{"u":-180,"c":["AR"]},"America/Argentina/San_Juan":{"u":-180,"c":["AR"]},"America/Argentina/San_Luis":{"u":-180,"c":["AR"]},"America/Argentina/Tucuman":{"u":-180,"c":["AR"]},"America/Argentina/Ushuaia":{"u":-180,"c":["AR"]},"America/Aruba":{"a":"America/Puerto_Rico","c":["AW"],"r":1},"America/Asuncion":{"u":-180,"c":["PY"]},"America/Atikokan":{"a":"America/Panama","c":["CA"],"r":1},"America/Atka":{"a":"America/Adak","r":1},"America/Bahia":{"u":-180,"c":["BR"]},"America/Bahia_Banderas":{"u":-360,"c":["MX"]},"America/Barbados":{"u":-240,"c":["BB"]},"America/Belem":{"u":-180,"c":["BR"]},"America/Belize":{"u":-360,"c":["BZ"]},"America/Blanc-Sablon":{"a":"America/Puerto_Rico","c":["CA"],"r":1},"America/Boa_Vista":{"u":-240,"c":["BR"]},"America/Bogota":{"u":-300,"c":["CO"]},"America/Boise":{"u":-420,"d":-360,"c":["US"]},"America/Buenos_Aires":{"a":"America/Argentina/Buenos_Aires","r":1},"America/Cambridge_Bay":{"u":-420,"d":-360,"c":["CA"]},"America/Campo_Grande":{"u":-240,"c":["BR"]},"America/Cancun":{"u":-300,"c":["MX"]},"America/Caracas":{"u":-240,"c":["VE"]},"America/Catamarca":{"a":"America/Argentina/Catamarca","r":1},"America/Cayenne":{"u":-180,"c":["GF"]},"America/Cayman":{"a":"America/Panama","c":["KY"],"r":1},"America/Chicago":{"u":-360,"d":-300,"c":["US"]},"America/Chihuahua":{"u":-360,"c":["MX"]},"America/Ciudad_Juarez":{"u":-420,"d":-360,"c":["MX"]},"America/Coral_Harbour":{"a":"America/Panama","c":["CA"],"r":1},"America/Cordoba":{"a":"America/Argentina/Cordoba","r":1},"America/Costa_Rica":{"u":-360,"c":["CR"]},"America/Coyhaique":{"u":-180,"c":["CL"]},"America/Creston":{"a":"America/Phoenix","c":["CA"],"r":1},"America/Cuiaba":{"u":-240,"c":["BR"]},"America/Curacao":{"a":"America/Puerto_Rico","c":["CW"],"r":1},"America/Danmarkshavn":{"u":0,"c":["GL"]},"America/Dawson":{"u":-420,"c":["CA"]},"America/Dawson_Creek":{"u":-420,"c":["CA"]},"America/Denver":{"u":-420,"d":-360,"c":["US"]},"America/Detroit":{"u":-300,"d":-240,"c":["US"]},"America/Dominica":{"a":"America/Puerto_Rico","c":["DM"],"r":1},"America/Edmonton":{"u":-420,"d":-360,"c":["CA"]},"America/Eirunepe":{"u":-300,"c":["BR"]},"America/El_Salvador":{"u":-360,"c":["SV"]},"America/Ensenada":{"a":"America/Tijuana","r":1},"America/Fort_Nelson":{"u":-420,"c":["CA"]},"America/Fort_Wayne":{"a":"America/Indiana/Indianapolis","r":1},"America/Fortaleza":{"u":-180,"c":["BR"]},"America/Glace_Bay":{"u":-240,"d":-180,"c":["CA"]},"America/Godthab":{"a":"America/Nuuk","r":1},"America/Goose_Bay":{"u":-240,"d":-180,"c":["CA"]},"America/Grand_Turk":{"u":-300,"d":-240,"c":["TC"]},"America/Grenada":{"a":"America/Puerto_Rico","c":["GD"],"r":1},"America/Guadeloupe":{"a":"America/Puerto_Rico","c":["GP"],"r":1},"America/Guatemala":{"u":-360,"c":["GT"]},"America/Guayaquil":{"u":-300,"c":["EC"]},"America/Guyana":{"u":-240,"c":["GY"]},"America/Halifax":{"u":-240,"d":-180,"c":["CA"]},"America/Havana":{"u":-300,"d":-240,"c":["CU"]},"America/Hermosillo":{"u":-420,"c":["MX"]},"America/Indiana/Indianapolis":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Knox":{"u":-360,"d":-300,"c":["US"]},"America/Indiana/Marengo":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Petersburg":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Tell_City":{"u":-360,"d":-300,"c":["US"]},"America/Indiana/Vevay":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Vincennes":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Winamac":{"u":-300,"d":-240,"c":["US"]},"America/Indianapolis":{"a":"America/Indiana/Indianapolis","r":1},"America/Inuvik":{"u":-420,"d":-360,"c":["CA"]},"America/Iqaluit":{"u":-300,"d":-240,"c":["CA"]},"America/Jamaica":{"u":-300,"c":["JM"]},"America/Jujuy":{"a":"America/Argentina/Jujuy","r":1},"America/Juneau":{"u":-540,"d":-480,"c":["US"]},"America/Kentucky/Louisville":{"u":-300,"d":-240,"c":["US"]},"America/Kentucky/Monticello":{"u":-300,"d":-240,"c":["US"]},"America/Knox_IN":{"a":"America/Indiana/Knox","r":1},"America/Kralendijk":{"a":"America/Puerto_Rico","c":["BQ"],"r":1},"America/La_Paz":{"u":-240,"c":["BO"]},"America/Lima":{"u":-300,"c":["PE"]},"America/Los_Angeles":{"u":-480,"d":-420,"c":["US"]},"America/Louisville":{"a":"America/Kentucky/Louisville","r":1},"America/Lower_Princes":{"a":"America/Puerto_Rico","c":["SX"],"r":1},"America/Maceio":{"u":-180,"c":["BR"]},"America/Managua":{"u":-360,"c":["NI"]},"America/Manaus":{"u":-240,"c":["BR"]},"America/Marigot":{"a":"America/Puerto_Rico","c":["MF"],"r":1},"America/Martinique":{"u":-240,"c":["MQ"]},"America/Matamoros":{"u":-360,"d":-300,"c":["MX"]},"America/Mazatlan":{"u":-420,"c":["MX"]},"America/Mendoza":{"a":"America/Argentina/Mendoza","r":1},"America/Menominee":{"u":-360,"d":-300,"c":["US"]},"America/Merida":{"u":-360,"c":["MX"]},"America/Metlakatla":{"u":-540,"d":-480,"c":["US"]},"America/Mexico_City":{"u":-360,"c":["MX"]},"America/Miquelon":{"u":-180,"d":-120,"c":["PM"]},"America/Moncton":{"u":-240,"d":-180,"c":["CA"]},"America/Monterrey":{"u":-360,"c":["MX"]},"America/Montevideo":{"u":-180,"c":["UY"]},"America/Montreal":{"a":"America/Toronto","c":["CA"],"r":1},"America/Montserrat":{"a":"America/Puerto_Rico","c":["MS"],"r":1},"America/Nassau":{"a":"America/Toronto","c":["BS"],"r":1},"America/New_York":{"u":-300,"d":-240,"c":["US"]},"America/Nipigon":{"a":"America/Toronto","c":["CA"],"r":1},"America/Nome":{"u":-540,"d":-480,"c":["US"]},"America/Noronha":{"u":-120,"c":["BR"]},"America/North_Dakota/Beulah":{"u":-360,"d":-300,"c":["US"]},"America/North_Dakota/Center":{"u":-360,"d":-300,"c":["US"]},"America/North_Dakota/New_Salem":{"u":-360,"d":-300,"c":["US"]},"America/Nuuk":{"u":-120,"d":-60,"c":["GL"]},"America/Ojinaga":{"u":-360,"d":-300,"c":["MX"]},"America/Panama":{"u":-300,"c":["PA","CA","KY"]},"America/Pangnirtung":{"a":"America/Iqaluit","r":1},"America/Paramaribo":{"u":-180,"c":["SR"]},"America/Phoenix":{"u":-420,"c":["US","CA"]},"America/Port-au-Prince":{"u":-300,"d":-240,"c":["HT"]},"America/Port_of_Spain":{"a":"America/Puerto_Rico","c":["TT"],"r":1},"America/Porto_Acre":{"a":"America/Rio_Branco","r":1},"America/Porto_Velho":{"u":-240,"c":["BR"]},"America/Puerto_Rico":{"u":-240,"c":["PR","AG","CA","AI","AW","BL","BQ","CW","DM","GD","GP","KN","LC","MF","MS","SX","TT","VC","VG","VI"]},"America/Punta_Arenas":{"u":-180,"c":["CL"]},"America/Rainy_River":{"a":"America/Winnipeg","r":1},"America/Rankin_Inlet":{"u":-360,"d":-300,"c":["CA"]},"America/Recife":{"u":-180,"c":["BR"]},"America/Regina":{"u":-360,"c":["CA"]},"America/Resolute":{"u":-360,"d":-300,"c":["CA"]},"America/Rio_Branco":{"u":-300,"c":["BR"]},"America/Rosario":{"a":"America/Argentina/Cordoba","r":1},"America/Santa_Isabel":{"a":"America/Tijuana","r":1},"America/Santarem":{"u":-180,"c":["BR"]},"America/Santiago":{"u":-240,"d":-180,"c":["CL"]},"America/Santo_Domingo":{"u":-240,"c":["DO"]},"America/Sao_Paulo":{"u":-180,"c":["BR"]},"America/Scoresbysund":{"u":-120,"d":-60,"c":["GL"]},"America/Shiprock":{"a":"America/Denver","r":1},"America/Sitka":{"u":-540,"d":-480,"c":["US"]},"America/St_Barthelemy":{"a":"America/Puerto_Rico","c":["BL"],"r":1},"America/St_Johns":{"u":-210,"d":-150,"c":["CA"]},"America/St_Kitts":{"a":"America/Puerto_Rico","c":["KN"],"r":1},"America/St_Lucia":{"a":"America/Puerto_Rico","c":["LC"],"r":1},"America/St_Thomas":{"a":"America/Puerto_Rico","c":["VI"],"r":1},"America/St_Vincent":{"a":"America/Puerto_Rico","c":["VC"],"r":1},"America/Swift_Current":{"u":-360,"c":["CA"]},"America/Tegucigalpa":{"u":-360,"c":["HN"]},"America/Thule":{"u":-240,"d":-180,"c":["GL"]},"America/Thunder_Bay":{"a":"America/Toronto","c":["CA"],"r":1},"America/Tijuana":{"u":-480,"d":-420,"c":["MX"]},"America/Toronto":{"u":-300,"d":-240,"c":["CA","BS"]},"America/Tortola":{"a":"America/Puerto_Rico","c":["VG"],"r":1},"America/Vancouver":{"u":-480,"d":-420,"c":["CA"]},"America/Virgin":{"a":"America/Puerto_Rico","c":["VI"],"r":1},"America/Whitehorse":{"u":-420,"c":["CA"]},"America/Winnipeg":{"u":-360,"d":-300,"c":["CA"]},"America/Yakutat":{"u":-540,"d":-480,"c":["US"]},"America/Yellowknife":{"a":"America/Edmonton","r":1},"Antarctica/Casey":{"u":480,"c":["AQ"]},"Antarctica/Davis":{"u":420,"c":["AQ"]},"Antarctica/DumontDUrville":{"a":"Pacific/Port_Moresby","c":["AQ"],"r":1},"Antarctica/Macquarie":{"u":600,"d":660,"c":["AU"]},"Antarctica/Mawson":{"u":300,"c":["AQ"]},"Antarctica/McMurdo":{"a":"Pacific/Auckland","c":["AQ"],"r":1},"Antarctica/Palmer":{"u":-180,"c":["AQ"]},"Antarctica/Rothera":{"u":-180,"c":["AQ"]},"Antarctica/South_Pole":{"a":"Pacific/Auckland","c":["AQ"],"r":1},"Antarctica/Syowa":{"a":"Asia/Riyadh","c":["AQ"],"r":1},"Antarctica/Troll":{"u":0,"d":120,"c":["AQ"]},"Antarctica/Vostok":{"u":300,"c":["AQ"]},"Arctic/Longyearbyen":{"a":"Europe/Berlin","c":["SJ"],"r":1},"Asia/Aden":{"a":"Asia/Riyadh","c":["YE"],"r":1},"Asia/Almaty":{"u":300,"c":["KZ"]},"Asia/Amman":{"u":180,"c":["JO"]},"Asia/Anadyr":{"u":720,"c":["RU"]},"Asia/Aqtau":{"u":300,"c":["KZ"]},"Asia/Aqtobe":{"u":300,"c":["KZ"]},"Asia/Ashgabat":{"u":300,"c":["TM"]},"Asia/Ashkhabad":{"a":"Asia/Ashgabat","r":1},"Asia/Atyrau":{"u":300,"c":["KZ"]},"Asia/Baghdad":{"u":180,"c":["IQ"]},"Asia/Bahrain":{"a":"Asia/Qatar","c":["BH"],"r":1},"Asia/Baku":{"u":240,"c":["AZ"]},"Asia/Bangkok":{"u":420,"c":["TH","CX","KH","LA","VN"]},"Asia/Barnaul":{"u":420,"c":["RU"]},"Asia/Beirut":{"u":120,"d":180,"c":["LB"]},"Asia/Bishkek":{"u":360,"c":["KG"]},"Asia/Brunei":{"a":"Asia/Kuching","c":["BN"],"r":1},"Asia/Calcutta":{"a":"Asia/Kolkata","r":1},"Asia/Chita":{"u":540,"c":["RU"]},"Asia/Choibalsan":{"a":"Asia/Ulaanbaatar","r":1},"Asia/Chongqing":{"a":"Asia/Shanghai","r":1},"Asia/Chungking":{"a":"Asia/Shanghai","r":1},"Asia/Colombo":{"u":330,"c":["LK"]},"Asia/Dacca":{"a":"Asia/Dhaka","r":1},"Asia/Damascus":{"u":180,"c":["SY"]},"Asia/Dhaka":{"u":360,"c":["BD"]},"Asia/Dili":{"u":540,"c":["TL"]},"Asia/Dubai":{"u":240,"c":["AE","OM","RE","SC","TF"]},"Asia/Dushanbe":{"u":300,"c":["TJ"]},"Asia/Famagusta":{"u":120,"d":180,"c":["CY"]},"Asia/Gaza":{"u":120,"d":180,"c":["PS"]},"Asia/Harbin":{"a":"Asia/Shanghai","r":1},"Asia/Hebron":{"u":120,"d":180,"c":["PS"]},"Asia/Ho_Chi_Minh":{"u":420,"c":["VN"]},"Asia/Hong_Kong":{"u":480,"c":["HK"]},"Asia/Hovd":{"u":420,"c":["MN"]},"Asia/Irkutsk":{"u":480,"c":["RU"]},"Asia/Istanbul":{"a":"Europe/Istanbul","r":1},"Asia/Jakarta":{"u":420,"c":["ID"]},"Asia/Jayapura":{"u":540,"c":["ID"]},"Asia/Jerusalem":{"u":120,"d":180,"c":["IL"]},"Asia/Kabul":{"u":270,"c":["AF"]},"Asia/Kamchatka":{"u":720,"c":["RU"]},"Asia/Karachi":{"u":300,"c":["PK"]},"Asia/Kashgar":{"a":"Asia/Urumqi","r":1},"Asia/Kathmandu":{"u":345,"c":["NP"]},"Asia/Katmandu":{"a":"Asia/Kathmandu","r":1},"Asia/Khandyga":{"u":540,"c":["RU"]},"Asia/Kolkata":{"u":330,"c":["IN"]},"Asia/Krasnoyarsk":{"u":420,"c":["RU"]},"Asia/Kuala_Lumpur":{"a":"Asia/Singapore","c":["MY"],"r":1},"Asia/Kuching":{"u":480,"c":["MY","BN"]},"Asia/Kuwait":{"a":"Asia/Riyadh","c":["KW"],"r":1},"Asia/Macao":{"a":"Asia/Macau","r":1},"Asia/Macau":{"u":480,"c":["MO"]},"Asia/Magadan":{"u":660,"c":["RU"]},"Asia/Makassar":{"u":480,"c":["ID"]},"Asia/Manila":{"u":480,"c":["PH"]},"Asia/Muscat":{"a":"Asia/Dubai","c":["OM"],"r":1},"Asia/Nicosia":{"u":120,"d":180,"c":["CY"]},"Asia/Novokuznetsk":{"u":420,"c":["RU"]},"Asia/Novosibirsk":{"u":420,"c":["RU"]},"Asia/Omsk":{"u":360,"c":["RU"]},"Asia/Oral":{"u":300,"c":["KZ"]},"Asia/Phnom_Penh":{"a":"Asia/Bangkok","c":["KH"],"r":1},"Asia/Pontianak":{"u":420,"c":["ID"]},"Asia/Pyongyang":{"u":540,"c":["KP"]},"Asia/Qatar":{"u":180,"c":["QA","BH"]},"Asia/Qostanay":{"u":300,"c":["KZ"]},"Asia/Qyzylorda":{"u":300,"c":["KZ"]},"Asia/Rangoon":{"a":"Asia/Yangon","c":["MM"],"r":1},"Asia/Riyadh":{"u":180,"c":["SA","AQ","KW","YE"]},"Asia/Saigon":{"a":"Asia/Ho_Chi_Minh","r":1},"Asia/Sakhalin":{"u":660,"c":["RU"]},"Asia/Samarkand":{"u":300,"c":["UZ"]},"Asia/Seoul":{"u":540,"c":["KR"]},"Asia/Shanghai":{"u":480,"c":["CN"]},"Asia/Singapore":{"u":480,"c":["SG","AQ","MY"]},"Asia/Srednekolymsk":{"u":660,"c":["RU"]},"Asia/Taipei":{"u":480,"c":["TW"]},"Asia/Tashkent":{"u":300,"c":["UZ"]},"Asia/Tbilisi":{"u":240,"c":["GE"]},"Asia/Tehran":{"u":210,"c":["IR"]},"Asia/Tel_Aviv":{"a":"Asia/Jerusalem","r":1},"Asia/Thimbu":{"a":"Asia/Thimphu","r":1},"Asia/Thimphu":{"u":360,"c":["BT"]},"Asia/Tokyo":{"u":540,"c":["JP","AU"]},"Asia/Tomsk":{"u":420,"c":["RU"]},"Asia/Ujung_Pandang":{"a":"Asia/Makassar","r":1},"Asia/Ulaanbaatar":{"u":480,"c":["MN"]},"Asia/Ulan_Bator":{"a":"Asia/Ulaanbaatar","r":1},"Asia/Urumqi":{"u":360,"c":["CN"]},"Asia/Ust-Nera":{"u":600,"c":["RU"]},"Asia/Vientiane":{"a":"Asia/Bangkok","c":["LA"],"r":1},"Asia/Vladivostok":{"u":600,"c":["RU"]},"Asia/Yakutsk":{"u":540,"c":["RU"]},"Asia/Yangon":{"u":390,"c":["MM","CC"]},"Asia/Yekaterinburg":{"u":300,"c":["RU"]},"Asia/Yerevan":{"u":240,"c":["AM"]},"Atlantic/Azores":{"u":-60,"d":0,"c":["PT"]},"Atlantic/Bermuda":{"u":-240,"d":-180,"c":["BM"]},"Atlantic/Canary":{"u":0,"d":60,"c":["ES"]},"Atlantic/Cape_Verde":{"u":-60,"c":["CV"]},"Atlantic/Faeroe":{"a":"Atlantic/Faroe","r":1},"Atlantic/Faroe":{"u":0,"d":60,"c":["FO"]},"Atlantic/Jan_Mayen":{"a":"Europe/Berlin","c":["SJ"],"r":1},"Atlantic/Madeira":{"u":0,"d":60,"c":["PT"]},"Atlantic/Reykjavik":{"a":"Africa/Abidjan","c":["IS"],"r":1},"Atlantic/South_Georgia":{"u":-120,"c":["GS"]},"Atlantic/St_Helena":{"a":"Africa/Abidjan","c":["SH"],"r":1},"Atlantic/Stanley":{"u":-180,"c":["FK"]},"Australia/ACT":{"a":"Australia/Sydney","r":1},"Australia/Adelaide":{"u":570,"d":630,"c":["AU"]},"Australia/Brisbane":{"u":600,"c":["AU"]},"Australia/Broken_Hill":{"u":570,"d":630,"c":["AU"]},"Australia/Canberra":{"a":"Australia/Sydney","r":1},"Australia/Currie":{"a":"Australia/Hobart","r":1},"Australia/Darwin":{"u":570,"c":["AU"]},"Australia/Eucla":{"u":525,"c":["AU"]},"Australia/Hobart":{"u":600,"d":660,"c":["AU"]},"Australia/LHI":{"a":"Australia/Lord_Howe","r":1},"Australia/Lindeman":{"u":600,"c":["AU"]},"Australia/Lord_Howe":{"u":630,"d":660,"c":["AU"]},"Australia/Melbourne":{"u":600,"d":660,"c":["AU"]},"Australia/NSW":{"a":"Australia/Sydney","r":1},"Australia/North":{"a":"Australia/Darwin","r":1},"Australia/Perth":{"u":480,"c":["AU"]},"Australia/Queensland":{"a":"Australia/Brisbane","r":1},"Australia/South":{"a":"Australia/Adelaide","r":1},"Australia/Sydney":{"u":600,"d":660,"c":["AU"]},"Australia/Tasmania":{"a":"Australia/Hobart","r":1},"Australia/Victoria":{"a":"Australia/Melbourne","r":1},"Australia/West":{"a":"Australia/Perth","r":1},"Australia/Yancowinna":{"a":"Australia/Broken_Hill","r":1},"Brazil/Acre":{"a":"America/Rio_Branco","r":1},"Brazil/DeNoronha":{"a":"America/Noronha","r":1},"Brazil/East":{"a":"America/Sao_Paulo","r":1},"Brazil/West":{"a":"America/Manaus","r":1},"CET":{"a":"Europe/Brussels","r":1},"CST6CDT":{"a":"America/Chicago","r":1},"Canada/Atlantic":{"a":"America/Halifax","r":1},"Canada/Central":{"a":"America/Winnipeg","r":1},"Canada/Eastern":{"a":"America/Toronto","c":["CA"],"r":1},"Canada/Mountain":{"a":"America/Edmonton","r":1},"Canada/Newfoundland":{"a":"America/St_Johns","r":1},"Canada/Pacific":{"a":"America/Vancouver","r":1},"Canada/Saskatchewan":{"a":"America/Regina","r":1},"Canada/Yukon":{"a":"America/Whitehorse","r":1},"Chile/Continental":{"a":"America/Santiago","r":1},"Chile/EasterIsland":{"a":"Pacific/Easter","r":1},"Cuba":{"a":"America/Havana","r":1},"EET":{"a":"Europe/Athens","r":1},"EST":{"a":"America/Panama","r":1},"EST5EDT":{"a":"America/New_York","r":1},"Egypt":{"a":"Africa/Cairo","r":1},"Eire":{"a":"Europe/Dublin","r":1},"Etc/GMT":{"u":0},"Etc/GMT+0":{"a":"Etc/GMT","r":1},"Etc/GMT+1":{"u":-60},"Etc/GMT+10":{"u":-600},"Etc/GMT+11":{"u":-660},"Etc/GMT+12":{"u":-720},"Etc/GMT+2":{"u":-120},"Etc/GMT+3":{"u":-180},"Etc/GMT+4":{"u":-240},"Etc/GMT+5":{"u":-300},"Etc/GMT+6":{"u":-360},"Etc/GMT+7":{"u":-420},"Etc/GMT+8":{"u":-480},"Etc/GMT+9":{"u":-540},"Etc/GMT-0":{"a":"Etc/GMT","r":1},"Etc/GMT-1":{"u":60},"Etc/GMT-10":{"u":600},"Etc/GMT-11":{"u":660},"Etc/GMT-12":{"u":720},"Etc/GMT-13":{"u":780},"Etc/GMT-14":{"u":840},"Etc/GMT-2":{"u":120},"Etc/GMT-3":{"u":180},"Etc/GMT-4":{"u":240},"Etc/GMT-5":{"u":300},"Etc/GMT-6":{"u":360},"Etc/GMT-7":{"u":420},"Etc/GMT-8":{"u":480},"Etc/GMT-9":{"u":540},"Etc/GMT0":{"a":"Etc/GMT","r":1},"Etc/Greenwich":{"a":"Etc/GMT","r":1},"Etc/UCT":{"a":"Etc/UTC","r":1},"Etc/UTC":{"u":0},"Etc/Universal":{"a":"Etc/UTC","r":1},"Etc/Zulu":{"a":"Etc/UTC","r":1},"Europe/Amsterdam":{"a":"Europe/Brussels","c":["NL"],"r":1},"Europe/Andorra":{"u":60,"d":120,"c":["AD"]},"Europe/Astrakhan":{"u":240,"c":["RU"]},"Europe/Athens":{"u":120,"d":180,"c":["GR"]},"Europe/Belfast":{"a":"Europe/London","c":["GB"],"r":1},"Europe/Belgrade":{"u":60,"d":120,"c":["RS","BA","HR","ME","MK","SI"]},"Europe/Berlin":{"u":60,"d":120,"c":["DE","DK","NO","SE","SJ"]},"Europe/Bratislava":{"a":"Europe/Prague","c":["SK"],"r":1},"Europe/Brussels":{"u":60,"d":120,"c":["BE","LU","NL"]},"Europe/Bucharest":{"u":120,"d":180,"c":["RO"]},"Europe/Budapest":{"u":60,"d":120,"c":["HU"]},"Europe/Busingen":{"a":"Europe/Zurich","c":["DE"],"r":1},"Europe/Chisinau":{"u":120,"d":180,"c":["MD"]},"Europe/Copenhagen":{"a":"Europe/Berlin","c":["DK"],"r":1},"Europe/Dublin":{"u":0,"d":60,"c":["IE"]},"Europe/Gibraltar":{"u":60,"d":120,"c":["GI"]},"Europe/Guernsey":{"a":"Europe/London","c":["GG"],"r":1},"Europe/Helsinki":{"u":120,"d":180,"c":["FI","AX"]},"Europe/Isle_of_Man":{"a":"Europe/London","c":["IM"],"r":1},"Europe/Istanbul":{"u":180,"c":["TR"]},"Europe/Jersey":{"a":"Europe/London","c":["JE"],"r":1},"Europe/Kaliningrad":{"u":120,"c":["RU"]},"Europe/Kiev":{"a":"Europe/Kyiv","r":1},"Europe/Kirov":{"u":180,"c":["RU"]},"Europe/Kyiv":{"u":120,"d":180,"c":["UA"]},"Europe/Lisbon":{"u":0,"d":60,"c":["PT"]},"Europe/Ljubljana":{"a":"Europe/Belgrade","c":["SI"],"r":1},"Europe/London":{"u":0,"d":60,"c":["GB","GG","IM","JE"]},"Europe/Luxembourg":{"a":"Europe/Brussels","c":["LU"],"r":1},"Europe/Madrid":{"u":60,"d":120,"c":["ES"]},"Europe/Malta":{"u":60,"d":120,"c":["MT"]},"Europe/Mariehamn":{"a":"Europe/Helsinki","c":["AX"],"r":1},"Europe/Minsk":{"u":180,"c":["BY"]},"Europe/Monaco":{"a":"Europe/Paris","c":["MC"],"r":1},"Europe/Moscow":{"u":180,"c":["RU"]},"Europe/Nicosia":{"a":"Asia/Nicosia","r":1},"Europe/Oslo":{"a":"Europe/Berlin","c":["NO"],"r":1},"Europe/Paris":{"u":60,"d":120,"c":["FR","MC"]},"Europe/Podgorica":{"a":"Europe/Belgrade","c":["ME"],"r":1},"Europe/Prague":{"u":60,"d":120,"c":["CZ","SK"]},"Europe/Riga":{"u":120,"d":180,"c":["LV"]},"Europe/Rome":{"u":60,"d":120,"c":["IT","SM","VA"]},"Europe/Samara":{"u":240,"c":["RU"]},"Europe/San_Marino":{"a":"Europe/Rome","c":["SM"],"r":1},"Europe/Sarajevo":{"a":"Europe/Belgrade","c":["BA"],"r":1},"Europe/Saratov":{"u":240,"c":["RU"]},"Europe/Simferopol":{"u":180,"c":["RU","UA"]},"Europe/Skopje":{"a":"Europe/Belgrade","c":["MK"],"r":1},"Europe/Sofia":{"u":120,"d":180,"c":["BG"]},"Europe/Stockholm":{"a":"Europe/Berlin","c":["SE"],"r":1},"Europe/Tallinn":{"u":120,"d":180,"c":["EE"]},"Europe/Tirane":{"u":60,"d":120,"c":["AL"]},"Europe/Tiraspol":{"a":"Europe/Chisinau","r":1},"Europe/Ulyanovsk":{"u":240,"c":["RU"]},"Europe/Uzhgorod":{"a":"Europe/Kyiv","r":1},"Europe/Vaduz":{"a":"Europe/Zurich","c":["LI"],"r":1},"Europe/Vatican":{"a":"Europe/Rome","c":["VA"],"r":1},"Europe/Vienna":{"u":60,"d":120,"c":["AT"]},"Europe/Vilnius":{"u":120,"d":180,"c":["LT"]},"Europe/Volgograd":{"u":180,"c":["RU"]},"Europe/Warsaw":{"u":60,"d":120,"c":["PL"]},"Europe/Zagreb":{"a":"Europe/Belgrade","c":["HR"],"r":1},"Europe/Zaporozhye":{"a":"Europe/Kyiv","r":1},"Europe/Zurich":{"u":60,"d":120,"c":["CH","DE","LI"]},"Factory":{"u":0},"GB":{"a":"Europe/London","c":["GB"],"r":1},"GB-Eire":{"a":"Europe/London","c":["GB"],"r":1},"GMT":{"a":"Etc/GMT","r":1},"GMT+0":{"a":"Etc/GMT","r":1},"GMT-0":{"a":"Etc/GMT","r":1},"GMT0":{"a":"Etc/GMT","r":1},"Greenwich":{"a":"Etc/GMT","r":1},"HST":{"a":"Pacific/Honolulu","r":1},"Hongkong":{"a":"Asia/Hong_Kong","r":1},"Iceland":{"a":"Africa/Abidjan","c":["IS"],"r":1},"Indian/Antananarivo":{"a":"Africa/Nairobi","c":["MG"],"r":1},"Indian/Chagos":{"u":360,"c":["IO"]},"Indian/Christmas":{"a":"Asia/Bangkok","c":["CX"],"r":1},"Indian/Cocos":{"a":"Asia/Yangon","c":["CC"],"r":1},"Indian/Comoro":{"a":"Africa/Nairobi","c":["KM"],"r":1},"Indian/Kerguelen":{"a":"Indian/Maldives","c":["TF","HM"],"r":1},"Indian/Mahe":{"a":"Asia/Dubai","c":["SC"],"r":1},"Indian/Maldives":{"u":300,"c":["MV","TF"]},"Indian/Mauritius":{"u":240,"c":["MU"]},"Indian/Mayotte":{"a":"Africa/Nairobi","c":["YT"],"r":1},"Indian/Reunion":{"a":"Asia/Dubai","c":["RE"],"r":1},"Iran":{"a":"Asia/Tehran","r":1},"Israel":{"a":"Asia/Jerusalem","r":1},"Jamaica":{"a":"America/Jamaica","r":1},"Japan":{"a":"Asia/Tokyo","c":["JP"],"r":1},"Kwajalein":{"a":"Pacific/Kwajalein","r":1},"Libya":{"a":"Africa/Tripoli","r":1},"MET":{"a":"Europe/Brussels","r":1},"MST":{"a":"America/Phoenix","r":1},"MST7MDT":{"a":"America/Denver","r":1},"Mexico/BajaNorte":{"a":"America/Tijuana","r":1},"Mexico/BajaSur":{"a":"America/Mazatlan","r":1},"Mexico/General":{"a":"America/Mexico_City","r":1},"NZ":{"a":"Pacific/Auckland","c":["NZ"],"r":1},"NZ-CHAT":{"a":"Pacific/Chatham","r":1},"Navajo":{"a":"America/Denver","r":1},"PRC":{"a":"Asia/Shanghai","r":1},"PST8PDT":{"a":"America/Los_Angeles","r":1},"Pacific/Apia":{"u":780,"c":["WS"]},"Pacific/Auckland":{"u":720,"d":780,"c":["NZ","AQ"]},"Pacific/Bougainville":{"u":660,"c":["PG"]},"Pacific/Chatham":{"u":765,"d":825,"c":["NZ"]},"Pacific/Chuuk":{"a":"Pacific/Port_Moresby","c":["FM"],"r":1},"Pacific/Easter":{"u":-360,"d":-300,"c":["CL"]},"Pacific/Efate":{"u":660,"c":["VU"]},"Pacific/Enderbury":{"a":"Pacific/Kanton","r":1},"Pacific/Fakaofo":{"u":780,"c":["TK"]},"Pacific/Fiji":{"u":720,"c":["FJ"]},"Pacific/Funafuti":{"a":"Pacific/Tarawa","c":["TV"],"r":1},"Pacific/Galapagos":{"u":-360,"c":["EC"]},"Pacific/Gambier":{"u":-540,"c":["PF"]},"Pacific/Guadalcanal":{"u":660,"c":["SB","FM"]},"Pacific/Guam":{"u":600,"c":["GU","MP"]},"Pacific/Honolulu":{"u":-600,"c":["US"]},"Pacific/Johnston":{"a":"Pacific/Honolulu","c":["UM"],"r":1},"Pacific/Kanton":{"u":780,"c":["KI"]},"Pacific/Kiritimati":{"u":840,"c":["KI"]},"Pacific/Kosrae":{"u":660,"c":["FM"]},"Pacific/Kwajalein":{"u":720,"c":["MH"]},"Pacific/Majuro":{"a":"Pacific/Tarawa","c":["MH"],"r":1},"Pacific/Marquesas":{"u":-570,"c":["PF"]},"Pacific/Midway":{"a":"Pacific/Pago_Pago","c":["UM"],"r":1},"Pacific/Nauru":{"u":720,"c":["NR"]},"Pacific/Niue":{"u":-660,"c":["NU"]},"Pacific/Norfolk":{"u":660,"d":720,"c":["NF"]},"Pacific/Noumea":{"u":660,"c":["NC"]},"Pacific/Pago_Pago":{"u":-660,"c":["AS","UM"]},"Pacific/Palau":{"u":540,"c":["PW"]},"Pacific/Pitcairn":{"u":-480,"c":["PN"]},"Pacific/Pohnpei":{"a":"Pacific/Guadalcanal","c":["FM"],"r":1},"Pacific/Ponape":{"a":"Pacific/Guadalcanal","c":["FM"],"r":1},"Pacific/Port_Moresby":{"u":600,"c":["PG","AQ","FM"]},"Pacific/Rarotonga":{"u":-600,"c":["CK"]},"Pacific/Saipan":{"a":"Pacific/Guam","c":["MP"],"r":1},"Pacific/Samoa":{"a":"Pacific/Pago_Pago","c":["AS"],"r":1},"Pacific/Tahiti":{"u":-600,"c":["PF"]},"Pacific/Tarawa":{"u":720,"c":["KI","MH","TV","UM","WF"]},"Pacific/Tongatapu":{"u":780,"c":["TO"]},"Pacific/Truk":{"a":"Pacific/Port_Moresby","c":["FM"],"r":1},"Pacific/Wake":{"a":"Pacific/Tarawa","c":["UM"],"r":1},"Pacific/Wallis":{"a":"Pacific/Tarawa","c":["WF"],"r":1},"Pacific/Yap":{"a":"Pacific/Port_Moresby","c":["FM"],"r":1},"Poland":{"a":"Europe/Warsaw","r":1},"Portugal":{"a":"Europe/Lisbon","r":1},"ROC":{"a":"Asia/Taipei","r":1},"ROK":{"a":"Asia/Seoul","r":1},"Singapore":{"a":"Asia/Singapore","c":["SG"],"r":1},"Turkey":{"a":"Europe/Istanbul","r":1},"UCT":{"a":"Etc/UTC","r":1},"US/Alaska":{"a":"America/Anchorage","r":1},"US/Aleutian":{"a":"America/Adak","r":1},"US/Arizona":{"a":"America/Phoenix","c":["US"],"r":1},"US/Central":{"a":"America/Chicago","r":1},"US/East-Indiana":{"a":"America/Indiana/Indianapolis","r":1},"US/Eastern":{"a":"America/New_York","r":1},"US/Hawaii":{"a":"Pacific/Honolulu","r":1},"US/Indiana-Starke":{"a":"America/Indiana/Knox","r":1},"US/Michigan":{"a":"America/Detroit","r":1},"US/Mountain":{"a":"America/Denver","r":1},"US/Pacific":{"a":"America/Los_Angeles","r":1},"US/Samoa":{"a":"Pacific/Pago_Pago","c":["AS"],"r":1},"UTC":{"a":"Etc/UTC","r":1},"Universal":{"a":"Etc/UTC","r":1},"W-SU":{"a":"Europe/Moscow","r":1},"WET":{"a":"Europe/Lisbon","r":1},"Zulu":{"a":"Etc/UTC","r":1}}')},S;function y(r,a){let i=r.countries[a];if(!i)return null;let e=G(r)[a]||{};return{id:a,name:i,timezones:e.current||[],allTimezones:e.all||[]}}function G(r){return S||(S=R(r)),S}function R(r){return Object.keys(r.timezones).reduce((a,i)=>{let e=r.timezones[i],{c,a:n}=e,u=r.timezones[n]||{},A=c||u.c;if(!A)return a;for(let s of A)a[s]||Object.assign(a,{[s]:{current:[],all:[]}}),e.r===void 0&&a[s].current.push(i),a[s].all.push(i);return a},{})}function B(r,a){let i=r.timezones[a];if(!i)return null;let{a:e=null}=i,c={...e?r.timezones[e]:{},...r.timezones[a]},n=c.c||[],u=c.u,A=Number.isInteger(c.d)?c.d:u,s={name:a,countries:n,utcOffset:u,utcOffsetStr:E(u),dstOffset:A,dstOffsetStr:E(A),aliasOf:e};return i.r&&(s.deprecated=!0),s}function E(r){let a=Math.floor(Math.abs(r)/60),i=r%60;return`${r<0?"-":"+"}${p(a)}:${p(i)}`}function p(r){let a=Math.abs(r);return`${a<10?"0":""}${a}`}var x=Object.keys(g.timezones).length,f={},l={},w=0;function U(r,a={}){return f[r]||k(y(g,r)),N(f[r],a)}function k(r){r&&(f[r.id]=r)}function I(r){return l[r]||_(B(g,r)),l[r]?{...l[r]}:null}function _(r){r&&(l[r.name]=r,w=Object.keys(r).length)}function L(r,a={}){return((I(r)||{}).countries||[]).map(i=>U(i,a))}function T(r,a={}){let[i]=L(r,a);return i||null}function N(r,a){if(!r)return null;let{deprecated:i}=a||{},{allTimezones:e,...c}=r,n=i?r.allTimezones:r.timezones;return{...c,timezones:n}}function v(r){let a=r.get("ref"),i=r.get("source"),e=r.get("utm_source"),c=r.get("utm_medium"),n=r.get("utm_term"),u=r.get("utm_campaign"),A=r.get("utm_content");return{source:a||i||e||null,medium:c||null,url:window.document.referrer||null,utmSource:e||null,utmMedium:c||null,utmTerm:n||null,utmCampaign:u||null,utmContent:A||null}}function h(r){let a=new URL(r||window.location.href),i=a.searchParams;return a.hash&&a.hash.includes("#/portal")&&(i=new URL(a.href.replace("/#/portal","")).searchParams),v(i)}function K(r){let{source:a,medium:i,url:e}=r,c=a||i||e||null;if(c)try{let n=new URL(c).hostname,u=window.location.hostname;if(n===u)return null}catch{return c}return c}function C(r){let a=h(r);return K(a)}var D=["username","user","user_id","userid","password","pass","pin","passcode","token","api_token","email","address","phone","sex","gender","order","order_id","orderid","payment","credit_card"];function P(r,a=D){let i=JSON.stringify(r);return a.forEach(e=>{i=i.replace(new RegExp(`("${e}"):(".+?"|\\d+)`,"mgi"),'$1:"********"')}),i}function b(r,a={},i=!0){if(i){let e=P(r),c=Object.assign({},JSON.parse(e),a);return JSON.stringify(c)}else{let e=Object.assign({},r,a),c=P(e);return JSON.parse(c)}}var m=class{constructor(a=globalThis.window,i=globalThis.document){this.window=a,this.document=i}getNavigator(){return this.window?.navigator}getLocation(){return this.window?.location}getTimezone(){return this.window?.Intl?.DateTimeFormat().resolvedOptions().timeZone}getCurrentScript(){return this.document?.currentScript}getVisibilityState(){return this.document?.visibilityState}setTimeout(a,i){return this.window?.setTimeout(a,i)}clearTimeout(a){return this.window?.clearTimeout(a)}addEventListener(a,i,e){if(!["window","document"].includes(a))throw new TypeError(`BrowserService.addEventListener: unknown target "${a}". Expected "window" or "document".`);a==="window"?this.window?.addEventListener(i,e):a==="document"&&this.document?.addEventListener(i,e)}removeEventListener(a,i,e){if(!["window","document"].includes(a))throw new TypeError(`BrowserService.removeEventListener: unknown target "${a}". Expected "window" or "document".`);a==="window"?this.window?.removeEventListener(i,e):a==="document"&&this.document?.removeEventListener(i,e)}isTestEnvironment(){return this.window?.__GHOST_SYNTHETIC_MONITORING__===!0?!1:!!(this.window&&(this.window.__nightmare||this.window.navigator?.webdriver||this.window.Cypress))}fetch(a,i){return this.window?.fetch(a,i)}wrapHistoryMethod(a,i){if(this.window?.history?.[a]?.__ghostWrapped)return;let e=this.window?.history?.[a];e&&(this.window.history[a]=(...c)=>{let n=e.apply(this.window.history,c);return i(),n},this.window.history[a].__ghostWrapped=!0)}};var H="analytics_events",t={host:null,token:null,domain:null,datasource:H,stringifyPayload:!0,globalAttributes:{}},M=class{constructor(a=new m){this.browser=a,this.isListenersAttached=!1}get isTestEnv(){return this.browser.isTestEnvironment()}initConfig(){let a=this.browser.getCurrentScript();if(!a)return!1;t.host=a.getAttribute("data-host"),t.token=a.getAttribute("data-token")||null,t.domain=a.getAttribute("data-domain"),t.datasource=a.getAttribute("data-datasource")||t.datasource,t.stringifyPayload=a.getAttribute("data-stringify-payload")!=="false";for(let i of a.attributes)i.name.startsWith("tb_")&&(t.globalAttributes[i.name.slice(3)]=i.value);return!!t.host}generateUUID(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,a=>{let i=Math.random()*16|0;return(a==="x"?i:i&3|8).toString(16)})}async trackEvent(a,i){try{if(!t.host)throw new Error("Missing required configuration (host)");let e=`${t.host}?name=${encodeURIComponent(t.datasource)}`;t.token&&(e+=`&token=${encodeURIComponent(t.token)}`),i.event_id=this.generateUUID();let c=b(i,t.globalAttributes,t.stringifyPayload),n={timestamp:new Date().toISOString(),action:a,version:"1",payload:c},u=new AbortController,A=this.browser.setTimeout(()=>u.abort(),5e3),s={"Content-Type":"application/json"};t.globalAttributes?.site_uuid&&(s["x-site-uuid"]=t.globalAttributes.site_uuid);let d=await this.browser.fetch(e,{method:"POST",headers:s,body:JSON.stringify(n),signal:u.signal});if(this.browser.clearTimeout(A),!d.ok)throw new Error(`HTTP error! Status: ${d.status}`);return d}catch(e){let c=this.browser.getLocation();return(c?.hostname==="localhost"||c?.hostname==="127.0.0.1")&&console.error("Ghost Stats error:",e),null}}getLocationInfo(){try{let a=this.browser.getTimezone(),i=a?T(a):null,e=this.browser.getNavigator(),c=e?.languages?.[0]||e?.language||"en";return{country:i?i.id:null,locale:c}}catch{return{country:null,locale:"en"}}}trackPageHit(){if(this.isTestEnv)return;let{country:a,locale:i}=this.getLocationInfo(),e=this.browser.getNavigator(),c=this.browser.getLocation(),n=h(c?.href);n.url=C(c?.href)||n.url,this.browser.setTimeout(()=>{this.trackEvent("page_hit",{"user-agent":e?.userAgent,locale:i,location:a,parsedReferrer:{url:n.url,source:n.source,medium:n.medium},pathname:c?.pathname,href:c?.href,utm_source:n.utmSource,utm_medium:n.utmMedium,utm_campaign:n.utmCampaign,utm_term:n.utmTerm,utm_content:n.utmContent})},300)}setupEventListeners(){if(!this.isListenersAttached){if(this.browser.getVisibilityState()!=="hidden")this.trackPageHit();else{let a=()=>{this.browser.getVisibilityState()==="visible"&&(this.trackPageHit(),this.browser.removeEventListener("document","visibilitychange",a))};this.browser.addEventListener("document","visibilitychange",a)}this.isListenersAttached=!0}}init(){return this.isTestEnv||this.browser.window&&this.browser.window.self!==this.browser.window.top?!1:this.initConfig()?(this.browser.window&&(this.browser.window.Tinybird={trackEvent:(i,e)=>this.trackEvent(i,e),_trackPageHit:()=>this.trackPageHit()}),this.setupEventListeners(),!0):(console.warn("Ghost Stats: Missing required configuration"),!1)}},o=new M;o.init();var Y=()=>o.isTestEnv,Q=o.initConfig.bind(o),X=o.trackEvent.bind(o),q=o.getLocationInfo.bind(o),$=o.trackPageHit.bind(o),aa=o.setupEventListeners.bind(o),ra=o.init.bind(o),ia=o;})();
|
|
1
|
+
"use strict";(()=>{var h={countries:{AD:"Andorra",AE:"United Arab Emirates",AF:"Afghanistan",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Albania",AM:"Armenia",AO:"Angola",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Austria",AU:"Australia",AW:"Aruba",AX:"\xC5land Islands",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BB:"Barbados",BD:"Bangladesh",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BL:"Saint Barth\xE9lemy",BM:"Bermuda",BN:"Brunei",BO:"Bolivia",BQ:"Caribbean Netherlands",BR:"Brazil",BS:"Bahamas",BT:"Bhutan",BW:"Botswana",BY:"Belarus",BZ:"Belize",CA:"Canada",CC:"Cocos Islands",CD:"Democratic Republic of the Congo",CF:"Central African Republic",CG:"Republic of the Congo",CH:"Switzerland",CI:"Ivory Coast",CK:"Cook Islands",CL:"Chile",CM:"Cameroon",CN:"China",CO:"Colombia",CR:"Costa Rica",CU:"Cuba",CV:"Cabo Verde",CW:"Cura\xE7ao",CX:"Christmas Island",CY:"Cyprus",CZ:"Czechia",DE:"Germany",DJ:"Djibouti",DK:"Denmark",DM:"Dominica",DO:"Dominican Republic",DZ:"Algeria",EC:"Ecuador",EE:"Estonia",EG:"Egypt",EH:"Western Sahara",ER:"Eritrea",ES:"Spain",ET:"Ethiopia",FI:"Finland",FJ:"Fiji",FK:"Falkland Islands",FM:"Micronesia",FO:"Faroe Islands",FR:"France",GA:"Gabon",GB:"United Kingdom",GD:"Grenada",GE:"Georgia",GF:"French Guiana",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Greenland",GM:"Gambia",GN:"Guinea",GP:"Guadeloupe",GQ:"Equatorial Guinea",GR:"Greece",GS:"South Georgia and the South Sandwich Islands",GT:"Guatemala",GU:"Guam",GW:"Guinea-Bissau",GY:"Guyana",HK:"Hong Kong",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Croatia",HT:"Haiti",HU:"Hungary",ID:"Indonesia",IE:"Ireland",IL:"Israel",IM:"Isle of Man",IN:"India",IO:"British Indian Ocean Territory",IQ:"Iraq",IR:"Iran",IS:"Iceland",IT:"Italy",JE:"Jersey",JM:"Jamaica",JO:"Jordan",JP:"Japan",KE:"Kenya",KG:"Kyrgyzstan",KH:"Cambodia",KI:"Kiribati",KM:"Comoros",KN:"Saint Kitts and Nevis",KP:"North Korea",KR:"South Korea",KW:"Kuwait",KY:"Cayman Islands",KZ:"Kazakhstan",LA:"Laos",LB:"Lebanon",LC:"Saint Lucia",LI:"Liechtenstein",LK:"Sri Lanka",LR:"Liberia",LS:"Lesotho",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",LY:"Libya",MA:"Morocco",MC:"Monaco",MD:"Moldova",ME:"Montenegro",MF:"Saint Martin",MG:"Madagascar",MH:"Marshall Islands",MK:"North Macedonia",ML:"Mali",MM:"Myanmar",MN:"Mongolia",MO:"Macao",MP:"Northern Mariana Islands",MQ:"Martinique",MR:"Mauritania",MS:"Montserrat",MT:"Malta",MU:"Mauritius",MV:"Maldives",MW:"Malawi",MX:"Mexico",MY:"Malaysia",MZ:"Mozambique",NA:"Namibia",NC:"New Caledonia",NE:"Niger",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Netherlands",NO:"Norway",NP:"Nepal",NR:"Nauru",NU:"Niue",NZ:"New Zealand",OM:"Oman",PA:"Panama",PE:"Peru",PF:"French Polynesia",PG:"Papua New Guinea",PH:"Philippines",PK:"Pakistan",PL:"Poland",PM:"Saint Pierre and Miquelon",PN:"Pitcairn",PR:"Puerto Rico",PS:"Palestine",PT:"Portugal",PW:"Palau",PY:"Paraguay",QA:"Qatar",RE:"R\xE9union",RO:"Romania",RS:"Serbia",RU:"Russia",RW:"Rwanda",SA:"Saudi Arabia",SB:"Solomon Islands",SC:"Seychelles",SD:"Sudan",SE:"Sweden",SG:"Singapore",SH:"Saint Helena, Ascension and Tristan da Cunha",SI:"Slovenia",SJ:"Svalbard and Jan Mayen",SK:"Slovakia",SL:"Sierra Leone",SM:"San Marino",SN:"Senegal",SO:"Somalia",SR:"Suriname",SS:"South Sudan",ST:"Sao Tome and Principe",SV:"El Salvador",SX:"Sint Maarten",SY:"Syria",SZ:"Eswatini",TC:"Turks and Caicos Islands",TD:"Chad",TF:"French Southern Territories",TG:"Togo",TH:"Thailand",TJ:"Tajikistan",TK:"Tokelau",TL:"Timor-Leste",TM:"Turkmenistan",TN:"Tunisia",TO:"Tonga",TR:"T\xFCrkiye",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"Taiwan",TZ:"Tanzania",UA:"Ukraine",UG:"Uganda",UM:"United States Minor Outlying Islands",US:"United States of America",UY:"Uruguay",UZ:"Uzbekistan",VA:"Holy See",VC:"Saint Vincent and the Grenadines",VE:"Venezuela",VG:"Virgin Islands (UK)",VI:"Virgin Islands (US)",VN:"Vietnam",VU:"Vanuatu",WF:"Wallis and Futuna",WS:"Samoa",YE:"Yemen",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe"},timezones:JSON.parse('{"Africa/Abidjan":{"u":0,"c":["CI","BF","GH","GM","GN","IS","ML","MR","SH","SL","SN","TG"]},"Africa/Accra":{"a":"Africa/Abidjan","c":["GH"],"r":1},"Africa/Addis_Ababa":{"a":"Africa/Nairobi","c":["ET"],"r":1},"Africa/Algiers":{"u":60,"c":["DZ"]},"Africa/Asmara":{"a":"Africa/Nairobi","c":["ER"],"r":1},"Africa/Asmera":{"a":"Africa/Nairobi","c":["ER"],"r":1},"Africa/Bamako":{"a":"Africa/Abidjan","c":["ML"],"r":1},"Africa/Bangui":{"a":"Africa/Lagos","c":["CF"],"r":1},"Africa/Banjul":{"a":"Africa/Abidjan","c":["GM"],"r":1},"Africa/Bissau":{"u":0,"c":["GW"]},"Africa/Blantyre":{"a":"Africa/Maputo","c":["MW"],"r":1},"Africa/Brazzaville":{"a":"Africa/Lagos","c":["CG"],"r":1},"Africa/Bujumbura":{"a":"Africa/Maputo","c":["BI"],"r":1},"Africa/Cairo":{"u":120,"d":180,"c":["EG"]},"Africa/Casablanca":{"u":60,"d":0,"c":["MA"]},"Africa/Ceuta":{"u":60,"d":120,"c":["ES"]},"Africa/Conakry":{"a":"Africa/Abidjan","c":["GN"],"r":1},"Africa/Dakar":{"a":"Africa/Abidjan","c":["SN"],"r":1},"Africa/Dar_es_Salaam":{"a":"Africa/Nairobi","c":["TZ"],"r":1},"Africa/Djibouti":{"a":"Africa/Nairobi","c":["DJ"],"r":1},"Africa/Douala":{"a":"Africa/Lagos","c":["CM"],"r":1},"Africa/El_Aaiun":{"u":60,"d":0,"c":["EH"]},"Africa/Freetown":{"a":"Africa/Abidjan","c":["SL"],"r":1},"Africa/Gaborone":{"a":"Africa/Maputo","c":["BW"],"r":1},"Africa/Harare":{"a":"Africa/Maputo","c":["ZW"],"r":1},"Africa/Johannesburg":{"u":120,"c":["ZA","LS","SZ"]},"Africa/Juba":{"u":120,"c":["SS"]},"Africa/Kampala":{"a":"Africa/Nairobi","c":["UG"],"r":1},"Africa/Khartoum":{"u":120,"c":["SD"]},"Africa/Kigali":{"a":"Africa/Maputo","c":["RW"],"r":1},"Africa/Kinshasa":{"a":"Africa/Lagos","c":["CD"],"r":1},"Africa/Lagos":{"u":60,"c":["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},"Africa/Libreville":{"a":"Africa/Lagos","c":["GA"],"r":1},"Africa/Lome":{"a":"Africa/Abidjan","c":["TG"],"r":1},"Africa/Luanda":{"a":"Africa/Lagos","c":["AO"],"r":1},"Africa/Lubumbashi":{"a":"Africa/Maputo","c":["CD"],"r":1},"Africa/Lusaka":{"a":"Africa/Maputo","c":["ZM"],"r":1},"Africa/Malabo":{"a":"Africa/Lagos","c":["GQ"],"r":1},"Africa/Maputo":{"u":120,"c":["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},"Africa/Maseru":{"a":"Africa/Johannesburg","c":["LS"],"r":1},"Africa/Mbabane":{"a":"Africa/Johannesburg","c":["SZ"],"r":1},"Africa/Mogadishu":{"a":"Africa/Nairobi","c":["SO"],"r":1},"Africa/Monrovia":{"u":0,"c":["LR"]},"Africa/Nairobi":{"u":180,"c":["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},"Africa/Ndjamena":{"u":60,"c":["TD"]},"Africa/Niamey":{"a":"Africa/Lagos","c":["NE"],"r":1},"Africa/Nouakchott":{"a":"Africa/Abidjan","c":["MR"],"r":1},"Africa/Ouagadougou":{"a":"Africa/Abidjan","c":["BF"],"r":1},"Africa/Porto-Novo":{"a":"Africa/Lagos","c":["BJ"],"r":1},"Africa/Sao_Tome":{"u":0,"c":["ST"]},"Africa/Timbuktu":{"a":"Africa/Abidjan","c":["ML"],"r":1},"Africa/Tripoli":{"u":120,"c":["LY"]},"Africa/Tunis":{"u":60,"c":["TN"]},"Africa/Windhoek":{"u":120,"c":["NA"]},"America/Adak":{"u":-600,"d":-540,"c":["US"]},"America/Anchorage":{"u":-540,"d":-480,"c":["US"]},"America/Anguilla":{"a":"America/Puerto_Rico","c":["AI"],"r":1},"America/Antigua":{"a":"America/Puerto_Rico","c":["AG"],"r":1},"America/Araguaina":{"u":-180,"c":["BR"]},"America/Argentina/Buenos_Aires":{"u":-180,"c":["AR"]},"America/Argentina/Catamarca":{"u":-180,"c":["AR"]},"America/Argentina/ComodRivadavia":{"a":"America/Argentina/Catamarca","r":1},"America/Argentina/Cordoba":{"u":-180,"c":["AR"]},"America/Argentina/Jujuy":{"u":-180,"c":["AR"]},"America/Argentina/La_Rioja":{"u":-180,"c":["AR"]},"America/Argentina/Mendoza":{"u":-180,"c":["AR"]},"America/Argentina/Rio_Gallegos":{"u":-180,"c":["AR"]},"America/Argentina/Salta":{"u":-180,"c":["AR"]},"America/Argentina/San_Juan":{"u":-180,"c":["AR"]},"America/Argentina/San_Luis":{"u":-180,"c":["AR"]},"America/Argentina/Tucuman":{"u":-180,"c":["AR"]},"America/Argentina/Ushuaia":{"u":-180,"c":["AR"]},"America/Aruba":{"a":"America/Puerto_Rico","c":["AW"],"r":1},"America/Asuncion":{"u":-180,"c":["PY"]},"America/Atikokan":{"a":"America/Panama","c":["CA"],"r":1},"America/Atka":{"a":"America/Adak","r":1},"America/Bahia":{"u":-180,"c":["BR"]},"America/Bahia_Banderas":{"u":-360,"c":["MX"]},"America/Barbados":{"u":-240,"c":["BB"]},"America/Belem":{"u":-180,"c":["BR"]},"America/Belize":{"u":-360,"c":["BZ"]},"America/Blanc-Sablon":{"a":"America/Puerto_Rico","c":["CA"],"r":1},"America/Boa_Vista":{"u":-240,"c":["BR"]},"America/Bogota":{"u":-300,"c":["CO"]},"America/Boise":{"u":-420,"d":-360,"c":["US"]},"America/Buenos_Aires":{"a":"America/Argentina/Buenos_Aires","r":1},"America/Cambridge_Bay":{"u":-420,"d":-360,"c":["CA"]},"America/Campo_Grande":{"u":-240,"c":["BR"]},"America/Cancun":{"u":-300,"c":["MX"]},"America/Caracas":{"u":-240,"c":["VE"]},"America/Catamarca":{"a":"America/Argentina/Catamarca","r":1},"America/Cayenne":{"u":-180,"c":["GF"]},"America/Cayman":{"a":"America/Panama","c":["KY"],"r":1},"America/Chicago":{"u":-360,"d":-300,"c":["US"]},"America/Chihuahua":{"u":-360,"c":["MX"]},"America/Ciudad_Juarez":{"u":-420,"d":-360,"c":["MX"]},"America/Coral_Harbour":{"a":"America/Panama","c":["CA"],"r":1},"America/Cordoba":{"a":"America/Argentina/Cordoba","r":1},"America/Costa_Rica":{"u":-360,"c":["CR"]},"America/Coyhaique":{"u":-180,"c":["CL"]},"America/Creston":{"a":"America/Phoenix","c":["CA"],"r":1},"America/Cuiaba":{"u":-240,"c":["BR"]},"America/Curacao":{"a":"America/Puerto_Rico","c":["CW"],"r":1},"America/Danmarkshavn":{"u":0,"c":["GL"]},"America/Dawson":{"u":-420,"c":["CA"]},"America/Dawson_Creek":{"u":-420,"c":["CA"]},"America/Denver":{"u":-420,"d":-360,"c":["US"]},"America/Detroit":{"u":-300,"d":-240,"c":["US"]},"America/Dominica":{"a":"America/Puerto_Rico","c":["DM"],"r":1},"America/Edmonton":{"u":-420,"d":-360,"c":["CA"]},"America/Eirunepe":{"u":-300,"c":["BR"]},"America/El_Salvador":{"u":-360,"c":["SV"]},"America/Ensenada":{"a":"America/Tijuana","r":1},"America/Fort_Nelson":{"u":-420,"c":["CA"]},"America/Fort_Wayne":{"a":"America/Indiana/Indianapolis","r":1},"America/Fortaleza":{"u":-180,"c":["BR"]},"America/Glace_Bay":{"u":-240,"d":-180,"c":["CA"]},"America/Godthab":{"a":"America/Nuuk","r":1},"America/Goose_Bay":{"u":-240,"d":-180,"c":["CA"]},"America/Grand_Turk":{"u":-300,"d":-240,"c":["TC"]},"America/Grenada":{"a":"America/Puerto_Rico","c":["GD"],"r":1},"America/Guadeloupe":{"a":"America/Puerto_Rico","c":["GP"],"r":1},"America/Guatemala":{"u":-360,"c":["GT"]},"America/Guayaquil":{"u":-300,"c":["EC"]},"America/Guyana":{"u":-240,"c":["GY"]},"America/Halifax":{"u":-240,"d":-180,"c":["CA"]},"America/Havana":{"u":-300,"d":-240,"c":["CU"]},"America/Hermosillo":{"u":-420,"c":["MX"]},"America/Indiana/Indianapolis":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Knox":{"u":-360,"d":-300,"c":["US"]},"America/Indiana/Marengo":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Petersburg":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Tell_City":{"u":-360,"d":-300,"c":["US"]},"America/Indiana/Vevay":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Vincennes":{"u":-300,"d":-240,"c":["US"]},"America/Indiana/Winamac":{"u":-300,"d":-240,"c":["US"]},"America/Indianapolis":{"a":"America/Indiana/Indianapolis","r":1},"America/Inuvik":{"u":-420,"d":-360,"c":["CA"]},"America/Iqaluit":{"u":-300,"d":-240,"c":["CA"]},"America/Jamaica":{"u":-300,"c":["JM"]},"America/Jujuy":{"a":"America/Argentina/Jujuy","r":1},"America/Juneau":{"u":-540,"d":-480,"c":["US"]},"America/Kentucky/Louisville":{"u":-300,"d":-240,"c":["US"]},"America/Kentucky/Monticello":{"u":-300,"d":-240,"c":["US"]},"America/Knox_IN":{"a":"America/Indiana/Knox","r":1},"America/Kralendijk":{"a":"America/Puerto_Rico","c":["BQ"],"r":1},"America/La_Paz":{"u":-240,"c":["BO"]},"America/Lima":{"u":-300,"c":["PE"]},"America/Los_Angeles":{"u":-480,"d":-420,"c":["US"]},"America/Louisville":{"a":"America/Kentucky/Louisville","r":1},"America/Lower_Princes":{"a":"America/Puerto_Rico","c":["SX"],"r":1},"America/Maceio":{"u":-180,"c":["BR"]},"America/Managua":{"u":-360,"c":["NI"]},"America/Manaus":{"u":-240,"c":["BR"]},"America/Marigot":{"a":"America/Puerto_Rico","c":["MF"],"r":1},"America/Martinique":{"u":-240,"c":["MQ"]},"America/Matamoros":{"u":-360,"d":-300,"c":["MX"]},"America/Mazatlan":{"u":-420,"c":["MX"]},"America/Mendoza":{"a":"America/Argentina/Mendoza","r":1},"America/Menominee":{"u":-360,"d":-300,"c":["US"]},"America/Merida":{"u":-360,"c":["MX"]},"America/Metlakatla":{"u":-540,"d":-480,"c":["US"]},"America/Mexico_City":{"u":-360,"c":["MX"]},"America/Miquelon":{"u":-180,"d":-120,"c":["PM"]},"America/Moncton":{"u":-240,"d":-180,"c":["CA"]},"America/Monterrey":{"u":-360,"c":["MX"]},"America/Montevideo":{"u":-180,"c":["UY"]},"America/Montreal":{"a":"America/Toronto","c":["CA"],"r":1},"America/Montserrat":{"a":"America/Puerto_Rico","c":["MS"],"r":1},"America/Nassau":{"a":"America/Toronto","c":["BS"],"r":1},"America/New_York":{"u":-300,"d":-240,"c":["US"]},"America/Nipigon":{"a":"America/Toronto","c":["CA"],"r":1},"America/Nome":{"u":-540,"d":-480,"c":["US"]},"America/Noronha":{"u":-120,"c":["BR"]},"America/North_Dakota/Beulah":{"u":-360,"d":-300,"c":["US"]},"America/North_Dakota/Center":{"u":-360,"d":-300,"c":["US"]},"America/North_Dakota/New_Salem":{"u":-360,"d":-300,"c":["US"]},"America/Nuuk":{"u":-120,"d":-60,"c":["GL"]},"America/Ojinaga":{"u":-360,"d":-300,"c":["MX"]},"America/Panama":{"u":-300,"c":["PA","CA","KY"]},"America/Pangnirtung":{"a":"America/Iqaluit","r":1},"America/Paramaribo":{"u":-180,"c":["SR"]},"America/Phoenix":{"u":-420,"c":["US","CA"]},"America/Port-au-Prince":{"u":-300,"d":-240,"c":["HT"]},"America/Port_of_Spain":{"a":"America/Puerto_Rico","c":["TT"],"r":1},"America/Porto_Acre":{"a":"America/Rio_Branco","r":1},"America/Porto_Velho":{"u":-240,"c":["BR"]},"America/Puerto_Rico":{"u":-240,"c":["PR","AG","CA","AI","AW","BL","BQ","CW","DM","GD","GP","KN","LC","MF","MS","SX","TT","VC","VG","VI"]},"America/Punta_Arenas":{"u":-180,"c":["CL"]},"America/Rainy_River":{"a":"America/Winnipeg","r":1},"America/Rankin_Inlet":{"u":-360,"d":-300,"c":["CA"]},"America/Recife":{"u":-180,"c":["BR"]},"America/Regina":{"u":-360,"c":["CA"]},"America/Resolute":{"u":-360,"d":-300,"c":["CA"]},"America/Rio_Branco":{"u":-300,"c":["BR"]},"America/Rosario":{"a":"America/Argentina/Cordoba","r":1},"America/Santa_Isabel":{"a":"America/Tijuana","r":1},"America/Santarem":{"u":-180,"c":["BR"]},"America/Santiago":{"u":-240,"d":-180,"c":["CL"]},"America/Santo_Domingo":{"u":-240,"c":["DO"]},"America/Sao_Paulo":{"u":-180,"c":["BR"]},"America/Scoresbysund":{"u":-120,"d":-60,"c":["GL"]},"America/Shiprock":{"a":"America/Denver","r":1},"America/Sitka":{"u":-540,"d":-480,"c":["US"]},"America/St_Barthelemy":{"a":"America/Puerto_Rico","c":["BL"],"r":1},"America/St_Johns":{"u":-210,"d":-150,"c":["CA"]},"America/St_Kitts":{"a":"America/Puerto_Rico","c":["KN"],"r":1},"America/St_Lucia":{"a":"America/Puerto_Rico","c":["LC"],"r":1},"America/St_Thomas":{"a":"America/Puerto_Rico","c":["VI"],"r":1},"America/St_Vincent":{"a":"America/Puerto_Rico","c":["VC"],"r":1},"America/Swift_Current":{"u":-360,"c":["CA"]},"America/Tegucigalpa":{"u":-360,"c":["HN"]},"America/Thule":{"u":-240,"d":-180,"c":["GL"]},"America/Thunder_Bay":{"a":"America/Toronto","c":["CA"],"r":1},"America/Tijuana":{"u":-480,"d":-420,"c":["MX"]},"America/Toronto":{"u":-300,"d":-240,"c":["CA","BS"]},"America/Tortola":{"a":"America/Puerto_Rico","c":["VG"],"r":1},"America/Vancouver":{"u":-480,"d":-420,"c":["CA"]},"America/Virgin":{"a":"America/Puerto_Rico","c":["VI"],"r":1},"America/Whitehorse":{"u":-420,"c":["CA"]},"America/Winnipeg":{"u":-360,"d":-300,"c":["CA"]},"America/Yakutat":{"u":-540,"d":-480,"c":["US"]},"America/Yellowknife":{"a":"America/Edmonton","r":1},"Antarctica/Casey":{"u":480,"c":["AQ"]},"Antarctica/Davis":{"u":420,"c":["AQ"]},"Antarctica/DumontDUrville":{"a":"Pacific/Port_Moresby","c":["AQ"],"r":1},"Antarctica/Macquarie":{"u":600,"d":660,"c":["AU"]},"Antarctica/Mawson":{"u":300,"c":["AQ"]},"Antarctica/McMurdo":{"a":"Pacific/Auckland","c":["AQ"],"r":1},"Antarctica/Palmer":{"u":-180,"c":["AQ"]},"Antarctica/Rothera":{"u":-180,"c":["AQ"]},"Antarctica/South_Pole":{"a":"Pacific/Auckland","c":["AQ"],"r":1},"Antarctica/Syowa":{"a":"Asia/Riyadh","c":["AQ"],"r":1},"Antarctica/Troll":{"u":0,"d":120,"c":["AQ"]},"Antarctica/Vostok":{"u":300,"c":["AQ"]},"Arctic/Longyearbyen":{"a":"Europe/Berlin","c":["SJ"],"r":1},"Asia/Aden":{"a":"Asia/Riyadh","c":["YE"],"r":1},"Asia/Almaty":{"u":300,"c":["KZ"]},"Asia/Amman":{"u":180,"c":["JO"]},"Asia/Anadyr":{"u":720,"c":["RU"]},"Asia/Aqtau":{"u":300,"c":["KZ"]},"Asia/Aqtobe":{"u":300,"c":["KZ"]},"Asia/Ashgabat":{"u":300,"c":["TM"]},"Asia/Ashkhabad":{"a":"Asia/Ashgabat","r":1},"Asia/Atyrau":{"u":300,"c":["KZ"]},"Asia/Baghdad":{"u":180,"c":["IQ"]},"Asia/Bahrain":{"a":"Asia/Qatar","c":["BH"],"r":1},"Asia/Baku":{"u":240,"c":["AZ"]},"Asia/Bangkok":{"u":420,"c":["TH","CX","KH","LA","VN"]},"Asia/Barnaul":{"u":420,"c":["RU"]},"Asia/Beirut":{"u":120,"d":180,"c":["LB"]},"Asia/Bishkek":{"u":360,"c":["KG"]},"Asia/Brunei":{"a":"Asia/Kuching","c":["BN"],"r":1},"Asia/Calcutta":{"a":"Asia/Kolkata","r":1},"Asia/Chita":{"u":540,"c":["RU"]},"Asia/Choibalsan":{"a":"Asia/Ulaanbaatar","r":1},"Asia/Chongqing":{"a":"Asia/Shanghai","r":1},"Asia/Chungking":{"a":"Asia/Shanghai","r":1},"Asia/Colombo":{"u":330,"c":["LK"]},"Asia/Dacca":{"a":"Asia/Dhaka","r":1},"Asia/Damascus":{"u":180,"c":["SY"]},"Asia/Dhaka":{"u":360,"c":["BD"]},"Asia/Dili":{"u":540,"c":["TL"]},"Asia/Dubai":{"u":240,"c":["AE","OM","RE","SC","TF"]},"Asia/Dushanbe":{"u":300,"c":["TJ"]},"Asia/Famagusta":{"u":120,"d":180,"c":["CY"]},"Asia/Gaza":{"u":120,"d":180,"c":["PS"]},"Asia/Harbin":{"a":"Asia/Shanghai","r":1},"Asia/Hebron":{"u":120,"d":180,"c":["PS"]},"Asia/Ho_Chi_Minh":{"u":420,"c":["VN"]},"Asia/Hong_Kong":{"u":480,"c":["HK"]},"Asia/Hovd":{"u":420,"c":["MN"]},"Asia/Irkutsk":{"u":480,"c":["RU"]},"Asia/Istanbul":{"a":"Europe/Istanbul","r":1},"Asia/Jakarta":{"u":420,"c":["ID"]},"Asia/Jayapura":{"u":540,"c":["ID"]},"Asia/Jerusalem":{"u":120,"d":180,"c":["IL"]},"Asia/Kabul":{"u":270,"c":["AF"]},"Asia/Kamchatka":{"u":720,"c":["RU"]},"Asia/Karachi":{"u":300,"c":["PK"]},"Asia/Kashgar":{"a":"Asia/Urumqi","r":1},"Asia/Kathmandu":{"u":345,"c":["NP"]},"Asia/Katmandu":{"a":"Asia/Kathmandu","r":1},"Asia/Khandyga":{"u":540,"c":["RU"]},"Asia/Kolkata":{"u":330,"c":["IN"]},"Asia/Krasnoyarsk":{"u":420,"c":["RU"]},"Asia/Kuala_Lumpur":{"a":"Asia/Singapore","c":["MY"],"r":1},"Asia/Kuching":{"u":480,"c":["MY","BN"]},"Asia/Kuwait":{"a":"Asia/Riyadh","c":["KW"],"r":1},"Asia/Macao":{"a":"Asia/Macau","r":1},"Asia/Macau":{"u":480,"c":["MO"]},"Asia/Magadan":{"u":660,"c":["RU"]},"Asia/Makassar":{"u":480,"c":["ID"]},"Asia/Manila":{"u":480,"c":["PH"]},"Asia/Muscat":{"a":"Asia/Dubai","c":["OM"],"r":1},"Asia/Nicosia":{"u":120,"d":180,"c":["CY"]},"Asia/Novokuznetsk":{"u":420,"c":["RU"]},"Asia/Novosibirsk":{"u":420,"c":["RU"]},"Asia/Omsk":{"u":360,"c":["RU"]},"Asia/Oral":{"u":300,"c":["KZ"]},"Asia/Phnom_Penh":{"a":"Asia/Bangkok","c":["KH"],"r":1},"Asia/Pontianak":{"u":420,"c":["ID"]},"Asia/Pyongyang":{"u":540,"c":["KP"]},"Asia/Qatar":{"u":180,"c":["QA","BH"]},"Asia/Qostanay":{"u":300,"c":["KZ"]},"Asia/Qyzylorda":{"u":300,"c":["KZ"]},"Asia/Rangoon":{"a":"Asia/Yangon","c":["MM"],"r":1},"Asia/Riyadh":{"u":180,"c":["SA","AQ","KW","YE"]},"Asia/Saigon":{"a":"Asia/Ho_Chi_Minh","r":1},"Asia/Sakhalin":{"u":660,"c":["RU"]},"Asia/Samarkand":{"u":300,"c":["UZ"]},"Asia/Seoul":{"u":540,"c":["KR"]},"Asia/Shanghai":{"u":480,"c":["CN"]},"Asia/Singapore":{"u":480,"c":["SG","AQ","MY"]},"Asia/Srednekolymsk":{"u":660,"c":["RU"]},"Asia/Taipei":{"u":480,"c":["TW"]},"Asia/Tashkent":{"u":300,"c":["UZ"]},"Asia/Tbilisi":{"u":240,"c":["GE"]},"Asia/Tehran":{"u":210,"c":["IR"]},"Asia/Tel_Aviv":{"a":"Asia/Jerusalem","r":1},"Asia/Thimbu":{"a":"Asia/Thimphu","r":1},"Asia/Thimphu":{"u":360,"c":["BT"]},"Asia/Tokyo":{"u":540,"c":["JP","AU"]},"Asia/Tomsk":{"u":420,"c":["RU"]},"Asia/Ujung_Pandang":{"a":"Asia/Makassar","r":1},"Asia/Ulaanbaatar":{"u":480,"c":["MN"]},"Asia/Ulan_Bator":{"a":"Asia/Ulaanbaatar","r":1},"Asia/Urumqi":{"u":360,"c":["CN"]},"Asia/Ust-Nera":{"u":600,"c":["RU"]},"Asia/Vientiane":{"a":"Asia/Bangkok","c":["LA"],"r":1},"Asia/Vladivostok":{"u":600,"c":["RU"]},"Asia/Yakutsk":{"u":540,"c":["RU"]},"Asia/Yangon":{"u":390,"c":["MM","CC"]},"Asia/Yekaterinburg":{"u":300,"c":["RU"]},"Asia/Yerevan":{"u":240,"c":["AM"]},"Atlantic/Azores":{"u":-60,"d":0,"c":["PT"]},"Atlantic/Bermuda":{"u":-240,"d":-180,"c":["BM"]},"Atlantic/Canary":{"u":0,"d":60,"c":["ES"]},"Atlantic/Cape_Verde":{"u":-60,"c":["CV"]},"Atlantic/Faeroe":{"a":"Atlantic/Faroe","r":1},"Atlantic/Faroe":{"u":0,"d":60,"c":["FO"]},"Atlantic/Jan_Mayen":{"a":"Europe/Berlin","c":["SJ"],"r":1},"Atlantic/Madeira":{"u":0,"d":60,"c":["PT"]},"Atlantic/Reykjavik":{"a":"Africa/Abidjan","c":["IS"],"r":1},"Atlantic/South_Georgia":{"u":-120,"c":["GS"]},"Atlantic/St_Helena":{"a":"Africa/Abidjan","c":["SH"],"r":1},"Atlantic/Stanley":{"u":-180,"c":["FK"]},"Australia/ACT":{"a":"Australia/Sydney","r":1},"Australia/Adelaide":{"u":570,"d":630,"c":["AU"]},"Australia/Brisbane":{"u":600,"c":["AU"]},"Australia/Broken_Hill":{"u":570,"d":630,"c":["AU"]},"Australia/Canberra":{"a":"Australia/Sydney","r":1},"Australia/Currie":{"a":"Australia/Hobart","r":1},"Australia/Darwin":{"u":570,"c":["AU"]},"Australia/Eucla":{"u":525,"c":["AU"]},"Australia/Hobart":{"u":600,"d":660,"c":["AU"]},"Australia/LHI":{"a":"Australia/Lord_Howe","r":1},"Australia/Lindeman":{"u":600,"c":["AU"]},"Australia/Lord_Howe":{"u":630,"d":660,"c":["AU"]},"Australia/Melbourne":{"u":600,"d":660,"c":["AU"]},"Australia/NSW":{"a":"Australia/Sydney","r":1},"Australia/North":{"a":"Australia/Darwin","r":1},"Australia/Perth":{"u":480,"c":["AU"]},"Australia/Queensland":{"a":"Australia/Brisbane","r":1},"Australia/South":{"a":"Australia/Adelaide","r":1},"Australia/Sydney":{"u":600,"d":660,"c":["AU"]},"Australia/Tasmania":{"a":"Australia/Hobart","r":1},"Australia/Victoria":{"a":"Australia/Melbourne","r":1},"Australia/West":{"a":"Australia/Perth","r":1},"Australia/Yancowinna":{"a":"Australia/Broken_Hill","r":1},"Brazil/Acre":{"a":"America/Rio_Branco","r":1},"Brazil/DeNoronha":{"a":"America/Noronha","r":1},"Brazil/East":{"a":"America/Sao_Paulo","r":1},"Brazil/West":{"a":"America/Manaus","r":1},"CET":{"a":"Europe/Brussels","r":1},"CST6CDT":{"a":"America/Chicago","r":1},"Canada/Atlantic":{"a":"America/Halifax","r":1},"Canada/Central":{"a":"America/Winnipeg","r":1},"Canada/Eastern":{"a":"America/Toronto","c":["CA"],"r":1},"Canada/Mountain":{"a":"America/Edmonton","r":1},"Canada/Newfoundland":{"a":"America/St_Johns","r":1},"Canada/Pacific":{"a":"America/Vancouver","r":1},"Canada/Saskatchewan":{"a":"America/Regina","r":1},"Canada/Yukon":{"a":"America/Whitehorse","r":1},"Chile/Continental":{"a":"America/Santiago","r":1},"Chile/EasterIsland":{"a":"Pacific/Easter","r":1},"Cuba":{"a":"America/Havana","r":1},"EET":{"a":"Europe/Athens","r":1},"EST":{"a":"America/Panama","r":1},"EST5EDT":{"a":"America/New_York","r":1},"Egypt":{"a":"Africa/Cairo","r":1},"Eire":{"a":"Europe/Dublin","r":1},"Etc/GMT":{"u":0},"Etc/GMT+0":{"a":"Etc/GMT","r":1},"Etc/GMT+1":{"u":-60},"Etc/GMT+10":{"u":-600},"Etc/GMT+11":{"u":-660},"Etc/GMT+12":{"u":-720},"Etc/GMT+2":{"u":-120},"Etc/GMT+3":{"u":-180},"Etc/GMT+4":{"u":-240},"Etc/GMT+5":{"u":-300},"Etc/GMT+6":{"u":-360},"Etc/GMT+7":{"u":-420},"Etc/GMT+8":{"u":-480},"Etc/GMT+9":{"u":-540},"Etc/GMT-0":{"a":"Etc/GMT","r":1},"Etc/GMT-1":{"u":60},"Etc/GMT-10":{"u":600},"Etc/GMT-11":{"u":660},"Etc/GMT-12":{"u":720},"Etc/GMT-13":{"u":780},"Etc/GMT-14":{"u":840},"Etc/GMT-2":{"u":120},"Etc/GMT-3":{"u":180},"Etc/GMT-4":{"u":240},"Etc/GMT-5":{"u":300},"Etc/GMT-6":{"u":360},"Etc/GMT-7":{"u":420},"Etc/GMT-8":{"u":480},"Etc/GMT-9":{"u":540},"Etc/GMT0":{"a":"Etc/GMT","r":1},"Etc/Greenwich":{"a":"Etc/GMT","r":1},"Etc/UCT":{"a":"Etc/UTC","r":1},"Etc/UTC":{"u":0},"Etc/Universal":{"a":"Etc/UTC","r":1},"Etc/Zulu":{"a":"Etc/UTC","r":1},"Europe/Amsterdam":{"a":"Europe/Brussels","c":["NL"],"r":1},"Europe/Andorra":{"u":60,"d":120,"c":["AD"]},"Europe/Astrakhan":{"u":240,"c":["RU"]},"Europe/Athens":{"u":120,"d":180,"c":["GR"]},"Europe/Belfast":{"a":"Europe/London","c":["GB"],"r":1},"Europe/Belgrade":{"u":60,"d":120,"c":["RS","BA","HR","ME","MK","SI"]},"Europe/Berlin":{"u":60,"d":120,"c":["DE","DK","NO","SE","SJ"]},"Europe/Bratislava":{"a":"Europe/Prague","c":["SK"],"r":1},"Europe/Brussels":{"u":60,"d":120,"c":["BE","LU","NL"]},"Europe/Bucharest":{"u":120,"d":180,"c":["RO"]},"Europe/Budapest":{"u":60,"d":120,"c":["HU"]},"Europe/Busingen":{"a":"Europe/Zurich","c":["DE"],"r":1},"Europe/Chisinau":{"u":120,"d":180,"c":["MD"]},"Europe/Copenhagen":{"a":"Europe/Berlin","c":["DK"],"r":1},"Europe/Dublin":{"u":0,"d":60,"c":["IE"]},"Europe/Gibraltar":{"u":60,"d":120,"c":["GI"]},"Europe/Guernsey":{"a":"Europe/London","c":["GG"],"r":1},"Europe/Helsinki":{"u":120,"d":180,"c":["FI","AX"]},"Europe/Isle_of_Man":{"a":"Europe/London","c":["IM"],"r":1},"Europe/Istanbul":{"u":180,"c":["TR"]},"Europe/Jersey":{"a":"Europe/London","c":["JE"],"r":1},"Europe/Kaliningrad":{"u":120,"c":["RU"]},"Europe/Kiev":{"a":"Europe/Kyiv","r":1},"Europe/Kirov":{"u":180,"c":["RU"]},"Europe/Kyiv":{"u":120,"d":180,"c":["UA"]},"Europe/Lisbon":{"u":0,"d":60,"c":["PT"]},"Europe/Ljubljana":{"a":"Europe/Belgrade","c":["SI"],"r":1},"Europe/London":{"u":0,"d":60,"c":["GB","GG","IM","JE"]},"Europe/Luxembourg":{"a":"Europe/Brussels","c":["LU"],"r":1},"Europe/Madrid":{"u":60,"d":120,"c":["ES"]},"Europe/Malta":{"u":60,"d":120,"c":["MT"]},"Europe/Mariehamn":{"a":"Europe/Helsinki","c":["AX"],"r":1},"Europe/Minsk":{"u":180,"c":["BY"]},"Europe/Monaco":{"a":"Europe/Paris","c":["MC"],"r":1},"Europe/Moscow":{"u":180,"c":["RU"]},"Europe/Nicosia":{"a":"Asia/Nicosia","r":1},"Europe/Oslo":{"a":"Europe/Berlin","c":["NO"],"r":1},"Europe/Paris":{"u":60,"d":120,"c":["FR","MC"]},"Europe/Podgorica":{"a":"Europe/Belgrade","c":["ME"],"r":1},"Europe/Prague":{"u":60,"d":120,"c":["CZ","SK"]},"Europe/Riga":{"u":120,"d":180,"c":["LV"]},"Europe/Rome":{"u":60,"d":120,"c":["IT","SM","VA"]},"Europe/Samara":{"u":240,"c":["RU"]},"Europe/San_Marino":{"a":"Europe/Rome","c":["SM"],"r":1},"Europe/Sarajevo":{"a":"Europe/Belgrade","c":["BA"],"r":1},"Europe/Saratov":{"u":240,"c":["RU"]},"Europe/Simferopol":{"u":180,"c":["RU","UA"]},"Europe/Skopje":{"a":"Europe/Belgrade","c":["MK"],"r":1},"Europe/Sofia":{"u":120,"d":180,"c":["BG"]},"Europe/Stockholm":{"a":"Europe/Berlin","c":["SE"],"r":1},"Europe/Tallinn":{"u":120,"d":180,"c":["EE"]},"Europe/Tirane":{"u":60,"d":120,"c":["AL"]},"Europe/Tiraspol":{"a":"Europe/Chisinau","r":1},"Europe/Ulyanovsk":{"u":240,"c":["RU"]},"Europe/Uzhgorod":{"a":"Europe/Kyiv","r":1},"Europe/Vaduz":{"a":"Europe/Zurich","c":["LI"],"r":1},"Europe/Vatican":{"a":"Europe/Rome","c":["VA"],"r":1},"Europe/Vienna":{"u":60,"d":120,"c":["AT"]},"Europe/Vilnius":{"u":120,"d":180,"c":["LT"]},"Europe/Volgograd":{"u":180,"c":["RU"]},"Europe/Warsaw":{"u":60,"d":120,"c":["PL"]},"Europe/Zagreb":{"a":"Europe/Belgrade","c":["HR"],"r":1},"Europe/Zaporozhye":{"a":"Europe/Kyiv","r":1},"Europe/Zurich":{"u":60,"d":120,"c":["CH","DE","LI"]},"Factory":{"u":0},"GB":{"a":"Europe/London","c":["GB"],"r":1},"GB-Eire":{"a":"Europe/London","c":["GB"],"r":1},"GMT":{"a":"Etc/GMT","r":1},"GMT+0":{"a":"Etc/GMT","r":1},"GMT-0":{"a":"Etc/GMT","r":1},"GMT0":{"a":"Etc/GMT","r":1},"Greenwich":{"a":"Etc/GMT","r":1},"HST":{"a":"Pacific/Honolulu","r":1},"Hongkong":{"a":"Asia/Hong_Kong","r":1},"Iceland":{"a":"Africa/Abidjan","c":["IS"],"r":1},"Indian/Antananarivo":{"a":"Africa/Nairobi","c":["MG"],"r":1},"Indian/Chagos":{"u":360,"c":["IO"]},"Indian/Christmas":{"a":"Asia/Bangkok","c":["CX"],"r":1},"Indian/Cocos":{"a":"Asia/Yangon","c":["CC"],"r":1},"Indian/Comoro":{"a":"Africa/Nairobi","c":["KM"],"r":1},"Indian/Kerguelen":{"a":"Indian/Maldives","c":["TF","HM"],"r":1},"Indian/Mahe":{"a":"Asia/Dubai","c":["SC"],"r":1},"Indian/Maldives":{"u":300,"c":["MV","TF"]},"Indian/Mauritius":{"u":240,"c":["MU"]},"Indian/Mayotte":{"a":"Africa/Nairobi","c":["YT"],"r":1},"Indian/Reunion":{"a":"Asia/Dubai","c":["RE"],"r":1},"Iran":{"a":"Asia/Tehran","r":1},"Israel":{"a":"Asia/Jerusalem","r":1},"Jamaica":{"a":"America/Jamaica","r":1},"Japan":{"a":"Asia/Tokyo","c":["JP"],"r":1},"Kwajalein":{"a":"Pacific/Kwajalein","r":1},"Libya":{"a":"Africa/Tripoli","r":1},"MET":{"a":"Europe/Brussels","r":1},"MST":{"a":"America/Phoenix","r":1},"MST7MDT":{"a":"America/Denver","r":1},"Mexico/BajaNorte":{"a":"America/Tijuana","r":1},"Mexico/BajaSur":{"a":"America/Mazatlan","r":1},"Mexico/General":{"a":"America/Mexico_City","r":1},"NZ":{"a":"Pacific/Auckland","c":["NZ"],"r":1},"NZ-CHAT":{"a":"Pacific/Chatham","r":1},"Navajo":{"a":"America/Denver","r":1},"PRC":{"a":"Asia/Shanghai","r":1},"PST8PDT":{"a":"America/Los_Angeles","r":1},"Pacific/Apia":{"u":780,"c":["WS"]},"Pacific/Auckland":{"u":720,"d":780,"c":["NZ","AQ"]},"Pacific/Bougainville":{"u":660,"c":["PG"]},"Pacific/Chatham":{"u":765,"d":825,"c":["NZ"]},"Pacific/Chuuk":{"a":"Pacific/Port_Moresby","c":["FM"],"r":1},"Pacific/Easter":{"u":-360,"d":-300,"c":["CL"]},"Pacific/Efate":{"u":660,"c":["VU"]},"Pacific/Enderbury":{"a":"Pacific/Kanton","r":1},"Pacific/Fakaofo":{"u":780,"c":["TK"]},"Pacific/Fiji":{"u":720,"c":["FJ"]},"Pacific/Funafuti":{"a":"Pacific/Tarawa","c":["TV"],"r":1},"Pacific/Galapagos":{"u":-360,"c":["EC"]},"Pacific/Gambier":{"u":-540,"c":["PF"]},"Pacific/Guadalcanal":{"u":660,"c":["SB","FM"]},"Pacific/Guam":{"u":600,"c":["GU","MP"]},"Pacific/Honolulu":{"u":-600,"c":["US"]},"Pacific/Johnston":{"a":"Pacific/Honolulu","c":["UM"],"r":1},"Pacific/Kanton":{"u":780,"c":["KI"]},"Pacific/Kiritimati":{"u":840,"c":["KI"]},"Pacific/Kosrae":{"u":660,"c":["FM"]},"Pacific/Kwajalein":{"u":720,"c":["MH"]},"Pacific/Majuro":{"a":"Pacific/Tarawa","c":["MH"],"r":1},"Pacific/Marquesas":{"u":-570,"c":["PF"]},"Pacific/Midway":{"a":"Pacific/Pago_Pago","c":["UM"],"r":1},"Pacific/Nauru":{"u":720,"c":["NR"]},"Pacific/Niue":{"u":-660,"c":["NU"]},"Pacific/Norfolk":{"u":660,"d":720,"c":["NF"]},"Pacific/Noumea":{"u":660,"c":["NC"]},"Pacific/Pago_Pago":{"u":-660,"c":["AS","UM"]},"Pacific/Palau":{"u":540,"c":["PW"]},"Pacific/Pitcairn":{"u":-480,"c":["PN"]},"Pacific/Pohnpei":{"a":"Pacific/Guadalcanal","c":["FM"],"r":1},"Pacific/Ponape":{"a":"Pacific/Guadalcanal","c":["FM"],"r":1},"Pacific/Port_Moresby":{"u":600,"c":["PG","AQ","FM"]},"Pacific/Rarotonga":{"u":-600,"c":["CK"]},"Pacific/Saipan":{"a":"Pacific/Guam","c":["MP"],"r":1},"Pacific/Samoa":{"a":"Pacific/Pago_Pago","c":["AS"],"r":1},"Pacific/Tahiti":{"u":-600,"c":["PF"]},"Pacific/Tarawa":{"u":720,"c":["KI","MH","TV","UM","WF"]},"Pacific/Tongatapu":{"u":780,"c":["TO"]},"Pacific/Truk":{"a":"Pacific/Port_Moresby","c":["FM"],"r":1},"Pacific/Wake":{"a":"Pacific/Tarawa","c":["UM"],"r":1},"Pacific/Wallis":{"a":"Pacific/Tarawa","c":["WF"],"r":1},"Pacific/Yap":{"a":"Pacific/Port_Moresby","c":["FM"],"r":1},"Poland":{"a":"Europe/Warsaw","r":1},"Portugal":{"a":"Europe/Lisbon","r":1},"ROC":{"a":"Asia/Taipei","r":1},"ROK":{"a":"Asia/Seoul","r":1},"Singapore":{"a":"Asia/Singapore","c":["SG"],"r":1},"Turkey":{"a":"Europe/Istanbul","r":1},"UCT":{"a":"Etc/UTC","r":1},"US/Alaska":{"a":"America/Anchorage","r":1},"US/Aleutian":{"a":"America/Adak","r":1},"US/Arizona":{"a":"America/Phoenix","c":["US"],"r":1},"US/Central":{"a":"America/Chicago","r":1},"US/East-Indiana":{"a":"America/Indiana/Indianapolis","r":1},"US/Eastern":{"a":"America/New_York","r":1},"US/Hawaii":{"a":"Pacific/Honolulu","r":1},"US/Indiana-Starke":{"a":"America/Indiana/Knox","r":1},"US/Michigan":{"a":"America/Detroit","r":1},"US/Mountain":{"a":"America/Denver","r":1},"US/Pacific":{"a":"America/Los_Angeles","r":1},"US/Samoa":{"a":"Pacific/Pago_Pago","c":["AS"],"r":1},"UTC":{"a":"Etc/UTC","r":1},"Universal":{"a":"Etc/UTC","r":1},"W-SU":{"a":"Europe/Moscow","r":1},"WET":{"a":"Europe/Lisbon","r":1},"Zulu":{"a":"Etc/UTC","r":1}}')},f;function y(r,a){let i=r.countries[a];if(!i)return null;let e=G(r)[a]||{};return{id:a,name:i,timezones:e.current||[],allTimezones:e.all||[]}}function G(r){return f||(f=R(r)),f}function R(r){return Object.keys(r.timezones).reduce((a,i)=>{let e=r.timezones[i],{c,a:n}=e,u=r.timezones[n]||{},A=c||u.c;if(!A)return a;for(let s of A)a[s]||Object.assign(a,{[s]:{current:[],all:[]}}),e.r===void 0&&a[s].current.push(i),a[s].all.push(i);return a},{})}function B(r,a){let i=r.timezones[a];if(!i)return null;let{a:e=null}=i,c={...e?r.timezones[e]:{},...r.timezones[a]},n=c.c||[],u=c.u,A=Number.isInteger(c.d)?c.d:u,s={name:a,countries:n,utcOffset:u,utcOffsetStr:E(u),dstOffset:A,dstOffsetStr:E(A),aliasOf:e};return i.r&&(s.deprecated=!0),s}function E(r){let a=Math.floor(Math.abs(r)/60),i=r%60;return`${r<0?"-":"+"}${p(a)}:${p(i)}`}function p(r){let a=Math.abs(r);return`${a<10?"0":""}${a}`}var x=Object.keys(h.timezones).length,g={},l={},w=0;function U(r,a={}){return g[r]||k(y(h,r)),N(g[r],a)}function k(r){r&&(g[r.id]=r)}function I(r){return l[r]||_(B(h,r)),l[r]?{...l[r]}:null}function _(r){r&&(l[r.name]=r,w=Object.keys(r).length)}function L(r,a={}){return((I(r)||{}).countries||[]).map(i=>U(i,a))}function T(r,a={}){let[i]=L(r,a);return i||null}function N(r,a){if(!r)return null;let{deprecated:i}=a||{},{allTimezones:e,...c}=r,n=i?r.allTimezones:r.timezones;return{...c,timezones:n}}function v(r){let a=r.get("ref"),i=r.get("source"),e=r.get("utm_source"),c=r.get("utm_medium"),n=r.get("utm_term"),u=r.get("utm_campaign"),A=r.get("utm_content");return{source:a||i||e||null,medium:c||null,url:window.document.referrer||null,utmSource:e||null,utmMedium:c||null,utmTerm:n||null,utmCampaign:u||null,utmContent:A||null}}function M(r){let a=new URL(r||window.location.href),i=a.searchParams;return a.hash&&a.hash.includes("#/portal")&&(i=new URL(a.href.replace("/#/portal","")).searchParams),v(i)}function K(r){let{source:a,medium:i,url:e}=r,c=a||i||e||null;if(c)try{let n=new URL(c).hostname,u=window.location.hostname;if(n===u)return null}catch{return c}return c}function C(r){let a=M(r);return K(a)}var D=["username","user","user_id","userid","password","pass","pin","passcode","token","api_token","email","address","phone","sex","gender","order","order_id","orderid","payment","credit_card"];function P(r,a=D){let i=JSON.stringify(r);return a.forEach(e=>{i=i.replace(new RegExp(`("${e}"):(".+?"|\\d+)`,"mgi"),'$1:"********"')}),i}function b(r,a={},i=!0){if(i){let e=P(r),c=Object.assign({},JSON.parse(e),a);return JSON.stringify(c)}else{let e=Object.assign({},r,a),c=P(e);return JSON.parse(c)}}var m=class{constructor(a=globalThis.window,i=globalThis.document){this.window=a,this.document=i}getNavigator(){return this.window?.navigator}getLocation(){return this.window?.location}getTimezone(){return this.window?.Intl?.DateTimeFormat().resolvedOptions().timeZone}getCurrentScript(){return this.document?.currentScript}getVisibilityState(){return this.document?.visibilityState}setTimeout(a,i){return this.window?.setTimeout(a,i)}clearTimeout(a){return this.window?.clearTimeout(a)}addEventListener(a,i,e){if(!["window","document"].includes(a))throw new TypeError(`BrowserService.addEventListener: unknown target "${a}". Expected "window" or "document".`);a==="window"?this.window?.addEventListener(i,e):a==="document"&&this.document?.addEventListener(i,e)}removeEventListener(a,i,e){if(!["window","document"].includes(a))throw new TypeError(`BrowserService.removeEventListener: unknown target "${a}". Expected "window" or "document".`);a==="window"?this.window?.removeEventListener(i,e):a==="document"&&this.document?.removeEventListener(i,e)}isTestEnvironment(){return this.window?.__GHOST_SYNTHETIC_MONITORING__===!0?!1:!!(this.window&&(this.window.__nightmare||this.window.navigator?.webdriver||this.window.Cypress))}fetch(a,i){return this.window?.fetch(a,i)}wrapHistoryMethod(a,i){if(this.window?.history?.[a]?.__ghostWrapped)return;let e=this.window?.history?.[a];e&&(this.window.history[a]=(...c)=>{let n=e.apply(this.window.history,c);return i(),n},this.window.history[a].__ghostWrapped=!0)}};var H="analytics_events",t={host:null,token:null,domain:null,datasource:H,stringifyPayload:!0,globalAttributes:{}},S=class{constructor(a=new m){this.browser=a,this.isListenersAttached=!1}get isTestEnv(){return this.browser.isTestEnvironment()}initConfig(){let a=this.browser.getCurrentScript();if(!a)return!1;t.host=a.getAttribute("data-host"),t.token=a.getAttribute("data-token")||null,t.domain=a.getAttribute("data-domain"),t.datasource=a.getAttribute("data-datasource")||t.datasource,t.stringifyPayload=a.getAttribute("data-stringify-payload")!=="false";for(let i of a.attributes)i.name.startsWith("tb_")&&(t.globalAttributes[i.name.slice(3)]=i.value);return!!t.host}generateUUID(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,a=>{let i=Math.random()*16|0;return(a==="x"?i:i&3|8).toString(16)})}async trackEvent(a,i){try{if(!t.host)throw new Error("Missing required configuration (host)");let e=`${t.host}?name=${encodeURIComponent(t.datasource)}`;t.token&&(e+=`&token=${encodeURIComponent(t.token)}`),i.event_id=this.generateUUID();let c=b(i,t.globalAttributes,t.stringifyPayload),n={timestamp:new Date().toISOString(),action:a,version:"1",payload:c},u=new AbortController,A=this.browser.setTimeout(()=>u.abort(),5e3),s={"Content-Type":"application/json"};t.globalAttributes?.site_uuid&&(s["x-site-uuid"]=t.globalAttributes.site_uuid);let d=await this.browser.fetch(e,{method:"POST",headers:s,body:JSON.stringify(n),signal:u.signal});if(this.browser.clearTimeout(A),!d.ok)throw new Error(`HTTP error! Status: ${d.status}`);return d}catch(e){let c=this.browser.getLocation();return(c?.hostname==="localhost"||c?.hostname==="127.0.0.1")&&console.error("Ghost Stats error:",e),null}}getLocationInfo(){try{let a=this.browser.getTimezone(),i=a?T(a):null,e=this.browser.getNavigator(),c=e?.languages?.[0]||e?.language||"en";return{country:i?i.id:null,locale:c}}catch{return{country:null,locale:"en"}}}trackPageHit(){if(this.isTestEnv)return;let{country:a,locale:i}=this.getLocationInfo(),e=this.browser.getNavigator(),c=this.browser.getLocation(),n=M(c?.href);n.url=C(c?.href)||n.url,this.browser.setTimeout(()=>{this.trackEvent("page_hit",{"user-agent":e?.userAgent,locale:i,location:a,parsedReferrer:{url:n.url,source:n.source,medium:n.medium},pathname:c?.pathname,href:c?.href,utm_source:n.utmSource,utm_medium:n.utmMedium,utm_campaign:n.utmCampaign,utm_term:n.utmTerm,utm_content:n.utmContent})},300)}setupEventListeners(){if(!this.isListenersAttached){if(this.browser.getVisibilityState()!=="hidden")this.trackPageHit();else{let a=()=>{this.browser.getVisibilityState()==="visible"&&(this.trackPageHit(),this.browser.removeEventListener("document","visibilitychange",a))};this.browser.addEventListener("document","visibilitychange",a)}this.isListenersAttached=!0}}init(){return this.isTestEnv||this.browser.window&&this.browser.window.self!==this.browser.window.top?!1:this.initConfig()?(this.browser.window&&(this.browser.window.Tinybird={trackEvent:(i,e)=>this.trackEvent(i,e),_trackPageHit:()=>this.trackPageHit()}),this.setupEventListeners(),!0):(console.warn("Ghost Stats: Missing required configuration"),!1)}},o=new S;o.init();var Y=()=>o.isTestEnv,Q=o.initConfig.bind(o),X=o.trackEvent.bind(o),q=o.getLocationInfo.bind(o),$=o.trackPageHit.bind(o),aa=o.setupEventListeners.bind(o),ra=o.init.bind(o),ia=o;})();
|
|
@@ -1,91 +1,166 @@
|
|
|
1
1
|
const debug = require('@tryghost/debug')('card-assets');
|
|
2
|
+
const errors = require('@tryghost/errors');
|
|
2
3
|
const _ = require('lodash');
|
|
4
|
+
const crypto = require('crypto');
|
|
5
|
+
const fs = require('fs');
|
|
3
6
|
const path = require('path');
|
|
4
7
|
const config = require('../../../shared/config');
|
|
5
|
-
const Minifier = require('./minifier');
|
|
6
|
-
const AssetsMinificationBase = require('./assets-minification-base');
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
// Must match the asset-hash service so both flavours of ?v= look alike
|
|
10
|
+
const HASH_LENGTH = 16;
|
|
11
|
+
|
|
12
|
+
// Each type maps card names to minified chunks; anything else still indexes
|
|
13
|
+
// and concatenates, serving garbage under a valid content hash
|
|
14
|
+
const isChunkMap = chunks => _.isPlainObject(chunks) &&
|
|
15
|
+
Object.values(chunks).every(chunk => typeof chunk === 'string');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Card assets are built ahead of time by scripts/build-card-assets.mjs, which
|
|
19
|
+
* minifies every card's CSS/JS into a manifest. The only per-site variable is
|
|
20
|
+
* which cards the active theme asked for, so serving is a matter of picking
|
|
21
|
+
* chunks out of the manifest and concatenating them.
|
|
22
|
+
*
|
|
23
|
+
* Keeping this in memory (rather than minifying to content/public on first
|
|
24
|
+
* request, as Ghost used to) means the bundle — and the content hash we put in
|
|
25
|
+
* its ?v= — is identical for every process serving a given theme, so caches
|
|
26
|
+
* survive restarts and are shared across instances.
|
|
27
|
+
*/
|
|
28
|
+
module.exports = class CardAssets {
|
|
9
29
|
constructor(options = {}) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
this.src = options.src || path.join(config.get('paths').assetSrc, 'cards');
|
|
13
|
-
this.dest = options.dest || config.getContentPath('public');
|
|
14
|
-
this.minifier = new Minifier({src: this.src, dest: this.dest});
|
|
30
|
+
this.manifestPath = options.manifest || path.join(config.get('paths').publicFilePath, 'cards.manifest.json');
|
|
15
31
|
|
|
16
32
|
if ('config' in options) {
|
|
17
33
|
this.config = options.config;
|
|
18
34
|
}
|
|
19
35
|
|
|
20
|
-
|
|
36
|
+
// Read eagerly so a broken build fails at boot rather than at render time
|
|
37
|
+
this.manifest = this.readManifest();
|
|
38
|
+
this.bundles = new Map();
|
|
21
39
|
}
|
|
22
40
|
|
|
23
41
|
/**
|
|
24
|
-
* @
|
|
42
|
+
* @returns {{css?: Object<string, string>, js?: Object<string, string>}}
|
|
25
43
|
*/
|
|
26
|
-
|
|
44
|
+
readManifest() {
|
|
45
|
+
let reason;
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
const manifest = JSON.parse(fs.readFileSync(this.manifestPath, 'utf8'));
|
|
49
|
+
|
|
50
|
+
// Well-formed JSON isn't necessarily a manifest
|
|
51
|
+
if (!_.isPlainObject(manifest)) {
|
|
52
|
+
reason = `Expected an object, got ${JSON.stringify(manifest).slice(0, 50)}`;
|
|
53
|
+
} else {
|
|
54
|
+
const present = ['css', 'js'].filter(type => type in manifest);
|
|
55
|
+
const badType = present.find(type => !isChunkMap(manifest[type]));
|
|
56
|
+
|
|
57
|
+
if (!present.length) {
|
|
58
|
+
reason = 'Expected at least one of `css` or `js`';
|
|
59
|
+
} else if (badType) {
|
|
60
|
+
reason = `Expected \`${badType}\` to map card names to minified chunks`;
|
|
61
|
+
} else {
|
|
62
|
+
return manifest;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
} catch (err) {
|
|
66
|
+
reason = err.message;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
throw new errors.InternalServerError({
|
|
70
|
+
message: `Could not use the card asset manifest at ${this.manifestPath}`,
|
|
71
|
+
context: reason,
|
|
72
|
+
help: 'Card assets ship with Ghost — reinstall, or run `pnpm build:assets` when running from source'
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Resolve the theme's `card_assets` config against the cards this Ghost
|
|
78
|
+
* version actually ships
|
|
79
|
+
*
|
|
80
|
+
* @param {'css'|'js'} type
|
|
81
|
+
* @returns {string[]} card names, in bundle order
|
|
82
|
+
*/
|
|
83
|
+
getCardNames(type) {
|
|
84
|
+
const available = Object.keys(this.manifest[type] || {});
|
|
85
|
+
|
|
27
86
|
// CASE: The theme has asked for all card assets to be included by default
|
|
28
87
|
if (this.config === true) {
|
|
29
|
-
return
|
|
30
|
-
'cards.min.css': 'css/*.css',
|
|
31
|
-
'cards.min.js': 'js/*.js'
|
|
32
|
-
};
|
|
88
|
+
return available;
|
|
33
89
|
}
|
|
34
90
|
|
|
35
91
|
// CASE: the theme has declared an include directive, we should include exactly these assets
|
|
36
92
|
// Include rules take precedence over exclude rules.
|
|
37
93
|
if (_.has(this.config, 'include')) {
|
|
38
|
-
return
|
|
39
|
-
'cards.min.css': `css/@(${this.config.include.join('|')}).css`,
|
|
40
|
-
'cards.min.js': `js/@(${this.config.include.join('|')}).js`
|
|
41
|
-
};
|
|
94
|
+
return available.filter(name => this.config.include.includes(name));
|
|
42
95
|
}
|
|
43
96
|
|
|
44
|
-
// CASE: the theme has declared an exclude directive, we should include
|
|
97
|
+
// CASE: the theme has declared an exclude directive, we should include everything else
|
|
45
98
|
if (_.has(this.config, 'exclude')) {
|
|
46
|
-
return
|
|
47
|
-
'cards.min.css': `css/!(${this.config.exclude.join('|')}).css`,
|
|
48
|
-
'cards.min.js': `js/!(${this.config.exclude.join('|')}).js`
|
|
49
|
-
};
|
|
99
|
+
return available.filter(name => !this.config.exclude.includes(name));
|
|
50
100
|
}
|
|
51
101
|
|
|
52
102
|
// CASE: theme has asked that no assets be included
|
|
53
103
|
// CASE: we didn't understand config, don't do anything
|
|
54
|
-
return
|
|
104
|
+
return [];
|
|
55
105
|
}
|
|
56
106
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
107
|
+
/**
|
|
108
|
+
* @param {'css'|'js'} type
|
|
109
|
+
* @returns {{content: string, hash: string}|null} null when the theme wants no assets of this type
|
|
110
|
+
*/
|
|
111
|
+
getBundle(type) {
|
|
112
|
+
if (this.bundles.has(type)) {
|
|
113
|
+
return this.bundles.get(type);
|
|
60
114
|
}
|
|
61
115
|
|
|
62
|
-
|
|
116
|
+
const chunks = this.manifest[type] || {};
|
|
117
|
+
const names = this.getCardNames(type);
|
|
118
|
+
|
|
119
|
+
debug('bundling', type, names);
|
|
120
|
+
|
|
121
|
+
// JS chunks are terminated so a minifier that drops the trailing
|
|
122
|
+
// semicolon can't let one IIFE run into the next
|
|
123
|
+
const separator = type === 'js' ? ';\n' : '\n';
|
|
124
|
+
const content = names.map(name => chunks[name]).join(separator);
|
|
125
|
+
|
|
126
|
+
const bundle = content ? {
|
|
127
|
+
content,
|
|
128
|
+
hash: crypto.createHash('sha256').update(content).digest('base64url').substring(0, HASH_LENGTH)
|
|
129
|
+
} : null;
|
|
130
|
+
|
|
131
|
+
this.bundles.set(type, bundle);
|
|
132
|
+
|
|
133
|
+
return bundle;
|
|
63
134
|
}
|
|
64
135
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
136
|
+
hasFile(type) {
|
|
137
|
+
return !!this.getBundle(type);
|
|
138
|
+
}
|
|
69
139
|
|
|
70
|
-
|
|
140
|
+
/**
|
|
141
|
+
* @param {'css'|'js'} type
|
|
142
|
+
* @returns {string|null} content hash for use as a cache-busting key
|
|
143
|
+
*/
|
|
144
|
+
getHash(type) {
|
|
145
|
+
return this.getBundle(type)?.hash ?? null;
|
|
71
146
|
}
|
|
72
147
|
|
|
73
148
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* @override
|
|
149
|
+
* @param {string} assetPath e.g. `public/cards.min.css`
|
|
150
|
+
* @returns {'css'|'js'|null} the card asset type this path refers to, if any
|
|
77
151
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
152
|
+
getCardType(assetPath) {
|
|
153
|
+
return assetPath.match(/^public\/cards\.min\.(css|js)$/)?.[1] ?? null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @param {boolean|object} [cardAssetConfig] the active theme's `card_assets` config
|
|
158
|
+
*/
|
|
159
|
+
invalidate(cardAssetConfig) {
|
|
160
|
+
if (cardAssetConfig !== undefined) {
|
|
80
161
|
this.config = cardAssetConfig;
|
|
81
162
|
}
|
|
82
163
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const globs = this.generateGlobs();
|
|
86
|
-
|
|
87
|
-
debug('globs', globs);
|
|
88
|
-
|
|
89
|
-
this.files = await this.minify(globs) || [];
|
|
164
|
+
this.bundles.clear();
|
|
90
165
|
}
|
|
91
166
|
};
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
const CardAssets = require('./card-assets');
|
|
2
2
|
const AdminAuthAssets = require('./admin-auth-assets');
|
|
3
|
-
const cardAssets = new CardAssets();
|
|
4
|
-
const adminAuthAssets = new AdminAuthAssets();
|
|
5
3
|
|
|
4
|
+
let cardAssets;
|
|
5
|
+
let adminAuthAssets;
|
|
6
|
+
|
|
7
|
+
// Instantiated lazily: the AdminAuthAssets constructor touches the filesystem,
|
|
8
|
+
// and consumers that only want cardAssets shouldn't trigger that
|
|
6
9
|
module.exports = {
|
|
7
|
-
cardAssets
|
|
8
|
-
|
|
10
|
+
get cardAssets() {
|
|
11
|
+
cardAssets = cardAssets || new CardAssets();
|
|
12
|
+
return cardAssets;
|
|
13
|
+
},
|
|
14
|
+
get adminAuthAssets() {
|
|
15
|
+
adminAuthAssets = adminAuthAssets || new AdminAuthAssets();
|
|
16
|
+
return adminAuthAssets;
|
|
17
|
+
}
|
|
9
18
|
};
|
|
@@ -3,15 +3,7 @@
|
|
|
3
3
|
* Dynamically build and execute queries on the API
|
|
4
4
|
*/
|
|
5
5
|
const _ = require('lodash');
|
|
6
|
-
const {resolveRouteData} = require('../routing/api-adapter');
|
|
7
|
-
|
|
8
|
-
// The default settings for a default post query
|
|
9
|
-
const queryDefaults = {
|
|
10
|
-
type: 'browse',
|
|
11
|
-
resource: 'posts',
|
|
12
|
-
controller: 'postsPublic',
|
|
13
|
-
options: {}
|
|
14
|
-
};
|
|
6
|
+
const {resolveApiCall, resolveRouteData} = require('../routing/api-adapter');
|
|
15
7
|
|
|
16
8
|
/**
|
|
17
9
|
* The theme expects to have access to the relations by default e.g. {{post.authors}}
|
|
@@ -29,13 +21,16 @@ const defaultDataQueryOptions = {
|
|
|
29
21
|
author: null
|
|
30
22
|
};
|
|
31
23
|
|
|
32
|
-
const defaultPostQuery =
|
|
33
|
-
|
|
24
|
+
const defaultPostQuery = {
|
|
25
|
+
...resolveApiCall({type: 'browse', resource: 'posts'}),
|
|
26
|
+
options: _.cloneDeep(defaultQueryOptions.options)
|
|
27
|
+
};
|
|
34
28
|
|
|
35
29
|
/**
|
|
36
30
|
* Process query request.
|
|
37
31
|
*
|
|
38
|
-
* Takes a
|
|
32
|
+
* Takes a resolved query spec, which already carries type, resource,
|
|
33
|
+
* controller and options.
|
|
39
34
|
* Replaces occurrences of `%s` in options with slugParam
|
|
40
35
|
* Converts the query config to a promise for the result
|
|
41
36
|
*
|
|
@@ -48,8 +43,6 @@ function processQuery(query, slugParam, locals) {
|
|
|
48
43
|
|
|
49
44
|
query = _.cloneDeep(query);
|
|
50
45
|
|
|
51
|
-
_.defaultsDeep(query, queryDefaults);
|
|
52
|
-
|
|
53
46
|
// Replace any slugs, see TaxonomyRouter. We replace any '%s' by the slug
|
|
54
47
|
_.each(query.options, function (option, name) {
|
|
55
48
|
query.options[name] = _.isString(option) ? option.replace(/%s/g, slugParam) : option;
|