1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37<!DOCTYPE html> 38 <html lang="en"> 39 <head> 40<link href="https://www.google.com" rel="preconnect" /> 41<link href="https://www.gstatic.com" rel="preconnect" crossorigin="anonymous" /> 42<meta name="tncms-access-version" content="2026-09-23 12:52:50" /> 43<meta name="tncms-access-criteria" content="{"2dd8d7f0-75cf-11ef-a5eb-eb0b664a7744":[],"43776d68-6dd5-11ee-a31a-cf3e835c3f62":["61c29558-f644-11ed-9fed-dbcead3ea153"],"811ce583-146c-4bdb-a099-96d80a4302b3":["c7068dcc-91c0-11ed-ba3e-9ff8e64f3398"],"c7392a02-91c0-11ed-ba69-c7309ed0b15c":[],"b0e71289-b334-4d30-b27e-e8b1a08e88d9":[],"57972cce-66eb-11ef-857a-171d79a5a491":[],"a72957b2-5660-11ef-8cbc-e3169b5c0672":[],"365cf796-3e23-11ef-96c1-db72919c269b":[],"4244550a-3e22-11ef-80ec-0bfb12fdc1a2":[],"2bfb8b58-6ba7-11ef-9399-579a9976bd03":[],"0d8207a0-4d90-11ee-ae08-ff4003a74030":[],"3fcc7733-f382-4437-b8b5-64735e629aec":["c7068dcc-91c0-11ed-ba3e-9ff8e64f3398"],"ebe97f30-b04c-4d93-b3d3-3acb66c129f2":["c7068dcc-91c0-11ed-ba3e-9ff8e64f3398"],"3ab8e9e0-9eae-11ee-9c00-e3a33758cbd1":[],"37954a56-558e-415e-96ff-74669f167ec3":[],"c736d130-91c0-11ed-ba66-0fae60de4138":[],"c739d68c-91c0-11ed-ba6a-53dbc1fa1274":[],"fa00d158-aa59-11ee-aa89-43c9e85e6058":["c7068dcc-91c0-11ed-ba3e-9ff8e64f3398","c708dafa-91c0-11ed-ba40-bf9dee2a460c"],"d1f5b8f0-f1f1-43dc-8345-6d12d8686d15":["1ac155f8-de0d-11ed-b546-57044e978df2","c7068dcc-91c0-11ed-ba3e-9ff8e64f3398","c708dafa-91c0-11ed-ba40-bf9dee2a460c"],"1066b81f-42bb-4b83-8afc-f40827a51dcb":["1ac155f8-de0d-11ed-b546-57044e978df2","c7068dcc-91c0-11ed-ba3e-9ff8e64f3398","c708dafa-91c0-11ed-ba40-bf9dee2a460c"],"0212e8ca-5bc5-4fe3-948a-c9e95499b4f8":["1ac155f8-de0d-11ed-b546-57044e978df2","c7068dcc-91c0-11ed-ba3e-9ff8e64f3398","c708dafa-91c0-11ed-ba40-bf9dee2a460c"],"032964db-b861-4b4c-87e5-9a31b8187f04":["1ac155f8-de0d-11ed-b546-57044e978df2","c7068dcc-91c0-11ed-ba3e-9ff8e64f3398","c708dafa-91c0-11ed-ba40-bf9dee2a460c"],"c73e1f44-91c0-11ed-ba6e-f7199bfaffb2":["1ac155f8-de0d-11ed-b546-57044e978df2","c7068dcc-91c0-11ed-ba3e-9ff8e64f3398","c708dafa-91c0-11ed-ba40-bf9dee2a460c","ec5a9031-5c20-4ac5-9f35-fae2cdc5d3c8"],"c73f0206-91c0-11ed-ba6f-b702d325b7bb":["1ac155f8-de0d-11ed-b546-57044e978df2","c7068dcc-91c0-11ed-ba3e-9ff8e64f3398","c708dafa-91c0-11ed-ba40-bf9dee2a460c","ec5a9031-5c20-4ac5-9f35-fae2cdc5d3c8"],"c73fbe9e-91c0-11ed-ba70-13c3ab67525d":[],"de10496a-1602-11ee-8812-6bf05729af20":[],"c32a7abe-00ba-11ef-8eb6-dbfe84395912":[],"f20cde70-63c1-11ef-9b6f-7f4aa4e4245b":[],"613b6a9e-4cbe-11ee-83cc-7fcb18447b09":[],"3d3732dc-95f5-11ef-acf6-3f63dd7ec478":[],"d048dc1c-55c0-11ef-8789-972745c370b8":[],"57aac698-55c1-11ef-9b0d-6f720887275d":[],"3ef4b469-bcfb-485e-9cb6-a1a6083a6ba2":[],"de2c10ce-b813-4884-a299-4d53a6095446":[],"1c64e632-1cff-11ee-8812-370eb07637ed":[],"191cf976-55c3-11ef-8662-0f2f8d08c3e1":[],"e86dc8d6-55c3-11ef-adf7-f3634a9350f2":[],"8ba318fe-55c3-11ef-90da-2fcccd31ba61":[],"14ac8abc-7b63-11ef-81dc-5f3be8fdff76":[],"a457c2b8-55c4-11ef-adf6-a338de8d539e":[],"693f956a-55c5-11ef-aee5-6f08a8e86e39":[],"eec4f014-55c4-11ef-9a58-aff901200ba7":[],"6c927222-0c1a-42b4-9cfc-a5c22773ac60":[],"13ac653a-80a9-4b47-b70e-b4a163c120ab":[],"ea1fc1a4-b5a8-4b52-a274-2a9905366488":[],"6d7ca118-b0c4-11ef-92d9-63c9bf7a9694":[],"7a2a953b-3fd9-4ef0-80ac-9304d9c6d98b":[],"79c2df5a-0259-408e-90f7-341f1c2531f5":[],"1c9d1038-2e5c-11ef-8363-9fcfd7b5188f":[],"74df0aa2-c5ae-499a-91ae-c7dae3d328a6":[],"d9c66d11-d246-46f8-8023-c3713e65af94":[],"29b58565-171f-494e-b81a-061fe768795e":[],"1257ca80-fc33-4af4-9853-3c4c87e91d2f":[],"4718e2bf-7b77-4fba-941b-8aa83f08b663":[],"6e5876b4-34bb-11ef-94b2-57a84c7910f9":[],"f3838754-6a1f-11ef-8234-979c6d21ce7e":[],"013ac1a6-241f-11ef-873d-a782f80f0fd7":[],"36bf4640-5c22-4e31-8f81-249d99ec5b6c":[],"8abebbda-e07c-11ee-af16-63dcd1ab3db7":[],"6f366564-f941-11ef-861d-2371c3f56e47":[],"2c4c1810-fce5-11ee-b71c-a37d2de14ad9":[]}" /> 44<meta name="tncms-criteria-ids" content="61c29558-f644-11ed-9fed-dbcead3ea153,c7068dcc-91c0-11ed-ba3e-9ff8e64f3398,c708dafa-91c0-11ed-ba40-bf9dee2a460c,1ac155f8-de0d-11ed-b546-57044e978df2,ec5a9031-5c20-4ac5-9f35-fae2cdc5d3c8" /> 45<meta name="tncms-access-asset-app" content="editorial" /> 46<meta name="tncms-access-asset-id" content="1337f598-2b2e-4b63-b5ee-0e923c663892" /> 47<meta name="keywords" content="" /> 48<meta name="news_keywords" content="" /> 49<meta name="description" content="If a federal election were held today, here’s how the vote breakdown would look for each party, according Vox Pop Labels models." /> 50<meta name="author" content="Vox Pop Labs" /> 51<meta name="viewport" content="width=device-width, initial-scale=1.0" /> 52<meta name="apple-mobile-web-app-capable" content="yes" /> 53<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> 54<meta name="googlebot" content="noarchive" /> 55<meta name="robots" content="max-image-preview:large" /> 56<meta property="og:type" content="article" /> 57<meta property="og:url" content="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html" /> 58<meta property="og:image" content="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/assets/v3/editorial/a/ab/aabac44d-1425-4727-a2e3-f59ed8f9c3e7/69e27918b973e.image.jpg?crop=1763%2C926%2
58C0%2C124&resize=1200%2C630&order=crop%2Cresize" /> 59<meta property="og:image:width" content="1200" /> 60<meta property="og:image:height" content="630" /> 61<meta property="og:title" content="Just how popular are Carney’s Liberals with Canadian voters? Here’s what the polls show right now" /> 62<meta property="og:description" content="If a federal election were held today, here’s how the vote breakdown would look for each party, according Vox Pop Labels models." /> 63<meta property="og:site_name" content="Toronto Star" /> 64<meta property="og:section" content="interactives" /> 65<meta property="article:publisher" content="https://www.facebook.com/torontostar" /> 66<meta name="twitter:image" content="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/assets/v3/editorial/a/ab/aabac44d-1425-4727-a2e3-f59ed8f9c3e7/69e27918b973e.image.jpg?crop=1763%2C926%2C0%2C124&resize=438%2C230&order=crop%2Cresize" /> 67<meta name="twitter:card" content="summary_large_image" /> 68<meta name="twitter:site" content="@torontostar" /> 69<meta name="twitter:image:alt" content="Signal poll forecast" /> 70<meta property="tncms:subs" content="5.0" /> 71<meta property="vf:owner" content="oidc:8c39ea58-a2d8-11ed-8b9f-5753c0e7044b" /> 72<meta name="bingbot" content="noarchive" /> 73<meta name="robots" content="noarchive" /> 74<meta name="apple-itunes-app" content="app-id=379481068, affiliate-data=pt=328230&ct=Prod-Smartbanner&mt=8, app-argument=https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html" /> 75<meta property="tncms:ads" content="lazyload,refresh" /> 76<link rel="stylesheet preload" as="style" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/bootstrap/resources/styles/bootstrap.min.87df60d54091cf1e8f8173c2e568260c.css"/> 77<link rel="stylesheet preload" as="style" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/template/resources/styles/layout.c6ac426b6fec25f4f7314644fca99984.css"/> 78<link rel="stylesheet preload" as="style" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/oovvuu.css?_dc=1789580009"/> 79<link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/styles/tnt.access.offers.58c893fb66f3a073134f1e9d492820d7.css"/> 80<link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/plugins/resources/styles/datepicker3.9f2593097fc3849b80bb9d187a12b345.css"/> 81<link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_html_template/resources/styles/header-base.css?_dc=1784741504"/> 82<link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_html_template/resources/styles/special_html_template.css?_dc=1784741504"/> 83<style>/*<![CDATA[*/ .grecaptcha-badge { visibility: hidden; } @media (max-width: 991px) { #tncms-block-3699117 .mobileMenuLinks { display: none !important; } } #weather-3699120 .list-unstyled { margin: 0; } #weather-3699120 span { display: block; } #weather-3699120 .forecast-link a { padding: 8px; margin-top: -10px; } #weather-3699120 .icon { position: relative; } #weather-3699120 .icon .tnt-svg { position: relative; font-size: 26px; margin-bottom: -6px; margin-right: 8px; margin-top: -8px; } #weather-3699120 .temp { font-size: 18px; line-height: 20px; font-weight: bold; } #weather-3699120 .cond { opacity: 0.7; } #weather-3699120 .current-conditions { float: left; height: 24px; } #weather-3699120 .dropdown-toggle { color: #333333; display: block; } #weather-3699120 .weather-date-separator { margin: 0 10px 0 10px; color: #979797; } #weather-3699120 img {width: auto !important;height: 30px !important; display: inline; padding-left: 4px; vertical-align: middle; } #weather-3699120 .sponsor-line { height: 36px; padding: 0 10px; clear: left; color: #333; } #weather-3699120 .sponsor-line a { margin-right: 4px; } #site-top-nav #weather-3699120 .icon { margin-top: 4px; } #site-top-nav #weather-3699120 .temp { line-height: 36px; } #weather-3699120 .current-conditions { height: 36px; padding: 0 10px; } #main-navigation #weather-3699120 .current-conditions { padding-top: 11px; } #weather-3699120 .current-conditions { display: flex; } #weather-3699120 .current-conditions .dropdown-toggle { display: flex !important; align-items: center; } #weather-3699120 .current-conditions .dropdown-toggle > * { float: none !important; height: 100%; display: flex !important; align-items: center; } #weather-3699123 .list-unstyled { margin: 0; } #weather-3699123 span { display: block; } #weather-3699123 .forecast-link a { padding: 8px; margin-top: -10px; } #weather-3699123 .icon { position: relative; } #weather-3699123 .icon .tnt-svg { position: relative; font-size: 26px; margin-bottom: -6px; margin-right: 8px; margin-top: -8px; } #weather-3699123 .temp { font-size: 18px; line-height: 20px; font-weight: bold; } #weather-3699123 .cond { opacity: 0.7; } #weather-3699123 .current-conditions { float: left; height: 24px; } #weather-3699123 .dropdown-toggle { color: #333333; display: block; } #weather-3699123 .weather-date-separator { margin: 0 10px 0 10px; color: #979797; } #weather-3699123 img {width: auto !important;height: 30px !important; display: inline; padding-left: 4px; vertical-align: middle; } #weather-3699123 .sponsor-line { height: 36px; padding: 0 10px; clear: left; color: #333; } #weather-3699123 .sponsor-line a { margin-right: 4px; } #site-top-nav #weather-3699123 .icon { margin-top: 4px; } #site-top-nav #weather-3699123 .temp { line-height: 36px; } #weather-3699123 .current-conditions { height: 36px; padding: 0 10px; } #main-navigation #weather-3699123 .current-conditions { padding-top: 11px; } #weather-3699123 .current-conditions { display: flex; } #weather-3699123 .current-conditions .dropdown-toggle { display: flex !important; align-items: center; } #weather-3699123 .current-conditions .dropdown-toggle > * { float: none !important; height: 100%; display: flex !important; align-items: center; } #weather-3687831 .list-unstyled { margin: 0; } #weather-3687831 span { display: block; } #weather-3687831 .forecast-link a { padding: 8px; margin-top: -10px; } #weather-3687831 .icon { position: relative; } #weather-3687831 .icon .tnt-svg { position: relative; font-size: 26px; margin-bottom: -6px; margin-right: 8px; margin-top: -8px; } #weather-3687831 .temp { font-size: 18px; line-height: 20px; font-weight: bold; } #weather-3687831 .cond { opacity: 0.7; } #weather-3687831 .current-conditions { float: left; height: 24px; } #weather-3687831 .dropdown-toggle { color: #333333; display: block; } #weather-3687831 .weather-date-separator { margin: 0 10px 0 10px; color: #979797; } #weather-3687831 img {width: 80px !important;height: auto !important; display: inline; padding-left: 4px; vertical-align: middle; } #weather-3687831 .sponsor-line { height: 36px; padding: 0 10px; clear: left; color: #333; } #weather-3687831 .sponsor-line a { margin-right: 4px; vertical-align: bottom; } #site-top-nav #weather-3687831 .icon { margin-top: 4px; } #site-top-nav #weather-3687831 .temp { line-height: 36px; } #weather-3687831 .current-conditions { height: 36px; padding: 0 10px; } #main-navigation #weather-3687831 .current-conditions { padding-top: 11px; } #tncms-block-2828682 .tnt-prop-img { max-width: 138px; } #site-logo-2828682 { color: #666; } #tncms-block-2826984 .tnt-prop-img { max-width: 300px; } #site-logo-2826984 { color: #666; } .follow-links-2826990 li { margin-right: 1px; padding: 0; } .follow-links-2826990 li a, .follow-links-2826990 li a:focus, .follow-links-2826990 li a:active { ; color: #fff!important; font-size: 18px; margin-right: 10px; padding:0; box-shadow: none; } .follow-links-2826990 li a:hover { text-decoration: none; } .follow-links-2826990 li a.fb:hover { color: #3A59A5; } .follow-links-2826990 li a.tw:hover { color: #000; } .follow-links-2826990 li a.yt:hover { color: #CE2B29; } .follow-links-2826990 li a.is:hover { color: #000; } @media screen and (min-width: 320px) { #ad-3143188 { min-height: 50px; min-width: 320px; } } /*]]>*/</style>
84<script type="text/javascript">/*<![CDATA[*/ (function(){var tnsrc=window.location.hash.match(/[&#]tncms-source=([^&]+)/);var dl = window.dataLayer = window.dataLayer || [];dl.push({"townnews":{"product":{"software":"BLOX","version":"1.96.1"},"crm":{"group_id":848},"content":{"id":"1337f598-2b2e-4b63-b5ee-0e923c663892","title":"Just how popular are Carney's Liberals with Canadian voters? Here's what the polls show right now","type":"article","published_time":"2026-05-21T17:00:00Z","tags":["#federal_politics","#starnewsroom","#federal_election","#polls","#poll_tracker","#the_signal","#election_forecast","#mark_carney","#pierre_poilievre","#starlock","#conservative_party_of_canada","#liberal_party_of_canada"],"authors":[{"id":"8c39ea58-a2d8-11ed-8b9f-5753c0e7044b","eh":"e1674abbd6d93cf2b5b0133bdd004bda220b5a8b4bdc247c39236fd31e20cb68","first_name":"Vox Pop Labs","last_name":null,"title":null}],"taxonomies":{"blox_sections":{"ns":"https:\/\/www.townnews.com\/ns\/blox\/v1\/tags\/section","items":["interactives","politics\/federal"]},"blox_flags":{"ns":"https:\/\/www.townnews.com\/ns\/blox\/v1\/tags\/flag","items":[]}},"metrics":{"image_count":1,"video_count":0,"audio_count":0,"word_count":347},"byline":""}},"tncms":{"template":{"version":"3.155.0"},"page":{"grid":"ample","style":"none","path":"\/interactives","syndicated":"false","reaction":"false","app":"editorial","theme":"flex","skin":"flex-editorial","http_status":200},"subscription":{"required":"true"},"asset":{"type":"article","author":"Vox Pop Labs","start_hour":"13","id":"1337f598-2b2e-4b63-b5ee-0e923c663892","app":"editorial","ga_page":"\/interactives\/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"},"vendor":{"outbrain":"disabled","taboola":""},"system":{"render_time":407},"client":{"is_bot":"no","is_gdpr":"no"}}});if (tnsrc && tnsrc[1]) {dl.push({'tncms.campaign.internal_source': tnsrc[1]});}window.addEventListener("DOMContentLoaded", function(oEvent) {var oTest = document.createElement('div');oTest.innerHTML = ' ';oTest.className = 'adsbox';document.body.appendChild(oTest);var nTimeoutID = window.setTimeout(function() {if (oTest.offsetHeight === 0) {dl.push({'event': 'tncms.ad.blocked'});}document.body.removeChild(oTest);window.clearTimeout(nTimeoutID);}, 100);});var nWidth=Math.max(document.documentElement.clientWidth, window.innerWidth || 0),aBPs=[[300,"Extra small: Most smartphones."],[768,"Small: Tablet devices."],[992,"Medium: Laptops & landscape tablets."],[1200,"Large: Desktop computers."]],i,c,aThisBP,aBP;
84for(i=0,c=aBPs.length;i<c;i++){aThisBP=aBPs[i];if(aBP===undefined||aThisBP[0]<=nWidth){aBP=aThisBP;}}if(aBP!==undefined){dl.push({'tncms.client.breakpoint':aBP[1]});}(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'tncms.start':new Date().getTime(),event:'tncms.start'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-PDQV3N');})(); /*]]>*/</script>
vendor: 68 bytes, lines 84-85
84 85<script src="https://www.google.com/recaptcha/enterprise.js?render=
856LdF3BEhAAAAAEQUmLciJe0QwaHESwQFc2vwCWqh
vendor: 12 bytes, line 85
85"></script>
86<script type="module" src="/shared-content/art/tncms/api/csrf.js"></script>
vendor: 1 bytes, line 86
86
87<script type="module" async="async" src="/shared-content/art/tncms/api/access.777fdd2121da80d545ff.js"></script>
vendor: 1 bytes, line 87
87
88<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/jquery/resources/scripts/jquery.min.d6d18fcf88750a16d256e72626e676a6.js"></script>
vendor: 1 bytes, line 88
88
89<script src="/shared-content/art/tncms/user/user.js"></script>
vendor: 1 bytes, line 89
89
90<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/bootstrap/resources/scripts/bootstrap.min.d457560d3dfbf1d56a225eb99d7b0702.js"></script>
vendor: 1 bytes, line 90
90
91<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core_ext/resources/scripts/common/override.common.js?_dc=1785951071"></script>
vendor: 1 bytes, line 91
91
92<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/template/resources/scripts/tnt.c7cd232a9076c196b2102839f349c060.js"></script>
vendor: 1 bytes, line 92
92
93<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/template/resources/scripts/application.0758030105fdd3a70dff03f4da4530e2.js"></script>
vendor: 1 bytes, line 93
93
94<script async="async" src="https://btloader.com/tag?o=5071905434894336&upapi=true&async=true"></script>
vendor: 1 bytes, line 94
94
95<script src="//c.webtrends-optimize.com/acs/accounts/cfa16dfe-2c13-4c6e-8cb4-c532d090eb72/js/wt.js"></script>
vendor: 1 bytes, line 95
95
96<script async="async" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/scripts/edition-selector.js?_dc=1789580011"></script>
vendor: 1 bytes, line 96
96
97<script async="async" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/scripts/footer.nav.js?_dc=1789580011"></script>
vendor: 1 bytes, line 97
97
98<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/plugins/resources/scripts/bootstrap-datepicker.2b28bee684315ebcadec4a6b63cc146d.js"></script>
vendor: 1 bytes, line 98
98
99<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/plugins/resources/scripts/jquery.mask.84bef41f682a27dac3fd6e812c06365d.js"></script>
vendor: 1 bytes, line 99
99
100<script defer="defer">/*<![CDATA[*/ grecaptcha.enterprise.ready(function() {const oCaptchaEls = document.querySelectorAll('div.g-recaptcha');oCaptchaEls.forEach(function(oEl) {oEl.dataset.widgetId = grecaptcha.enterprise.render(oEl, oEl.dataset);});}); /*]]>*/</script>
vendor: 1 bytes, line 100
100
101<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.log.9e3b79ea89bb936c281f4c22f38976fa.js"></script>
vendor: 1 bytes, line 101
101
102<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.status.828de94349981272665c0fb0107f3e49.js"></script>
vendor: 1 bytes, line 102
102
103<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/template/resources/scripts/tnt.navigation.accessibility.7a9170240d21440159b9bd59db72933b.js"></script>
vendor: 1 bytes, line 103
103
104<script async="async" src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
vendor: 1 bytes, line 104
104
105<script async="async" src="//micro.rubiconproject.com/prebid/dynamic/18488.js"></script>
vendor: 1 bytes, line 105
105
106<script src="https://config.aps.amazon-adsystem.com/configs/5028"></script>
vendor: 1 bytes, line 106
106
107<script src="https://client.aps.amazon-adsystem.com/publisher.js"></script>
vendor: 1 bytes, line 107
107
108<script>/*<![CDATA[*/ const aps=((e='5028')=>{(window._aps=window._aps||new Map()),_aps.has(e)||_aps.set(e,{queue:[],store:new Map([["listeners",new Map()]])});let t={accountID:e,record:function(e,t){return new Promise((r,n)=>{_aps.get(this.accountID).queue.push(new CustomEvent(e,{detail:{...t,resolve:r,reject:n}}))})},read:function(e){return this.record("bootstrap/store/willRead",{name:e}),_aps.get(this.accountID).store.get(e)},run:function(e,t){_aps.get("_system")?.store.get("listeners").has(e)?this.record(e,t):this.record("bootstrap/run/willDrop",{name:e,detail:t})},react:function(e,t){_aps.get(this.accountID).store.get("listeners").set(e,t);this.record("bootstrap/react/didExecute",{name:e})}};return t.record("bootstrap/version/declare",{version:5}),t})();((t=aps)=>{window.apstag=window.apstag||{init:function(e,r){t.record("legacy/init/enqueue",{config:e,callback:r})},fetchBids:function(e,r){t.record("legacy/fetchBids/enqueue",{bidConfig:e,callback:r})},setDisplayBids:function(){t.run("legacy/setDisplayBids/enqueue",{arguments})},targetingKeys:function(){return t.read("legacy/targetingKeys")??[]},rpa:function(e,r,n){t.record("legacy/rpa/enqueue",{tokenConfig:e,callback:r,setCookie:n})},upa:function(e,r,n){t.record("legacy/upa/enqueue",{tokenConfig:e,callback:r,setCookie:n})},dpa:function(e){t.record("legacy/dpa/enqueue",{callback:e})}};t.record("bootstrapExtAPStag/version/declare",{version:1})})(),((t=aps)=>{window.apstag={...window.apstag,queue:{push:function(e){t.record("legacy/queue/push",{callback:e})}}};t.record("bootstrapExtQueue/version/declare",{version:1})})(),((t=aps)=>{window.apstag={...window.apstag,customPlacements:function(){return{hint:function(e,r,n){t.record("customPlacement/hint/define",{id:e,isDefault:r,hintMetadata:n})},enable:function(){t.record("customPlacement/service/enable")},addEventListener:function(e,r){if("PlacementResponse"===e)t.react("customPlacement/placement/didRespond",r);else throw new Error("Unsupported event type")}}}};t.record("bootstrapExtASR/version/declare",{version:1})})(),((t=aps)=>{window.apstag={...window.apstag,nativeContent:function(){return{enable:function(){t.record("nativeCommerceAds/service/enable")},registerHook:function(e,r){if("nativeCommerceAds.updateClickUrl"===e)t.react("nativeCommerceAds/clickUrl/update",k=>({status:"completed",value:{url:r(k?.detail?.url,k?.detail?.element)}}));else throw new Error("Unsupported event type")}}}};t.record("bootstrapExtNCA/version/declare",{version:1})})(); 109 apstag.init({ 110 pubID: '5028', 111 adServer: 'googletag', 112 simplerGPT: true 113 }); /*]]>*/</script>
vendor: 1 bytes, line 113
113
114<script>/*<![CDATA[*/ window.googletag = window.googletag || {cmd: []}; 115 window.gptAdSlots = window.gptAdSlots || [];var PREBID_TIMEOUT = 3500; 116 117 var pbjs = pbjs || {}; 118 pbjs.que = pbjs.que || []; 119 var a9Enabled = typeof apstag !== 'undefined'; 120 121 googletag.cmd.push(function() { 122 // Disable requests for ads on page load 123 googletag.pubads().disableInitialLoad(); 124 }); 125 126 function sendAdServerRequest(gptSlots, requestManager) { 127 googletag.cmd.push(function() { 128 if (typeof gptSlots !== 'undefined') { 129 var slotsToRefresh = []; 130 for (var i = 0; i < gptSlots.length; i++) { 131 if (requestManager.slotsLoaded.indexOf(gptSlots[i]) < 0) { 132 slotsToRefresh.push(gptSlots[i]); 133 requestManager.slotsLoaded.push(gptSlots[i]); 134 } 135 } 136 if (slotsToRefresh.length > 0) { 137 googletag.pubads().refresh(slotsToRefresh); 138 } 139 140 } else { 141 if (requestManager.adServerRequestSent) { 142 return; 143 } 144 requestManager.adServerRequestSent = true; 145 googletag.pubads().refresh(); 146 } 147 }); 148 } 149 150 151 // when both APS and Prebid have returned, initiate ad request 152 function biddersBack(gptSlots, requestManager) { 153 if (requestManager.aps && requestManager.prebid) { 154 sendAdServerRequest(gptSlots, requestManager); 155 } 156 return; 157 } 158 159 160 function magnite_refreshBid(ids) { 161 var gptSlots; 162 if (typeof ids !== 'undefined') { 163 gptSlots = []; 164 for (var i = 0; i < ids.length; i++) { 165 gptSlots.push(gptAdSlots[ids[i]]); 166 } 167 } 168 var requestManager = { 169 adServerRequestSent: false, 170 slotsLoaded: [], 171 172 aps: false, 173 prebid: false, 174 175 }; 176 177 178 googletag.cmd.push(function() { 179 if (typeof gptSlots === 'undefined') { 180 apstag.fetchBids({}, function(bids) { 181 apstag.setDisplayBids(); 182 requestManager.aps = true; 183 biddersBack(gptSlots, requestManager); 184 }); 185 } else { 186 apstag.fetchBids({ 187 slots: gptSlots 188 }, function(bids) { 189 apstag.setDisplayBids(); 190 requestManager.aps = true; 191 biddersBack(gptSlots, requestManager); 192 }); 193 } 194 }); 195 196 197 pbjs.que.push(function() { 198 pbjs.rp.requestBids({ 199 200 callback: function() { 201 googletag.cmd.push(function() { 202 requestManager.prebid = true; 203 biddersBack(gptSlots, requestManager); 204 }); 205 }, 206 207 gptSlotObjects: gptSlots 208 }); 209 }); 210 211 setTimeout(function() { 212 sendAdServerRequest(gptSlots, requestManager); 213 }, PREBID_TIMEOUT); 214 } 215 216 217 218 // Log all bids 219 function pbjs_logAllBids() { 220 var responses = pbjs.getBidResponses(); 221 var output = []; 222 for (var adunit in responses) { 223 if (responses.hasOwnProperty(adunit)) { 224 var bids = responses[adunit].bids; 225 for (var i = 0; i < bids.length; i++) { 226 var b = bids[i]; 227 output.push({ 228 'adunit': adunit, 'adId': b.adId, 'bidder': b.bidder, 229 'time': b.timeToRespond, 'cpm': b.cpm, 'msg': b.statusMessage 230 }); 231 } 232 } 233 } 234 if (output.length) { 235 if (console.table) { 236 console.log('All bids returned'); 237 console.table(output); 238 } else { 239 for (var j = 0; j < output.length; j++) { 240 console.log(output[j]); 241 } 242 } 243 } else { 244 console.warn('NO prebid responses'); 245 } 246 } 247 248 // Log winning bids 249 function pbjs_logWinningBids() { 250 var bids = pbjs.getHighestCpmBids(); 251 var output = []; 252 for (var i = 0; i < bids.length; i++) { 253 var b = bids[i]; 254 output.push({ 255 'adunit': b.adUnitCode, 'adId': b.adId, 'bidder': b.bidder, 256 'time': b.timeToRespond, 'cpm': b.cpm 257 }); 258 } 259 if (output.length) { 260 if (console.table) { 261 console.log('Winning bids'); 262 console.table(output); 263 } else { 264 for (var j = 0; j < output.length; j++) { 265 console.log(output[j]); 266 } 267 } 268 } else { 269 console.warn('No prebid winners'); 270 } 271 } 272 273 window.__tnt = window.__tnt || {}; 274 __tnt.ads = __tnt.ads || {}; 275 __tnt.ads.dfp = __tnt.ads.dfp || {}; 276 277 __tnt.ads.dfp.targeting = __tnt.ads.dfp.targeting || {}; 278 279 __tnt.ads.dfp.targeting.asset_id = '1337f598-2b2e-4b63-b5ee-0e923c663892'; 280 281 __tnt.ads.dfp.targeting.page = ["asset","article","app-editorial"]; 282 __tnt.ads.dfp.templates = __tnt.ads.dfp.templates || {}; 283 __tnt.ads.dfp.templates = { 284 cube:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/cube.a023713b7eff47127899286dc36e1970.js", 285 interstitial:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/interstitial.df40f87de692498682823c6773da5459.js", 286 nativeArticle:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/native-article.9b3cd3bb8591bed71346f4fe429b96dc.js", 287 pageCurl:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/page-curl.ca0c1a7372c29272ef1ccf504ced01a9.js", 288 parallax:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/parallax.0ce32932f3b4125f930bea8d431f8f03.js", 289 paw:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/paw.9ea074ccc913cb273a4b790e1e37460a.js", 290 pencil:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/pencil.2662e4159cdac4809283c5399d78644b.js", 291 reveal:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/reveal.e5d561a6b71aa2730a07fa90f5f4f6d6.js", 292 roller:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/roller.c699c542afb9f08b38613e8473ddf14f.js", 293 slider:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/slider.015001bff591d1665c6d0ec2a888b1ca.js", 294 stickyAnchor:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/sticky-anchor.b16df11ef6c433b3b8ec1881d240c9cb.js", 295 video:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/video-inline.d45f12d51e6b121b88d52db2e387136f.js", 296 wallpaper:"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/shared-content\/art\/tncms\/templates\/libraries\/flex\/components\/ads\/resources\/scripts\/templates\/wallpaper.dc1c1bace62343a130be3589fe0846f9.js" 297 }; 298 299 __tnt.ads.dfp.targeting.environment='prod'; 300 301 302 303 var browserWidth = jQuery(window).width(); 304 var cutpoint="large"; 305 if(browserWidth>=481 && browserWidth<=1024){ 306 cutpoint="medium"; 307 } else if (browserWidth<=480){ 308 cutpoint="small";
309 } 310 __tnt.ads.dfp.targeting.cutpoint = cutpoint; 311 var keywords = "#federal_politics,#starnewsroom,#federal_election,#polls,#poll_tracker,#the_signal,#election_forecast,#mark_carney,#pierre_poilievre,#starlock,#conservative_party_of_canada,#liberal_party_of_canada"; 312 if(typeof keywords === "string" && keywords.length > 0) { 313 var keywordsArray = keywords.split(','); 314 oKvng = []; 315 sKvng = ''; 316 for (var keyword of keywordsArray) { 317 oKvng.push(keyword.replace('#', '')); 318 } 319 if(oKvng.length > 0) { 320 sKvng = oKvng.join(','); 321 __tnt.ads.dfp.targeting.kvng = sKvng; 322 } 323 }__tnt.ads.dfp.targeting.assetid = '1337f598-2b2e-4b63-b5ee-0e923c663892';;__tnt.ads.dfp.targeting.section = 'interactives';__tnt.ads.dfp.targeting.subsection = '';__tnt.ads.dfp.targeting.author = 'vox pop labs_';if (__tnt.user.services) { __tnt.ads.dfp.targeting.subscriber = "true"; } else { __tnt.ads.dfp.targeting.subscriber = "false"; } 324 325 /*]]>*/</script>
vendor: 1 bytes, line 325
325
326<script>/*<![CDATA[*/ 327 googletag.cmd.push(function(){ 328 var adUnit = (window.frameElement && window.frameElement.getAttribute('data-gam-adunit')) ? window.frameElement.getAttribute('data-gam-adunit') : '/58580620/thestar.com/interactives'; 329 var mapping = googletag.sizeMapping().addSize([320, 0], [320, 50]).addSize([768, 0], []).addSize([992, 0], []).addSize([1200, 0], []).build(); 330 gptAdSlots['ad-3143188'] = googletag.defineSlot(adUnit, [[320,50]], 'ad-3143188').defineSizeMapping(mapping).setCollapseEmptyDiv(true).addService(googletag.pubads()); 331 gptAdSlots['ad-3143188'].setTargeting('gpid', '58580620/thestar.com/interactives/ad-3143188'); 332 gptAdSlots['ad-3143188'].setTargeting('pos', ['1']); 333 }); 334 /*]]>*/</script>
vendor: 1 bytes, line 334
334
335<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/ads/resources/scripts/tnt.ads.adverts.66a3812a7b5c12fde8cd998fd691ad7d.js"></script>
vendor: 1 bytes, line 335
335
336<script src="/shared-content/art/tncms/tracking.js"></script>
vendor: 1 bytes, line 336
336
337<script>/*<![CDATA[*/ __tnt.recentFive = { 338 /* 339 * Gets the data stored in 'tnt:recent:five' 340 * Returns Array 341 */ 342 get:function(){ 343 if(window.localStorage && localStorage.getItem('tnt:recent:five')!=null){ 344 try{ return JSON.parse(localStorage.getItem('tnt:recent:five')); } catch {} 345 } 346 347 return []; 348 }, 349 350 /* 351 * Sets the 'tnt:recent:five' localStorage item 352 * Returns boolean 353 */ 354 set:function(data){ 355 if(window.localStorage){ 356 try{ 357 localStorage.setItem('tnt:recent:five', JSON.stringify(data)); 358 return true; 359 } catch {} 360 } 361 362 return false; 363 }, 364 365 /* 366 * Adds the most recent item, prunes any duplicates, and trims the array down to 5 items 367 * Returns Array on success, false on fail 368 */ 369 add:function(asset){ 370 var assets = __tnt.recentFive.get(); 371 assets.unshift(asset); 372 373 if(assets.length > 1){ 374 assets = assets.filter(function(item, index, a){ return a.indexOf(item) == index }); 375 376 while(assets.length>5){ 377 assets.pop(); 378 } 379 } 380 381 if(__tnt.recentFive.set(assets)){ return assets; } 382 return false; 383 } 384 }; /*]]>*/</script>
vendor: 1 bytes, line 384
384
385<script async="async" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/scripts/save.asset.js?_dc=1789580011"></script>
vendor: 1 bytes, line 385
385
386<script>/*<![CDATA[*/ 387 388 // GPP Helper Function 389 __tnt.ads.dfp.getGppData = function(callback) { 390 var maxRetries = 5; 391 var retryDelay = 400; 392 var existsRetryCount = 0; 393 var readyRetryCount = 0; 394 var debug = /[?&]ads_log/.test(window.location.search); 395 396 function checkGppExists() { 397 if (typeof __gpp !== 'function') { 398 existsRetryCount++; 399 if (existsRetryCount < maxRetries) { 400 if (debug) console.log('GPP CMP not available, retrying... (' + existsRetryCount + '/' + maxRetries + ')'); 401 setTimeout(checkGppExists, retryDelay); 402 return; 403 } else { 404 if (debug) console.log('GPP CMP not available after ' + maxRetries + ' attempts'); 405 callback(null); 406 return; 407 } 408 } 409 fetchGppData(); 410 } 411 412 function fetchGppData() { 413 try { 414 __gpp('ping', function(pingData, success) { 415 if (!success || pingData.signalStatus !== 'ready') { 416 readyRetryCount++; 417 if (readyRetryCount < maxRetries) { 418 if (debug) console.log('GPP signal not ready, retrying... (' + readyRetryCount + '/' + maxRetries + ')'); 419 setTimeout(fetchGppData, retryDelay); 420 return; 421 } else { 422 if (debug) console.log('GPP signal not ready after ' + maxRetries + ' attempts'); 423 callback(pingData || null); 424 return; 425 } 426 } 427 callback(pingData); 428 }); 429 } catch (error) { 430 if (debug) console.log('Error getting GPP data: ' + error.message); 431 callback(null); 432 } 433 } 434 435 checkGppExists(); 436 }; 437 438 // Apply GPP Privacy Settings 439 __tnt.ads.dfp.setPrivacySettings = function(callback) { 440 __tnt.ads.dfp.getGppData(function(gppData) { 441 googletag.cmd.push(function() { 442 var disableTargetedAds = false; 443 var debug = /[?&]ads_log/.test(window.location.search); 444 445 if (gppData && gppData.parsedSections) { 446 for (var sectionName in gppData.parsedSections) { 447 var sectionData = gppData.parsedSections[sectionName]; 448 if (!sectionData) continue; 449 450 var section = sectionData[Object.keys(sectionData)[0]]; 451 if (!section) continue; 452 453 // GDPR (tcfeuv2) - Check Purpose 4 454 if (sectionName === 'tcfeuv2') { 455 var purposes = section.Purpose && section.Purpose.Consent; 456 if (!purposes || !purposes[3]) { 457 disableTargetedAds = true; 458 break; 459 } 460 } 461 462 // Canada (tcfcav1) - Check Purpose 4 463 if (sectionName === 'tcfcav1') { 464 var purposes = section.PurposesExpressConsent; 465 if (!purposes || !purposes[3]) { 466 disableTargetedAds = true; 467 break; 468 } 469 } 470 471 // CCPA (uspv1) - Check opt-out of sale 472 if (sectionName === 'uspv1') { 473 var uspString = section.uspString || ''; 474 if (uspString[2] === 'Y') { 475 disableTargetedAds = true; 476 break; 477 } 478 } 479 480 // US National & States - Check opt-out flags 481 var usRegex = /^(usnat|usca|usva|usco|usut|usct|usfl|usmt|usor|ustx|usde|usia|usne|usnh|usnj|ustn)$/i; 482 if (usRegex.test(sectionName)) { 483 if (section.TargetedAdvertisingOptOut === 1 || 484 section.SaleOptOut === 1 || 485 section.SharingOptOut === 1) { 486 disableTargetedAds = true; 487 break; 488 } 489 } 490 } 491 492 if (debug) console.log('Disable Targeted Ads: ' + disableTargetedAds); 493 } else { 494 if (debug) console.log('No GPP data available, using default privacy settings'); 495 } 496 497 // Set privacy settings in GPT 498 googletag.pubads().setPrivacySettings({ 499 'restrictDataProcessing': disableTargetedAds 500 }); 501 502 if (callback) callback(); 503 }); 504 }); 505 }; 506 507 // Main initialization with GPP check 508 googletag.cmd.push(function() { 509 510 // Targeting for client browser 511 googletag.pubads().setTargeting('browser', __tnt.client.browser.name); 512 513 // Targeting for schain 514 // Targeting for keywords 515 if (__tnt.ads.dfp.targeting) { 516 for (var k in __tnt.ads.dfp.targeting) { 517 if (__tnt.ads.dfp.targeting.hasOwnProperty(k)) { 518 googletag.pubads().setTargeting(k,__tnt.ads.dfp.targeting[k]); 519 } 520 } 521 } 522 523 // Viewable impression event listener 524 googletag.pubads().addEventListener('impressionViewable', function(event) { 525 for (var key in gptAdSlots) { 526 if (gptAdSlots[key] === event.slot && __tnt.ads.slots[key]) { 527 if (!__tnt.ads.slots[key].viewableImpression) __tnt.ads.slots[key].viewableImpression = true; 528 } 529 } 530 }); 531 532 // Publisher provided ID(PPID) 533 if (window.localStorage) { 534 var sID = window.localStorage.getItem('_us_master_id'); 535 if (sID) { 536 if (window.dataLayer) { 537 dataLayer.push({ 538 'tncms.ad.userstitch_id': sID 539 }); 540 } 541 googletag.pubads().setPublisherProvidedId(sID); 542 } 543 } 544 545 // Disable initial ad load for all ad variants 546 googletag.pubads().disableInitialLoad(); 547 548 // Fetch multiple ads at the same time 549 googletag.pubads().enableSingleRequest(); 550 551 // Enable all GPT services for all defined ad slots 552 googletag.enableServices(); 553 }); 554 /*]]>*/</script>
554 555 556 557 <title>Just how popular are Carney’s Liberals right now?</title> 558 559 560 561 <link rel="shortcut icon" type="image/x-icon" href="https://www.thestar.com/content/tncms/site/icon.ico" /> 562 563 564 <link rel="preconnect" href="//aax.amazon-adsystem.com"> 565 566 <link rel="preconnect" href="//c.amazon-adsystem.com"> 567 568 <link rel="preconnect" href="//www.google.com"> 569 570 <link rel="preconnect" href="//adservice.google.com"> 571 572 <link rel="preconnect" href="//securepubads.g.doubleclick.net"> 573 574 <link rel="preconnect" href="//stats.g.doubleclick.net"> 575 576 <link rel="preconnect" href="//tpc.googlesyndication.com"> 577 578 <link rel="preconnect" href="//pagead2.googlesyndication.com"> 579 580 <link rel="preconnect" href="//www.googletagmanager.com"> 581 582 <link rel="preconnect" href="//www.google-analytics.com"> 583 <link rel="alternate" type="application/rss+xml" title="Just how popular are Carney’s Liberals right now?" href="http://www.thestar.com/search/?f=rss&t=article&c=interactives&l=50&s=start_time&sd=desc" /> 584 <link rel="canonical" href="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html" /> 585
585<script defer src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/plugins/resources/scripts/fontawesome.2d2bffd5ae1ad5a87314065b9bf6fb87.js"></script>
585 586
586<script> 587 function initStarLogo() { 588 589 const editionLocations = {"toronto":{"home":"\/","alt":"The Star","logo":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core_ext\/resources\/images\/publication-logos\/thestar_logo.png?_dc=1785951071","mobile":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core_ext\/resources\/images\/publication-logos\/thestar_logo.png?_dc=1785951071","width":380,"height":40,"mobileWidth":190,"mobileHeight":20},"vancouver":{"home":"\/vancouver\/","alt":"The Star - Vancouver","logo":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/desktop\/star_vancouver.png?_dc=1789580010","mobile":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/mobile\/star_vancouver.png?_dc=1789580009","width":510,"height":81,"mobileWidth":157,"mobileHeight":25},"calgary":{"home":"\/calgary\/","alt":"The Star - Calgary","logo":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/desktop\/star_calgary.png?_dc=1789580010","mobile":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/mobile\/star_calgary.png?_dc=1789580009","width":510,"height":81,"mobileWidth":157,"mobileHeight":25},"edmonton":{"home":"\/edmonton\/","alt":"The Star - Edmonton","logo":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/desktop\/star_edmonton.png?_dc=1789580010","mobile":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/mobile\/star_edmonton.png?_dc=1789580009","width":510,"height":81,"mobileWidth":157,"mobileHeight":25},"winnipeg":{"home":"\/winnipeg\/","alt":"The Star - Winnipeg","logo":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/desktop\/star_winnipeg.png?_dc=1789580010","mobile":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/mobile\/star_winnipeg.png?_dc=1789580009","width":510,"height":81,"mobileWidth":157,"mobileHeight":25},"ottawa":{"home":"\/ottawa\/","alt":"The Star - Ottawa","logo":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/desktop\/star_ottawa.png?_dc=1789580010","mobile":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/mobile\/star_ottawa.png?_dc=1789580009","width":510,"height":81,"mobileWidth":157,"mobileHeight":25},"halifax":{"home":"\/halifax\/","alt":"The Star - Halifax","logo":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/desktop\/star_halifax.png?_dc=1789580010","mobile":"https:\/\/bloximages.chicago2.vip.townnews.com\/thestar.com\/content\/tncms\/live\/libraries\/flex\/components\/torstar_core\/resources\/images\/regional\/mobile\/star_halifax.png?_dc=1789580009","width":510,"height":81,"mobileWidth":157,"mobileHeight":25}}; 590 const selectedLocation = editionLocations.toronto; 591 try { 592 let root = document.querySelector(":root"); 593 root.style.setProperty('--site-logo-src', "url('"+selectedLocation.logo+"')"); 594 root.style.setProperty('--site-logo-width', selectedLocation.width+"px"); 595 root.style.setProperty('--site-logo-height', selectedLocation.height+"px"); 596 root.style.setProperty('--site-logo-mobile-src', "url('"+selectedLocation.mobile+"')"); 597 root.style.setProperty('--site-logo-mobile-width', selectedLocation.mobileWidth+"px"); 598 root.style.setProperty('--site-logo-mobile-height', selectedLocation.mobileHeight+"px"); 599 600 let logoDesktopHref = document.getElementById("siteUserHeaderHref-desktop"); 601 logoDesktopHref.href=selectedLocation.home; 602 603 let logoMobileHref = document.getElementById("siteUserHeaderHref-mobile"); 604 logoMobileHref.href=selectedLocation.home; 605 } catch(err){} 606 try { 607 608 } catch(err){c} 609 } 610 initStarLogo(); 611 </script>
611 612<link rel="preconnect" href="https://tags.crwdcntrl.net"> 613 <link rel="preconnect" href="https://bcp.crwdcntrl.net"> 614 <link rel="preconnect" href="https://c.ltmsphrcl.net"> 615 <link rel="dns-prefetch" href="https://tags.crwdcntrl.net"> 616 <link rel="dns-prefetch" href="https://bcp.crwdcntrl.net"> 617 <link rel="dns-prefetch" href="https://c.ltmsphrcl.net"> 618 <!-- Identity Links --> 619 <link rel="preconnect" href="https://bcp.st.crwdcntrl.net"> 620 <link rel="dns-prefetch" href="https://bcp.st.crwdcntrl.net"> 621 <link rel="preconnect" href="https://c.st.ltmsphrcl.net"> 622 <link rel="dns-prefetch" href="https://c.st.ltmsphrcl.net"> 623
623<script> 624 ! function() { 625 var lotameClientId = '17837'; 626 window.googletag = window.googletag || {}; 627 window.googletag.cmd = window.googletag.cmd || []; 628 var audTargetingKey = 'lotame'; 629 var pidTargetingKey = 'lpid'; 630 var panoramaIdTargetingKey = 'lpanoramaid'; 631 var audLocalStorageKey = 'lotame_' + lotameClientId + '_auds'; 632 var isUserLoggedIn = TNCMS.User.isLoggedIn(); 633 634 // Immediately load audiences and id from local storage 635 try { 636 var storedAuds = window.localStorage.getItem(audLocalStorageKey) || ''; 637 638 if (storedAuds) { 639 googletag.cmd.push(function() { 640 window.googletag.pubads().setTargeting(audTargetingKey, storedAuds.split(',')); 641 }); 642 } 643 644 var localStoragePid = window.localStorage.getItem('_cc_id') || ''; 645 if (localStoragePid) { 646 googletag.cmd.push(function() { 647 window.googletag.pubads().setTargeting(pidTargetingKey, localStoragePid); 648 }); 649 } 650 } catch(e) {} 651 652 // Callback when targeting audience is ready to push latest audience data 653 var audienceReadyCallback = function (profile) { 654 // Get audiences as an array 655 var lotameAudiences = profile.getAudiences() || []; 656 657 // Set the new target audiences for call to Google 658 googletag.cmd.push(function() { 659 window.googletag.pubads().setTargeting(audTargetingKey, lotameAudiences); 660 }); 661 662 var lotamePid = profile.getProfileId() || ''; 663 if (lotamePid) { 664 googletag.cmd.push(function() { 665 window.googletag.pubads().setTargeting(pidTargetingKey, lotamePid); 666 }); 667 } 668 669 var panoObject = window['lotame_' + lotameClientId].getPanorama() || ''; 670 if(panoObject) { 671 var panoID = panoObject.getId(); 672 var panoIDType = panoObject.getIdType(); 673 if (panoID) { 674 googletag.cmd.push(function() { 675 window.googletag.pubads().setTargeting(panoramaIdTargetingKey, panoID); 676 }); 677 } 678 679 } 680 }; 681 682 // Lotame Config 683 var lotameTagInput = { 684 data: {}, 685 config: { 686 audienceLocalStorage: audLocalStorageKey, 687 onProfileReady: audienceReadyCallback, 688 clientId: Number(17837) 689 690 } 691 }; 692 693 // Lotame initialization 694 var lotameConfig = lotameTagInput.config || {}; 695 var namespace = window['lotame_' + lotameClientId] = {}; 696 namespace.config = lotameConfig; 697 namespace.data = lotameTagInput.data || {}; 698 namespace.cmd = namespace.cmd || []; 699 700 // Handle Identity 701 if(isUserLoggedIn) { 702 var currentUserEmail = TNCMS.User.getEmail().trim().toLowerCase(); 703 window['lotame_' + lotameClientId].cmd.push(function() { 704 window['lotame_' + lotameClientId].setIdentity( 705 { id: currentUserEmail, type: 'EMAIL'} 706 ); 707 }); 708 } 709 710 } (); 711 </script>
711 712
712<script async src="https://tags.crwdcntrl.net/lt/c/17837/lt.min.js"></script>
712<script type="text/javascript"> 713 /* Image Resizer */ 714 window.addEventListener('message', receiveMessage, false) 715 function receiveMessage(event) { 716 var origin = event.origin || event.originalEvent.origin 717 if (origin !== 'https://misc.thestar.com') 718 return 719 var data = event.data.resize 720 if (data) { 721 const {height, iframe} = data; 722 if (height && iframe) { 723 const iframeElement = document.getElementById(iframe) 724 if (iframeElement) { 725 iframeElement.height = height 726 } 727 var elem = height 728 } 729 } 730 } 731 </script>
731<script> 732 /** Added for TSP-2941 - Sponsorship on weather widget */ 733 window.weatherHeaderSponsorship = false; 734 </script>
734<script> 735bDebug = false; 736if(document.location.hash.includes("swg.debug=1") || document.location.hash.includes("swg.deventitlement=DEV_MODE_SCENARIO_METER_ACCESS_GRANTED") || document.location.hash.includes("swg.deventitlement=DEV_MODE_SCENARIO_METER_ACCESS_DENIED")){ bDebug = true } 737if(bDebug){ console.log("SWG+GEA - CS-4864 - 2023/11/10 - 11:54") } 738 739window.__tnt || (window.__tnt = {}); 740window.__tnt.subscription || (__tnt.subscription = {}); 741window.__tnt.subscription.bp || (__tnt.subscription.bp = []); // array of functions run before the custom access method promises 742window.__tnt.subscription.ap || (__tnt.subscription.ap = []); // array of functions run after custom access method promises 743window.__tnt.subscription.d || (__tnt.subscription.d = []); // array of functions run on access denied 744window.__tnt.subscription.a || (__tnt.subscription.a = []); // array of functions run on access granted 745 746window.__tnt.subscription.access || (window.__tnt.subscription.access = {}); 747window.__tnt.subscription.access.promises || (window.__tnt.subscription.access.promises = []); 748window.__tnt.subscription.access.promisesStageTwo || (window.__tnt.subscription.access.promisesStageTwo = []); 749window.__tnt.subscription.access.manifest || (window.__tnt.subscription.access.manifest = { 750 denied: { 751 promise: null, 752 resolve: function(){ } 753 }, 754 granted: { 755 promise: null, 756 resolve: function(){ } 757 } 758}); 759window.__tnt.subscription.offers || (window.__tnt.subscription.offers = {}); 760window.__tnt.subscription.offers.swgData || (window.__tnt.subscription.offers.swgData = null);if(bDebug){ console.log("GEA - GEA Asset Mode Enabled"); } 761window.__tnt.subscription.geaLoaded = null; 762window.__tnt.subscription.geaPromise = new Promise(function(resolve, reject){ 763 __tnt.subscription.geaLoaded = resolve; 764}).then(function(){ 765if(bDebug){ console.log("GEA - Loaded Promise"); } 766 InitGaaMetering(); 767}); 768__tnt.subscription.access.promises.push(__tnt.subscription.geaPromise); 769 770try{ 771 var searchParams = new URL(document.location).searchParams, 772 gaaSig = null, 773 promiseWaitForGeaPos = __tnt.subscription.access.promises.length; 774 775 __tnt.subscription.resolveWaitForGea = null; 776 __tnt.subscription.access.promises[promiseWaitForGeaPos] = new Promise(function(resolve, reject){ 777 __tnt.subscription.resolveWaitForGea = resolve; 778 }).then(function(){ 779 if(bDebug){ console.log("GEA - Waited for GEA Initialization") } 780 }); 781 782 783 window.__tnt.subscription.bp.push(function(oResp){ 784 if(bDebug){ 785 console.log("GEA - Checking for race condition"); 786 console.log(oResp); 787 } 788 789 }); 790} catch(e){ console.log("GEA - An error occurred", e) } 791 792 793window.userStatus = document.createEvent('Event'); 794 userStatus.initEvent('tnt-user-status', true, true); 795 userStatus.version = 3; 796 userStatus.hasAccess = false; 797 userStatus.accessMethod = 'none'; 798 userStatus.accessError = null; 799 800/* 801 * SwG Checkout Started 802 * 803 * @event #SWGSubscriptionCheckoutStarted 804 */ 805logSWGSubscriptionCheckoutStarted = new CustomEvent('SWGSubscriptionCheckoutStarted', { detail: {} }); 806 807/* 808 * SwG Checkout Started 809 * 810 * @event #SWGSubscriptionOrderCompleted 811 */ 812logSWGSubscriptionOrderCompleted = new CustomEvent('SWGSubscriptionOrderCompleted', { detail: {} }); 813 814// Init GEA User State 815window.__tnt.subscription.gea || (window.__tnt.subscription.gea = {}); 816__tnt.subscription.gea.configured = false; 817window.userState = { granted: false };window.__tnt.subscription.gea.getUserData = function(){ 818 try{ 819 const sJWT = Cookies.get('tncms-user'); 820 if(sJWT){ 821 const sBase64URL = sJWT.split('.')[1]; 822 const sBase64 = sBase64URL.replace(/-/g, '+').replace(/_/g, '/'); 823 const sJSON = decodeURIComponent(atob(sBase64).split('').map(function(sChar){ 824 return '%' + ('00' + sChar.charCodeAt(0).toString(16)).slice(-2); 825 }).join('')); 826 return JSON.parse(sJSON); 827 } 828 }catch(e){ console.log(e) } 829}; 830 831window.__tnt.googleLogin = function(){ 832 if(bDebug){ console.log("SWG - Google Login") } 833 var googleLoginForm = document.getElementById('tn-google-login'), 834 inputReferer = document.createElement('input'), 835 inputUsername = document.createElement('input'); 836 837 if(!googleLoginForm){ 838 googleLoginForm = document.createElement('form'); 839 googleLoginForm.id = "tn-google-login"; 840 googleLoginForm.action = window.location.origin + "/users/login/"; 841 googleLoginForm.method = "POST"; 842 843 inputReferer.type = 'hidden'; 844 inputReferer.name = 'referer_url'; 845 inputReferer.value = "https://thestar.com/subscribe/success/?itm_source=swg"; 846 847 inputUsername.type = 'hidden'; 848 inputUsername.name = 'username'; 849 inputUsername.value = "provider:google"; 850 851 googleLoginForm.appendChild(inputReferer); 852 googleLoginForm.appendChild(inputUsername); 853 854 document.body.append(googleLoginForm); 855 } 856 857 googleLoginForm.submit(); 858};try{ 859 var searchParams = new URL(document.location).searchParams, 860 gaaSig = null, 861 promiseWaitForGeaPos = __tnt.subscription.access.promises.length; 862} catch(e){ console.log("GEA - An error occurred", e) } 863 864function InitGaaMetering() { 865if(bDebug){ console.log("GEA - Initializing GEA Metering", userState) } 866 867 var articleBody = document.getElementById('article-body'), 868 paywallEl = null; 869 870 if(articleBody){ 871 paywallEl = articleBody.querySelector('.access-offers-in-page'); 872if(bDebug){ 873 console.log("GEA - found article body", articleBody); 874 console.log("GEA - paywall el", paywallEl); 875} 876 if(paywallEl){ paywallEl.classList.add('hide') } 877 } 878 879 window.__tnt.subscription.ap.push(function(oResp){ 880if(bDebug){ console.log("GEA - Running promise setup") } 881 var promisePos = __tnt.subscription.access.promises.length; 882 __tnt.subscription.access.promisesStageTwo[promisePos] = new Promise(function(resolve, reject){ 883if(bDebug){ console.log("GEA - In main promise") } 884 885 function unlockArticle(entResp){ 886if(bDebug){ console.log("GEA - unlockArticle", entResp) } 887 if(paywallEl){ paywallEl.classList.add('gea-unlocked') }resolve({ 888 has_access:true, 889 data:{ 890 type:'custom_javascript', 891 name:'Google Extended Access', 892 class_name: '', 893 description: '' 894 } 895 }); 896 } 897 898 function showPaywall(){ 899 if(bDebug){ console.log("GEA - showPaywall") } 900 901 window.sessionStorage.setItem("tncms-paymentPathReferrer",window.location.href);var articleBody = document.getElementById('article-body'), 902 paywallEl = null; 903 904 if(articleBody){ 905 paywallEl = articleBody.querySelector('.access-offers-in-page'); 906 907 if(paywallEl && paywallEl.classList.contains('hide')){ 908 paywallEl.classList.remove('hide'); 909 //paywallEl.scrollIntoView(true); 910 } 911 } 912 913 resolve({ 914 has_access:false, 915 data:{ 916 type:'custom_javascript', 917 name:'Google Extended Access', 918 class_name: '', 919 description: '' 920 } 921 }); 922 } 923 924 // Site Url 925 var siteUrl = "thestar.com", 926 redirectUri = encodeURIComponent(window.location.href), 927 aAllowedReferrers = ['google.com', 'www.google.com', 'play.google.com', 'accounts.google.com', 'accounts.youtube.com', 'thestar.com', 'www.thestar.com']; 928 929if(bDebug){ 930 console.log("GEA - Checking Users Log-in Status"); 931 console.log("GEA - Allowed Referrers", aAllowedReferrers); 932 if(__tnt && __tnt.user && __tnt.user.authToken){ 933 console.log("GEA - User Logged In: ", __tnt.user); 934 }else{ 935 aAllowedReferrers.push(document.location.host); 936 } 937} 938 939 try{ 940 var gaaConfig = { 941 /* 942 * Google API Client ID 943 * googleApiClientID uses Google's register user flow 944 * 945 * 946 * googleApiClientId: 'API CLIENT ID HERE', 947 * 948 * authorizationUrl redirects a user for registration */ 949 authorizationUrl: `https://thestar.com/users/login?referer_url=${redirectUri}&itm_source=gea`, 950 951 // userState object 952 userState: window.userState, 953 954 // allowedReferrers list 955 allowedReferrers: aAllowedReferrers, 956 957 /* 958 * handleLoginPromise 959 * Runs when the user chooses to log in within the Google provided pop up 960 */ 961 handleLoginPromise: new Promise(function(resolve, reject){ 962if(bDebug){ console.log("GEA - handleLoginPromise", this) } 963 GaaMetering.getLoginPromise().then(() => { 964if(bDebug){ console.log("GEA - getLoginPromise", this) } 965 window.location = `/users/login?referer_url=${redirectUri}`; 966 }); 967 }), 968 969 /* 970 * registerUserPromise 971 * Runs when the user signs up for a new account (not sure what triggers this) 972 */ 973 registerUserPromise: new Promise(function(resolve, reject){ 974 GaaMetering.getGaaUserPromise().then((gaaUser) => { 975 fetch('https://thestar.com/tncms/user/google/register', 976 { 977 method: 'POST', 978 headers: { 979 'Content-type': 'application/json' 980 }, 981 body: JSON.stringify(gaaUser) 982 }) 983 .then(response => response.json()) 984 .then(userState => { resolve(userState); }); 985 }); 986 }), 987 988 /* 989 * publisherEntitlementPromise
990 * Reports user status to GEA, whether the user has access granted by the site, or needs GEA to grant it 991 */ 992 publisherEntitlementPromise: new Promise(function(resolve, reject){ 993 var accessStatus = {'granted': false }; 994 995 if(__tnt && __tnt.user && __tnt.user.authToken){ 996 var userData = __tnt.subscription.gea.getUserData(), 997 unixTimeStamp = TNCMS.User.getCreateTimestamp(), 998 userId = null; 999 1000 if(userData && userData.sub){ userId = userData.sub } 1001 1002 // user is a subscriber and has access 1003 if(!oResp.required && __tnt.user.services && userId){ 1004 accessStatus = { 1005 'id': userId, 1006 'registrationTimestamp': unixTimeStamp, 1007 'subscriptionTimestamp': unixTimeStamp, 1008 'granted': true, 1009 'grantReason': "SUBSCRIBER" 1010 } 1011 1012 // user is logged in and has access from metering 1013 }else if(!oResp.required && userId){ 1014 accessStatus = { 1015 'id': userId, 1016 'registrationTimestamp': unixTimeStamp, 1017 'granted': true, 1018 'grantReason': "METERING" 1019 } 1020 1021 // user is logged in, but does not have access 1022 }else if(userId){ 1023 accessStatus = { 1024 'id': userId, 1025 'registrationTimestamp': unixTimeStamp, 1026 'granted': false 1027 } 1028 } 1029 1030 // user not logged in, but access not required 1031 } else if (!oResp.required){ 1032 accessStatus = { 1033 'granted': true, 1034 'grantReason': "METERING" 1035 } 1036 } 1037if(bDebug){ console.log("GEA - publisherEntitlement", accessStatus) } 1038 resolve(accessStatus); 1039 }), 1040 1041 /* 1042 * handleSwGEntitlement 1043 * 1044 */ 1045 handleSwGEntitlement: function(entResp){ 1046if(bDebug){ console.log("GEA - handleSwgEntitlement", entResp) } 1047 }, 1048 1049 unlockArticle: unlockArticle, 1050 showPaywall: showPaywall 1051 } 1052 }catch(e){ console.log("GEA - ERROR in Config", e) } 1053 1054 try{ 1055 var searchParams = new URL(document.location).searchParams, 1056 gaaSig = null; 1057 1058 if(searchParams.get('gaa_sig')){ 1059 gaaSig = searchParams.get('gaa_sig'); 1060if(bDebug){ console.log("GEA - found gaa_sig", gaaSig) } 1061 } 1062 1063 if(gaaSig && !__tnt.subscription.gea.configured){ 1064if(bDebug){ console.log("GEA - not configured, running init", gaaConfig) } 1065 __tnt.subscription.gea.configured = true; 1066 1067 GaaMetering.init(gaaConfig); 1068 }else{ 1069if(bDebug){ console.log("GEA - signature not found or already configured, showing paywall") } 1070 showPaywall() 1071 } 1072 1073 }catch(e){ 1074 console.log("GEA - ERROR in Init ", e); 1075 1076 showPaywall() 1077 } 1078 }); 1079 1080 return oResp; 1081 }); 1082 1083 if(typeof(__tnt.subscription.resolveWaitForGea)=="function"){ __tnt.subscription.resolveWaitForGea() } 1084}; 1085 1086var offerData = [ 1087 { 1088 'blox_id': "80b4e5f6-4806-11ee-9693-ab1cbb2290f2", // id of the blox offer (individual offer, not the offer group) 1089 'swg_id': "basic" // id of the offer within the SwG setup 1090 }, 1091 { 1092 'blox_id': "44992db4-4e57-11ee-abc4-ff7681ffe761", 1093 'swg_id': "basic_annual" 1094 }, 1095 { 1096 'blox_id': "efa61084-4806-11ee-9693-6b4367f71b58", 1097 'swg_id': "basic_annual" 1098 }, 1099 { 1100 'blox_id': "67ed98ba-6eb7-11ee-b04e-4bfdb0aa194b", 1101 'swg_id': "basic_annual" 1102 }, 1103 { 1104 'blox_id': "6061021e-aa6a-11ee-8a91-b7e5ebb0cc5c", 1105 'swg_id': "basic_annual" 1106 }, 1107 { 1108 'blox_id': "1a0fb21c-bee5-11ee-b5ca-ab9e76134ea6", 1109 'swg_id': "basic_annual" 1110 }, 1111 { 1112 'blox_id': "1ac91a04-fe5a-11ee-ac1f-fb76ea8a7542", 1113 'swg_id': "basic_annual" 1114 }, 1115 { 1116 'blox_id': "08317b5a-0d57-11ef-8d8f-8b278ef2ab4d", 1117 'swg_id': "basic" 1118 }, 1119 { 1120 'blox_id': "be052cc4-4529-11ef-92df-9376d5c2ff13", 1121 'swg_id': "basic" 1122 }, 1123 { 1124 'blox_id': "36206994-8003-11ef-a503-27a6b936f934", 1125 'swg_id': "basic_annual" 1126 } 1127]; 1128__tnt.subscription.offers.customizeOffers = function(t, offer){ 1129 var footer = null, 1130 siteNameEl = document.head.querySelector('meta[property="og:site_name"]'), 1131 siteName = ""; 1132 1133 if(siteNameEl){ siteName = siteNameEl.content } 1134 1135 if(t && offer && __tnt.subscription.swg && offerData && offerData.length){ 1136 try{ 1137 footer = t.querySelector('.method-footer'); 1138 offerData.forEach(function(thisOffer){ 1139 if(offer.id == thisOffer.blox_id){ 1140 var buttonArea = document.createElement('div'), 1141 orContainer = document.createElement('div'), 1142 orEl = document.createElement('span'), 1143 textElement = document.createElement('p'); 1144 1145 buttonArea.classList.add('offer-custom-purchase-container'); 1146 buttonArea.style = "margin:auto;" // style modification should be moved to site css 1147 1148 orEl.innerHTML = "or"; 1149 orEl.classList.add("user-option-or", "text-muted"); 1150 orEl.style = "background: #ffffff;padding:0 10px;"; 1151 1152 orContainer.style = "width: 100%; text-align: center; border-bottom: 1px solid #999; line-height: 0.1em; margin: 30px 0px;"; 1153 orContainer.appendChild(orEl); 1154 1155 textElement.innerHTML = "Pay with Subscribe with Google"; 1156 textElement.classList.add("swg-text"); 1157 textElement.style="margin-bottom:20px;"; 1158 1159 var subscriptions = __tnt.subscription.swg; 1160 1161 subscriptions.setOnLoginRequest(function() { 1162 __tnt.googleLogin(); 1163 }); 1164 1165 subscriptions.setOnPaymentResponse(function(paymentResponse){ 1166 paymentResponse.then(function(resp){ 1167 var swgData = null, 1168 respRawParsed = null, 1169 respPurchaseData = null; 1170 1171 try{ 1172 if(!__tnt.subscription.offers.swgData){ JSON.parse(sessionStorage.getItem('__tnt.subscription.offers.swgData')) } 1173 }catch(error){ console.log("SWG error", error) } 1174 1175 Object.assign(logSWGSubscriptionOrderCompleted.detail, __tnt.subscription.offers.swgData); 1176 1177 if(resp && resp.raw){ 1178 respRawParse = JSON.parse(resp.raw); 1179 if(respRawParse && respRawParse.purchaseData){ respPurchaseData = JSON.parse(respRawParse.purchaseData) } 1180 if(respPurchaseData){ 1181 logSWGSubscriptionOrderCompleted.detail.order_id = respPurchaseData.orderId; 1182 logSWGSubscriptionOrderCompleted.detail.package_name = respPurchaseData.packageName; 1183 } 1184 } 1185 1186 window.dispatchEvent(logSWGSubscriptionOrderCompleted); 1187 1188 resp.complete().then(function(){ 1189 if(bDebug){ console.log("SWG - logging user in") } 1190 __tnt.googleLogin(); 1191 }); 1192 }); 1193 }); 1194 1195 var swgButton = subscriptions.createButton(function(){ 1196 var price = Number(offer.rate_price)/100; 1197 1198 if(bDebug){ console.log("SWG - offer data", offer) } 1199 __tnt.subscription.offers.swgData = { 1200 checkout_id: crypto.randomUUID(), 1201 products: [{ 1202 brand: siteName, 1203 category: "Subscribe with Google", 1204 payment_type: "Subscribe with Google", 1205 name: offer.service_name, 1206 product_id: offer.service_id, 1207 sku: offer.rate_id, 1208 price: price, 1209 position: 1, 1210 swg_product_id: thisOffer.swg_id, 1211 quantity: 1, 1212 }] 1213 } 1214 1215 sessionStorage.setItem('__tnt.subscription.offers.swgData', JSON.stringify(__tnt.subscription.offers.swgData)); 1216 subscriptions.subscribe(thisOffer.swg_id); 1217 }); 1218 buttonArea.appendChild(swgButton); 1219 1220 offerContainer = t.querySelector('.subscription-service'); 1221 if(offerContainer){ offerContainer.setAttribute('data-swg-id', thisOffer.swg_id) } 1222 1223 offerButton = footer.querySelector('.method-link'); 1224 if(offerButton){ offerButton.setAttribute('data-swg-id', thisOffer.swg_id) } 1225 1226 footer.appendChild(orContainer); 1227 footer.appendChild(textElement); 1228 footer.appendChild(buttonArea); 1229 } 1230 }); 1231 } catch(e){ console.log("SwG Button - An error occurred", e) } 1232 } 1233}</script>
1233 1234
1235<script async src="https://accounts.google.com/gsi/client" defer></script>
vendor: 1 bytes, line 1235
1235
1236<script async subscriptions-control="manual" src="https://news.google.com/swg/js/v1/swg.js"></script>
vendor: 1 bytes, line 1236
1236
1237<script async src="https://news.google.com/swg/js/v1/swg-gaa.js" onload="__tnt.subscription.geaLoaded()"></script>
1237<script> 1238 window.__tnt || (window.__tnt = {}); 1239 window.__tnt.subscription || (__tnt.subscription = {}); 1240 window.__tnt.subscription.a || (__tnt.subscription.a = []); 1241 window.__tnt.subscription.d || (__tnt.subscription.d = []); 1242 1243 /** Added for Adobe Analytics - Access Granted */ 1244 __tnt.subscription.a.push(function(oResp){ 1245 window.adobeAccessTokens = oResp; 1246 }); 1247 1248 /** Added for Adobe Analytics - Access Denied */ 1249 __tnt.subscription.d.push(function(oResp){ 1250 window.adobeAccessTokens = oResp; 1251 }); 1252 </script>
1252 1253 1254
1255<script> 1256document.addEventListener('DOMContentLoaded', function() { 1257 // Function to add event listener 1258 1259 let starDomain = true 1260 let preProd = false 1261 1262 function addLoginToggleListener() { 1263 var loginToggle = document.querySelector('.login-toggle'); 1264 if (loginToggle) { 1265 loginToggle.addEventListener('click', function(ev) { 1266 ev.preventDefault(); 1267 ev.stopPropagation(); 1268 1269 if(starDomain){ 1270 var newLink = 'https://www.thestar.com/users/login?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html'; 1271 window.location.href = newLink; 1272 }else{ 1273 const genericLoginForm = document.getElementById('user-login-form-generic'); 1274 try{ 1275 genericLoginForm.submit(); 1276 return false; 1277 } catch(err){ 1278 } 1279 } 1280 1281 return false; 1282 }, true); 1283 } 1284 } 1285 1286 // Check initially if the element exists 1287 addLoginToggleListener(); 1288 1289 // Use MutationObserver to monitor the DOM for changes 1290 var observer = new MutationObserver(function(mutations) { 1291 mutations.forEach(function(mutation) { 1292 if (mutation.addedNodes) { 1293 for (var i = 0; i < mutation.addedNodes.length; i++) { 1294 var node = mutation.addedNodes[i]; 1295 if (node.nodeType === 1) { // Check if the added node is an element 1296 if (node.matches('.login-toggle') || node.querySelector('.login-toggle')) { 1297 addLoginToggleListener(); 1298 observer.disconnect(); // Stop observing once the element is found and the listener is added 1299 break; 1300 } 1301 } 1302 } 1303 } 1304 }); 1305 }); 1306 1307 // Start observing the body for changes 1308 observer.observe(document.body, { childList: true, subtree: true }); 1309 1310 function nameFixer() { 1311 const firstNameHolders = document.querySelectorAll('strong.tn-user-screenname[class="tn-user-screenname"]'); 1312 if (firstNameHolders.length > 0 && TNCMS.User.getScreenName()) { 1313 nameFixObserver.disconnect(); // Disconnect observer if only needed once 1314 1315 let fName = "Reader"; 1316 try { 1317 fName = TNCMS.User.getFirstName(); 1318 } catch (e) { 1319 //console.error("Error getting first name:", e); 1320 } 1321 1322 firstNameHolders.forEach(holder => { 1323 holder.innerHTML = fName; 1324 }); 1325 } 1326 } 1327 1328 setTimeout(() => { 1329 nameFixer(); // Because sometimes the paywall is slow to load even though it is already on the dom. 1330 }, 3000); 1331 1332 var nameFixObserver = new MutationObserver(function (mutations) { 1333 //nameFixer(); // Call nameFixer at the start to check initial state 1334 mutations.forEach(function (mutation) { 1335 if (mutation.addedNodes) { 1336 for (var i = 0; i < mutation.addedNodes.length; i++) { 1337 var node = mutation.addedNodes[i]; 1338 if (node.nodeType === 1) { // Check if the added node is an element 1339 if (node.matches('.subscriber-offers.access-offers-in-page.access-offers-wrapper') || node.querySelector('.subscriber-offers.access-offers-in-page.access-offers-wrapper')) { 1340 nameFixer(); 1341 nameFixObserver.disconnect(); // Stop observing if only needed once 1342 return; // Exit loop early if node is found 1343 } 1344 } 1345 } 1346 } 1347 }); 1348 }); 1349 1350 // Start observing the body for changes 1351 nameFixObserver.observe(document.body, { childList: true, subtree: true }); 1352 1353 1354}); 1355</script>
1355 1356 1357 1358
1359<script> 1360new ResizeObserver(() => { 1361 let vw = document.documentElement.clientWidth / 100; 1362 document.documentElement.style.setProperty('--vw', `${vw}px`); 1363 }).observe(document.documentElement); 1364</script>
1364 1365 1366 1367
1367<script> 1368 window.sessionStorage.setItem("lastVisitedArticle","https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"); 1369 </script>
1369 1370 <!-- tsHeadScripts Loader -->
1371<script language="javascript" type="text/javascript">window.OOVVUU_RUNTIME_AUTORUN_DISABLED = false;function initDomLoadedHandler() { 1372 1373 1374 try{ 1375 window.__tnt.subscription.a.push(function(oResp){ 1376 const eventData = { 1377 event_timestamp:Date.now(), 1378 action:'paywall', 1379 displayed: false 1380 } 1381 const event = new CustomEvent("BloxPaywallStatus", {detail:eventData}); 1382 window.dispatchEvent(event); 1383 }); 1384 } catch(err){} 1385 1386 //console.log("Firing star asset code 2"); 1387 1388 const debugMode = false; 1389 1390 window.addEventListener("BLOXSubscriptionProductListViewed", function () { 1391 //console.log("Firing BLOXSubscriptionProductListViewed v051202"); 1392 //let us see if one or more of the offers are "featured" and if so, add a featured class to the subscription service div 1393 try{ 1394 let offerEls = document.querySelectorAll(".access-methods-list .subscription-service .method-featured"); 1395 for(let i=0;i<offerEls.length;i++) 1396 { 1397 if(offerEls[i].childNodes.length>0) 1398 { 1399 offerEls[i].parentNode.classList.add("featured"); 1400 } 1401 } 1402 } catch(e){} 1403 1404 //remove any hidden classes from offers 1405 /* 1406 try{ 1407 let purchaseButtons = document.querySelectorAll(".subscription-service .method-footer a.btn"); 1408 for(let i=0;i<purchaseButtons.length;i++) 1409 { 1410 purchaseButtons[i].classList.remove("hidden"); 1411 } 1412 } catch(e){} 1413 */ 1414 1415 }); 1416 1417 window.addEventListener('BLOXSubscriptionProductViewed', function (e) { 1418 //console.log("Firing BLOXSubscriptionProductViewed",e) 1419 const returnDomain = localStorage.getItem("tncms-user-site-domain"); 1420 try{ 1421 const termsContainer = document.querySelector(".tn-tos-agree"); 1422 let termsText = "I Agree to the <a href='https://www.thestar.com/site/static-pages/subscription-terms.html' aria-label='Subscription Terms' target='_blank'>Subscription Terms</a>, <a href='https://notices.torstar.com/main_terms_of_use_daily_and_community_brands_EN/' aria-label='Terms of Use' target='_blank'>Terms of Use</a> and <a href='http://notices.torstar.com/privacy-policy/index.html' aria-label='Privacy Policy' target='_blank'>Privacy Policy</a>"; 1423 termsContainer.innerHTML = termsText; 1424 1425 document.querySelector(".service-renews.purchase-standard").style.display="none"; 1426 }catch(err){ 1427 //unable to update terms 1428 } 1429 1430 }) 1431 1432 document.getElementById("form-submit-super-purchase").addEventListener("click", function() { 1433 const tos = document.getElementById('tn-tos-super-purchase'); 1434 const key = "tncms-disclaimer-checked"; 1435 if (tos.checked) { 1436 window.sessionStorage.setItem(key, "1"); 1437 } else { 1438 sessionStorage.removeItem(key); 1439 } 1440 }); 1441 1442 window.addEventListener('BLOXSubscriptionOrderCompleted', function (e) { 1443 if(debugMode) 1444 { 1445 console.log("Firing BLOXSubscriptionOrderCompleted v120606"); 1446 } 1447 /* update screenname field to display the first name the user entered on the purchase form */ 1448 try { 1449 const screenNameField = document.querySelector(".username.purchase-standard"); 1450 const userName = document.getElementById("field-purchaser-firstname-super-purchase"); 1451 /* console.log("Should be updating ",screenNameField," to "+userName.value); */ 1452 if (userName!="") 1453 { 1454 screenNameField.innerHTML = " "+userName.value; 1455 } 1456 } catch(err) { 1457 if(debugMode){ 1458 console.log("Failed to get and update screen name on purchase page."); 1459 } 1460 document.querySelector(".username.purchase-standard").innerHTML = ""; 1461 } 1462 /* updating the receipt language */
1463 let receiptText = document.querySelector("#modal-purchase-receipt p.text-center"); 1464 let extraReceiptText = "<p>You will also start receiving the Star's free morning newsletter, First Up, soon.</p>"; 1465 receiptText.insertAdjacentHTML("afterend", extraReceiptText); 1466 if(debugMode) 1467 { 1468 console.log("Should have added to receipt",receiptText,extraReceiptText); 1469 } 1470 try{ 1471 const offerModal = document.querySelector("#access-offers-modal"); 1472 const purchaseSuccessTab = offerModal.querySelector("#user-modal-tab-purchase-success"); 1473 1474 $('#access-offers-modal').on('hidden.bs.modal', function (e) { 1475 if (purchaseSuccessTab.classList.contains("active")) 1476 { 1477 /*we are closing the modal and we are on the success tab, therefore we just need to redirect to the success page */ 1478 window.sessionStorage.setItem("tncms-paymentPathReferrer",window.location.href); 1479 window.location.href="/subscribe/success/";} 1480 }) 1481 } catch(err){console.log("Error with order completed stage",err);} 1482 }) 1483 1484 1485 1486if(TNCMS.User.isLoggedIn()) 1487{ 1488 const firstNameHolders = document.querySelectorAll(".tn-user-firstname"); 1489 if(firstNameHolders.length > 0) 1490 { 1491 let sName = TNCMS.User.getScreenName(); 1492 sName = sName.split("-"); 1493 let fName = sName[0]; 1494 try{ 1495 fName = TNCMS.User.getFirstName(); 1496 } catch(e) 1497 { 1498 fName = "Reader"; 1499 } 1500 1501 for(let i=0;i<firstNameHolders.length;i++) 1502 { 1503 firstNameHolders[i].innerHTML = fName; 1504 } 1505 } 1506} 1507 1508 1509 (() => { 1510 const params = new URLSearchParams(window.location.search); 1511 1512 if (TNCMS.User.isLoggedIn() && params.has('profile_updated')) { 1513 window.profile_updated = true; 1514 1515 let observer; 1516 const getCookie = (name) => { 1517 const value = `; ${document.cookie}`; 1518 const parts = value.split(`; ${name}=`); 1519 1520 if (parts.length === 2) { 1521 return parts.pop().split(';').shift(); 1522 } 1523 1524 return null; 1525 }; 1526 1527 const checkCookie = () => { 1528 return new Promise((resolve, reject) => { 1529 const timeout = setTimeout(() => { 1530 clearInterval(checkInterval); 1531 reject(new Error('tncms_csrf_token cookie was not found')); 1532 }, 5000); 1533 1534 const checkInterval = setInterval(() => { 1535 const token = getCookie('tncms_csrf_token'); 1536 1537 if (token) { 1538 clearInterval(checkInterval); 1539 clearTimeout(timeout); 1540 resolve(token); 1541 } 1542 }, 100); 1543 }); 1544 }; 1545 1546 const updateForm = async (formElement) => { 1547 const cleanUrl = new URL(window.location.href); 1548 cleanUrl.searchParams.delete('profile_updated'); 1549 window.history.replaceState({}, '', cleanUrl); 1550 1551 try { 1552 const actionUrl = new URL(formElement.action); 1553 actionUrl.searchParams.delete('profile_updated'); 1554 formElement.action = actionUrl.toString(); 1555 } catch (e) { 1556 console.warn('===== Invalid form action:', formElement.action, e); 1557 } 1558 1559 const xOrgUrl = formElement.querySelector('input[name="x_org_url"]'); 1560 1561 if (xOrgUrl?.value) { 1562 try { 1563 const orgUrl = new URL(xOrgUrl.value, window.location.origin); 1564 orgUrl.searchParams.delete('profile_updated'); 1565 xOrgUrl.value = orgUrl.toString(); 1566 } catch (e) { 1567 console.warn('===== Invalid x_org_url:', xOrgUrl.value, e); 1568 } 1569 } 1570 1571 const xRefererUrl = formElement.querySelector('input[name="referer_url"]'); 1572 1573 if (xRefererUrl?.value) { 1574 try { 1575 const refererUrl = new URL(xRefererUrl.value, window.location.origin); 1576 refererUrl.searchParams.delete('profile_updated'); 1577 xRefererUrl.value = refererUrl.toString(); 1578 } catch (e) { 1579 console.warn('===== Invalid referer_url:', xRefererUrl.value, e); 1580 } 1581 } 1582 1583 const stop = () => observer?.disconnect(); 1584 setTimeout(stop, 10000); 1585 1586 try { 1587 await checkCookie(); 1588 formElement.submit(); 1589 } catch (e) { 1590 console.warn('===== Cookie check failed:', e); 1591 } 1592 }; 1593 1594 const checkFormReady = async () => { 1595 const formElement = document.querySelector('.user-login-panel.header > form:first-of-type'); 1596 1597 if (!formElement) { 1598 return; 1599 } 1600 1601 const xOrgUrl = formElement.querySelector('input[name="x_org_url"]'); 1602 const xRefererUrl = formElement.querySelector('input[name="referer_url"]'); 1603 1604 // Wait until Viafoura populated the form 1605 if ( 1606 formElement.action.includes('profile_updated') || 1607 xOrgUrl?.value.includes('profile_updated') || 1608 xRefererUrl?.value.includes('profile_updated') 1609 ) { 1610 await updateForm(formElement); 1611 } 1612 }; 1613 1614 observer = new MutationObserver(() => { 1615 checkFormReady().catch((e) => { 1616 console.warn('===== checkFormReady failed:', e); 1617 }); 1618 }); 1619 1620 observer.observe(document.body, { 1621 childList: true, 1622 subtree: true, 1623 attributes: true, 1624 attributeFilter: ['action', 'value'] 1625 }); 1626 1627 // Handle already existing form 1628 checkFormReady().catch((e) => { 1629 console.warn('===== Initial form check failed:', e); 1630 }); 1631 } 1632})(); 1633 1634} 1635if(document.readyState !== 'loading') {
1636 initDomLoadedHandler(); 1637} else { 1638 document.addEventListener('DOMContentLoaded', function () { 1639 initDomLoadedHandler(); 1640 }); 1641} 1642</script>
vendor: 1 bytes, line 1642
1642
1643<script> 1644 try { 1645 authorListJSON = JSON.parse('[{"author":"Vox Pop Labs","credit":null,"guid":"8c39ea58-a2d8-11ed-8b9f-5753c0e7044b"}]'); 1646 authorProfileName = ' '; 1647 authorScreenName = ''; 1648 authorProfileTitle = ''; 1649 authorProfileId = ''; 1650 if (authorListJSON.length === 0 && authorProfileName && authorProfileId){ 1651 authorListJSON = [{"author":authorProfileName,"credit":authorProfileTitle,"guid":authorProfileId}]; 1652 } 1653 else if (authorListJSON.length === 0 && !authorProfileName && authorScreenName && authorProfileId){ 1654 authorListJSON = [{"author":authorScreenName,"credit":authorProfileTitle,"guid":authorProfileId}]; 1655 } 1656 } 1657 catch(e){ 1658 } 1659 var environment = "live"; 1660 </script>
1660 1661 1662
1662<script src="https://resources.thestar.com/cf7f3d5747a0/55637cf57ed4/launch-9387fe3a1e9f.min.js" async></script>
1662 1663 1664
1664<script> 1665 window.adobeTokens = { 1666 "assetData" : { 1667 "access" : "free", 1668 "authorList" : authorListJSON ? authorListJSON : "", 1669 "authorByline" : "no byline", 1670 "counts" : { 1671 "paragraphs" : "10", 1672 "words" : "301-450 words", 1673 "wordCount" : "329" 1674 }, 1675 "flags" : "", 1676 "geo" : "", 1677 "keywords" : "#federal_politics, #starnewsroom, #federal_election, #polls, #poll_tracker, #the_signal, #election_forecast, #mark_carney, #pierre_poilievre, #starlock, #conservative_party_of_canada, #liberal_party_of_canada", 1678 "hubId" : "", 1679 "originalUUID" : "", 1680 "publishInfo" : { 1681 "startDate" : "05/21/2026", 1682 "startDateHier" : "2026|05|21", 1683 "startDateTime" : "2026-05-21T13:00:00-0400", 1684 "startTime" : "1:00 pm" 1685 }, 1686 "readTime" : "1", 1687 "sponsorship" : { 1688 "adId" : "", 1689 "advertiserId" : "", 1690 "orderId" : "" 1691 }, 1692 "title" : "Just how popular are Carney's Liberals with Canadian voters? Here's what the polls show right now", 1693 "uuid" : "1337f598-2b2e-4b63-b5ee-0e923c663892", 1694 "viafouraEnabled" : "false" 1695 }, 1696 "environment" : environment, 1697 "multimedia" : 1698 {"main":{"total":0,"videos":0,"images":1,"audios":0,"collections":0,"uuids":["aabac44d-1425-4727-a2e3-f59ed8f9c3e7"]},"inline":{"total":0,"videos":0,"images":0,"audios":0,"collections":0,"uuids":[]},"collections":[]}, 1699 "pageType" : "article", 1700 "presentation" : "", 1701 "search" : { 1702 "totalResults" : "0", 1703 "totalURLResults" : "0" 1704 }, 1705 "sections" : { 1706 "allSections" : ["interactives", "politics/federal"], 1707 "primarySection" : "interactives", 1708 "urlSections" : "|interactives", 1709 }, 1710 "siteDomain" : "thestar.com", 1711 "statusCode" : "200", 1712 "subPageType" : "asset", 1713 "urls" : { 1714 "absoluteURL" : "https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html", 1715 "canonicalURL" : "https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html" 1716 } 1717 } 1718 </script>
1718 1719 1720 1721 <meta property="mrf:cms_id" content="thestar:article_1337f598-2b2e-4b63-b5ee-0e923c663892"> 1722 <meta property="mrf:tags" content="primarySection:interactives;topLevelCategory:interactives;category:interactives;category:politics|federal;torstarTags:federal_politics;torstarTags:starnewsroom;torstarTags:federal_election;torstarTags:polls;torstarTags:poll_tracker;torstarTags:the_signal;torstarTags:election_forecast;torstarTags:mark_carney;torstarTags:pierre_poilievre;torstarTags:starlock;torstarTags:conservative_party_of_canada;torstarTags:liberal_party_of_canada;wordCountBucket:301-450 words"> 1723<!-- Google Tag Manager --> 1724
1724<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1725 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1726 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1727 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=74eL4wQLYRNQ18AwQITlNA>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); 1728 })(window,document,'script','dataLayer','GTM-WRSZQF8');</script>
1728 1729 <!-- End Google Tag Manager --> 1730 <style> 1731 /* Sticky Mobile Top Ad */ 1732 .stickyMobileAd { 1733 position: relative; 1734 } 1735 .stickyMobileAd.sticky { 1736 position: fixed; 1737 top: 49px; 1738 width:100%; 1739 background-color:white; 1740 z-index: 110; 1741 margin: 0 -15px; 1742 padding: 10px; 1743 } 1744 1745 /* Sticky Mobile Footer Ad */ 1746 @media only screen and (max-width: 767px) { 1747 #tncms-region-page_sticky_anchor::before { 1748 content: "ADVERTISEMENT"; 1749 text-align: center; 1750 font-family: Merriweather Sans, Helvetica, Roboto, Arial, sans-serif; 1751 font-size: 10px; 1752 color: #686868; 1753 letter-spacing: .6px; 1754 line-height: 20px; 1755 font-weight: bolder; 1756 display: flex; 1757 align-self: center; 1758 align-items: center; 1759 justify-content: center; 1760 } 1761 } 1762 1763 #sticky-anchor { 1764 background-color: #ecebec; 1765 } 1766 1767 #sticky-anchor > .sticky-anchor-close > svg { 1768 color: #686868; 1769 } 1770 1771 #sticky-anchor > .sticky-anchor-close { 1772 background-color: #ecebec; 1773 } 1774 1775 </style> 1776
1777<script> 1778 if(typeof grecaptcha === 'undefined') { 1779 grecaptcha = {}; 1780 } 1781 grecaptcha.ready = function(cb){ 1782 if(typeof grecaptcha === 'undefined') { 1783 // window.__grecaptcha_cfg is a global variable that stores reCAPTCHA's 1784 // configuration. By default, any functions listed in its 'fns' property 1785 // are automatically executed when reCAPTCHA loads. 1786 const c = '___grecaptcha_cfg'; 1787 window[c] = window[c] || {}; 1788 (window[c]['fns'] = window[c]['fns']||[]).push(cb); 1789 } else { 1790 cb(); 1791 } 1792 } 1793</script>
1793 1794 1795 1796 1797 1798
1798<script> 1799 var comContainer = ""; 1800 const containerId = "1337f598-2b2e-4b63-b5ee-0e923c663892"; 1801 document.addEventListener("DOMContentLoaded", function(){ 1802 const comContainerInit = (coms, schemaDiv) => { 1803 let pos = 1; 1804 comBuild = ""; 1805 if(coms.length == 0){ 1806 comSchema(); 1807 } 1808 coms.forEach(com => { 1809 let last = ","; 1810 let first = '"commentCount": ['+coms.length+'],'; 1811 if(pos == coms.length){ 1812 last = ""; 1813 } 1814 if(pos != 1){ 1815 first = ""; 1816 } 1817 let txtSafe = com["content"].replace(/(\r\n|\n|\r)/gm, ""); 1818 txtSafe = txtSafe.replace(/"/g, '\\"'); 1819 comBuild = comBuild + first +'"comment": [ { "@context": "http://schema.org/", "@type": "Comment", "datePublished": "'+ com["date_created"]+'","author": { "@context": "http://schema.org/", "@type": "Person", "name": "user" }, "text": "'+txtSafe+'", "upvoteCount": '+com["total_likes"]+', "downvoteCount": "'+com["total_dislikes"]+'" } ]'+last; 1820 pos++; 1821 }); 1822 window.comContainer = comBuild; 1823 let initSchemaEntry = '{ '+ window.comContainer +'}'; 1824 let insertPos = document.getElementsByTagName('schemaInsert'); 1825 let jsonSchema = JSON.parse(initSchemaEntry); 1826 // document.getElementById('iniSchema').innerHTML = JSON.stringify(jsonSchema); 1827 schemaDiv.innerHTML = JSON.stringify(jsonSchema); 1828 document.body.appendChild(schemaDiv); 1829 } 1830 1831 const getCommentsForSchema = () => { 1832 const requestOptions = { 1833 method: "GET", 1834 redirect: "follow" 1835 }; 1836 fetch("https://livecomments.viafoura.co/v4/livecomments/00000000-0000-4000-8000-032a225cd465?container_id="+containerId+"&reply_limit=2&sorted_by=newest&limit=10", requestOptions) 1837 .then((res) => res.json()) 1838 .then((res) => { 1839 let comCount = 0; 1840 if (res["contents"]){ 1841 comCount = res["contents"].length; 1842 } 1843 if (comCount > 0){ 1844 window.comContainer = '"commentCount = ['+comCount+']"'; 1845 let schemaDiv = document.createElement('script'); 1846 schemaDiv.setAttribute('id', 'iniSchema'); 1847 schemaDiv.setAttribute('type', 'application/ld+json'); 1848 comContainerInit(res["contents"], schemaDiv); 1849 1850 }else{ 1851 return ""; 1852 } 1853 }) 1854 .catch((error) => console.error(error)); 1855 } 1856 getCommentsForSchema(); 1857 }); 1858 </script>
1858 1859 1860
1860<script type="application/ld+json"> 1861 {"@context":"https://schema.org","@type":"NewsMediaOrganization","name":"The Toronto Star","logo":{"@context":"http://schema.org","@type":"ImageObject","url":"https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/assets/v3/media/a/3e/a3e8ae1c-2803-11ef-a4c8-4379d14d2ba0/6668670d2a4e2.image.png?resize=1200%2C1200","height":1200,"width":1200},"url":"www.thestar.com/","@id":"www.thestar.com/"} 1862 </script>
1862 1863
1863<script type="application/ld+json"> 1864 {"@context":"https://schema.org","@type":"WebSite","url":"https://www.thestar.com","potentialAction":{"@type":"SearchAction","target":"https://www.thestar.com/search?q={search_term_string}","query-input":"required name=search_term_string"}} 1865 </script>
1865<script type="application/ld+json"> 1866 { 1867 "@context" : "https://schema.org", 1868 "@type" : "Organization","sameAs": "https://en.wikipedia.org/wiki/Toronto_Star","alternateName": "the star,thestar,toronto star,torontostar,the toronto star","parentOrganization": { 1869 "@type": "NewsMediaOrganization", 1870 "name" : "Torstar Corporation", 1871 "url": "https://torstar.com/", 1872 "logo": { 1873 "@type": "ImageObject", 1874 "url": "https://www.torstar.com/images/layout/torStarLogo6.png", 1875 "width": "186", 1876 "height" : "187" 1877 } 1878 } 1879 } 1880 </script>
1880 1881
1881<script type="application/ld+json"> 1882 { 1883 "@context":"https://schema.org", 1884 1885 "@type":"NewsArticle", 1886 1887 "isAccessibleForFree":true, 1888 "articleSection":"interactives", 1889 "dateCreated":"2026-05-21T13:00:00-04:00", 1890 "dateModified":"2026-08-14T15:37:14-04:00", 1891 "datePublished":"2026-05-21T13:00:00-04:00", 1892 "headline":"Just how popular are Carney's Liberals with Canadian voters? Here's what the polls show right now", 1893 "description":"If a federal election were held today, here's how the vote breakdown would look for each party, according Vox Pop Labels models.", 1894 "mainEntityOfPage":"https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html", 1895 "image":"https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/assets/v3/editorial/a/ab/aabac44d-1425-4727-a2e3-f59ed8f9c3e7/69e27918b973e.image.jpg?crop=1763%2C926%2C0%2C124&resize=1200%2C630&order=crop%2Cresize", 1896 1897 "isPartOf":{ 1898 "@type":["CreativeWork", "Product"], 1899 "name":"Toronto Star", 1900 "productID":"thestar.com:basic" 1901 }, 1902 1903 "publisher":{ 1904 "@type":"NewsMediaOrganization","name":"Toronto Star", 1905 "publishingPrinciples":"https://www.thestar.com/site/atkinson/atkinson-principles.html"}, 1906 "author": [ 1907 1908 1909 1910 { 1911 "@type": "Person", 1912 "name": "" 1913 } 1914 1915 1916 1917 1918 ] 1919 } 1920 1921 </script>
1921 1922 1923
1923<script type="application/ld+json"> 1924 {"@context":"https://schema.org","@type":"SpeakableSpecification","cssSelector":[".asset-header .headline", ".asset-content .subscriber-preview"],"url":"https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html?utm_source=speakable&utm_medium=push"} 1925 </script>
1925<!-- generics --> 1926<link rel="icon" type="image/x-icon" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/favicon.ico?_dc=1789580010"> 1927<link rel="icon" type="image/png" sizes="32x32" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/favicon-32x32.png?_dc=1789580010"> 1928<link rel="icon" type="image/png" sizes="96x96" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/favicon-96x96.png?_dc=1789580010"> 1929<link rel="icon" type="image/png" sizes="192x192" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/android-icon-192x192.png?_dc=1789580010"> 1930 1931<!-- Android --> 1932<link rel="shortcut icon" sizes="192x192" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/android-icon-192x192.png?_dc=1789580010"> 1933 1934<!-- iOS --> 1935<link rel="apple-touch-icon" sizes="57x57" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-57x57.png?_dc=1789580010"> 1936<link rel="apple-touch-icon" sizes="60x60" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-60x60.png?_dc=1789580010"> 1937<link rel="apple-touch-icon" sizes="72x72" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-72x72.png?_dc=1789580010"> 1938<link rel="apple-touch-icon" sizes="76x76" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-76x76.png?_dc=1789580010"> 1939<link rel="apple-touch-icon" sizes="114x114" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-114x114.png?_dc=1789580010"> 1940<link rel="apple-touch-icon" sizes="120x120" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-120x120.png?_dc=1789580010"> 1941<link rel="apple-touch-icon" sizes="144x144" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-144x144.png?_dc=1789580010"> 1942<link rel="apple-touch-icon" sizes="152x152" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-152x152.png?_dc=1789580010"> 1943<link rel="apple-touch-icon" sizes="180x180" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/apple-icon-180x180.png?_dc=1789580010"> 1944 1945 1946<!-- Windows 8 IE 10--> 1947<meta name="msapplication-TileColor" content="#FFFFFF"> 1948<meta name="msapplication-TileImage" content="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/ms-icon-144x144.png?_dc=1789580010"> 1949 1950<!â Windows 8.1 + IE11 and above â> 1951<meta name="msapplication-config" content="none"/> 1952<meta name="msapplication-TileColor" content="#006ed2" /> 1953<meta name="msapplication-square70x70logo" content="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/ms-icon-70x70.png?_dc=1789580010" /> 1954<meta name="msapplication-square150x150logo" content="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/ms-icon-150x150.png?_dc=1789580010" /> 1955<meta name="msapplication-square310x310logo" content="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/favicons/thestar/ms-icon-310x310.png?_dc=1789580010" /> 1956 1957 1958
1959 <link rel="preconnect" href="https://bloximages.chicago2.vip.townnews.com"> 1960 1961 1962 <link rel="preconnect" href="https://fonts.googleapis.com"> 1963 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 1964 1965 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=STIX+Two+Text:ital,wght@0,500;0,600;0,700;1,500;1,600;1,700&family=Frank+Ruhl+Libre:wght@300;400;500;600;700;800;900&family=Merriweather+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400;1,500;1,600;1,700;1,800&display=swap"> 1966 1967 1968 1969 1970 <style> 1971 1972 1973 :root { 1974 --site-bg-color: #f8f8f8; 1975 --content-bg-color: #f8f8f8; 1976 --content-text-color: #333; 1977 --body-text-color: #333333; 1978 --link-color: #333; 1979 --accent-color: #006ed2; 1980 --accent-color2: #006ed2; 1981 --accent-color3: #0065a4; 1982 --accent-color4: #00548B; 1983 --accent-color2-community: #006633; 1984 --accent-color3-community: #006633; 1985 --nav-bg-color: #F8F8F8; 1986 --nav-link-color: #333; 1987 --top-bar-bg-color: #ffffff; 1988 --top-bar-link-color: #000; 1989 --masthead-bg-color: #ffffff; 1990 --footer-bg-color: #333; 1991 --footer-text-color: #fff; 1992 --font-daily-serif: 'Frank Ruhl Libre', Times New Roman,Times,serif; 1993 --font-daily-serif-semi: 'Frank Ruhl Libre', Times New Roman,Times,serif; 1994 --font-daily-serif-bold: 'Frank Ruhl Libre', Times New Roman,Times,serif; 1995 --font-daily-sans: 'Merriweather Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 1996 --font-daily-text: 'STIX Two Text',serif; 1997 --font-daily-text-italic: 'STIX Two Text',serif; 1998 --icon-alert-light: #B40404; 1999 --nav-home-display: none; 2000 --breaking-news-developing: #016ED2; 2001 --paywall-offer-bg: #00436a; 2002 --paywall-offer-bg-gradient: radial-gradient(circle, #00436a 0%, #00436a 100%); 2003 --site-logo-src: url("https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core_ext/resources/images/publication-logos/thestar_logo.png?_dc=1785951071"); 2004 --site-logo-height: 40px; 2005 --site-logo-width: 380px; 2006 --site-logo-mobile-src: url("https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core_ext/resources/images/publication-logos/thestar_logo.png?_dc=1785951071"); 2007 --site-logo-mobile-height: 20px; 2008 --site-logo-mobile-width: 190px; 2009 --captions-color1: #686868; 2010 --brand-star-hover: #00548B; 2011 --viafoura-badge-bg: #00436A; 2012 --subscriber-newsletter-label-border: #006ed2; 2013 --ai-summary-border-color: rgba(0, 110, 210, 0.5); 2014 } 2015 2016 </style> 2017 2018 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/navigation.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2019 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/navigation.css?_dc=1789580009"></noscript> 2020 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/pages.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2021 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/pages.css?_dc=1789580009"></noscript> 2022 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/blocks.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2023 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/blocks.css?_dc=1789580009"></noscript> 2024 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/utilities.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2025 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/utilities.css?_dc=1789580009"></noscript> 2026 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/global.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2027 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/global.css?_dc=1789580009"></noscript><link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/threecolheader.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2028 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/threecolheader.css?_dc=1789580009"></noscript><link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/stn.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2029 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/stn.css?_dc=1789580009"></noscript> 2030 2031 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/star.article.personality.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2032 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/star.article.personality.css?_dc=1789580009"></noscript> 2033 2034 2035 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/quizzes.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2036 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/quizzes.css?_dc=1789580009"></noscript> 2037 2038 2039 2040 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/storypacks.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2041 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/storypacks.css?_dc=1789580009"></noscript> 2042 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_grid_layout/resources/styles/common/gridstorypacks.css?_dc=1789580012" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2043 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_grid_layout/resources/styles/common/gridstorypacks.css?_dc=1789580012"></noscript> 2044 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_grid_layout/resources/styles/common/common.css?_dc=1789580012" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2045 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_grid_layout/resources/styles/common/common.css?_dc=1789580012"></noscript> 2046 2047 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/utilities.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2048 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/utilities.css?_dc=1789580009"></noscript> 2049 2050 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/user-control
2050s.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2051 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/user-controls.css?_dc=1789580009"></noscript> 2052 2053 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/icons.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2054 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/icons.css?_dc=1789580009"></noscript> 2055 2056 2057 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/staronly.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2058 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/staronly.css?_dc=1789580009"></noscript> 2059 2060 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/site/resources/styles/site.css?_dc=1671043982" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2061 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/site/resources/styles/site.css?_dc=1671043982"></noscript> 2062 2063 2064 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/oovvuu.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2065 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/oovvuu.css?_dc=1789580009"></noscript> 2066 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/primis.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2067 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/daily/primis.css?_dc=1789580009"></noscript> 2068 2069 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core_ext/resources/styles/common/video.override.css?_dc=1785951071" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2070 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core_ext/resources/styles/common/video.override.css?_dc=1785951071"></noscript> 2071 2072 </head> 2073 <body class="fluid fixed-scroll-nav app-editorial grid-ample blox-asset uuid-1337f598-2b2e-4b63-b5ee-0e923c663892 section-interactives type-article infinity-disabled" data-path="/interactives" data-authors='[]' data-asset-uuid="1337f598-2b2e-4b63-b5ee-0e923c663892"> 2074
2074<script type='text/javascript' src='/shared-content/art/stats/common/tracker.js'></script>
2074 2075
2075<script type='text/javascript'> 2076 <!-- 2077 if (typeof(TNStats_Tracker) !== 'undefined' && typeof(TNTracker) === 'undefined') { TNTracker = new TNStats_Tracker('www.thestar.com'); TNTracker.trackPageView(); } 2078 // --> 2079 </script>
2079 2080 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PDQV3N&townnews.product.software=BLOX&townnews.product.version=1.96.1&townnews.crm.group_id=848&townnews.content.id=1337f598-2b2e-4b63-b5ee-0e923c663892&townnews.content.title=Just+how+popular+are+Carney%27s+Liberals+with+Canadian+voters%3F+Here%27s+what+the+polls+show+right+now&townnews.content.type=article&townnews.content.published_time=2026-05-21T17%3A00%3A00Z&townnews.content.tags.0=%23federal_politics&townnews.content.tags.1=%23starnewsroom&townnews.content.tags.2=%23federal_election&townnews.content.tags.3=%23polls&townnews.content.tags.4=%23poll_tracker&townnews.content.tags.5=%23the_signal&townnews.content.tags.6=%23election_forecast&townnews.content.tags.7=%23mark_carney&townnews.content.tags.8=%23pierre_poilievre&townnews.content.tags.9=%23starlock&townnews.content.tags.10=%23conservative_party_of_canada&townnews.content.tags.11=%23liberal_party_of_canada&townnews.content.authors.0.id=8c39ea58-a2d8-11ed-8b9f-5753c0e7044b&townnews.content.authors.0.eh=e1674abbd6d93cf2b5b0133bdd004bda220b5a8b4bdc247c39236fd31e20cb68&townnews.content.authors.0.first_name=Vox+Pop+Labs&townnews.content.taxonomies.blox_sections.ns=https%3A%2F%2Fwww.townnews.com%2Fns%2Fblox%2Fv1%2Ftags%2Fsection&townnews.content.taxonomies.blox_sections.items.0=interactives&townnews.content.taxonomies.blox_sections.items.1=politics%2Ffederal&townnews.content.taxonomies.blox_flags.ns=https%3A%2F%2Fwww.townnews.com%2Fns%2Fblox%2Fv1%2Ftags%2Fflag&townnews.content.metrics.image_count=1&townnews.content.metrics.video_count=0&townnews.content.metrics.audio_count=0&townnews.content.metrics.word_count=347&townnews.content.byline=&tncms.template.version=3.155.0&tncms.page.grid=ample&tncms.page.style=none&tncms.page.path=%2Finteractives&tncms.page.syndicated=false&tncms.page.reaction=false&tncms.page.app=editorial&tncms.page.theme=flex&tncms.page.skin=flex-editorial&tncms.page.http_status=200&tncms.subscription.required=true&tncms.asset.type=article&tncms.asset.author=Vox+Pop+Labs&tncms.asset.start_hour=13&tncms.asset.id=1337f598-2b2e-4b63-b5ee-0e923c663892&tncms.asset.app=editorial&tncms.asset.ga_page=%2Finteractives%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html&tncms.vendor.outbrain=disabled&tncms.vendor.taboola=&tncms.system.render_time=407&tncms.client.is_bot=no&tncms.client.is_gdpr=no&tncms.client.noscript=yes" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 2081 <a href="#main-page-container" class="sr-only" onclick="document.getElementById('main-page-container').scrollIntoView(); return false">Skip to main content</a> 2082 2083 <!-- Google Tag Manager (noscript) --> 2084 <noscript> 2085 <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WRSZQF8>m_auth=74eL4wQLYRNQ18AwQITlNA>m_preview=>m_cookies_win=x&noscript=true" 2086 height="0" width="0" style="display:none;visibility:hidden"></iframe> 2087 </noscript> 2088 <!-- End Google Tag Manager (noscript) --> 2089 2090 2091 2092 <!-- Google Tag Manager --> 2093
2093<script> 2094 var dataLayer = window.dataLayer || []; 2095 dataLayer.push( 2096 {'user_id': __tnt.user.screenName}, 2097 {'user_state': __tnt.user.loggedIn ? 'logged in' : 'anonymous'}, 2098 {'utm_label': __tnt.urlHash('utm_label')} 2099 ); 2100 </script>
2100 2101 2102
2102<script> 2103 $(function(){ 2104 var bloxServiceIDs = []; 2105 var bloxUserServiceIds = []; 2106 var dataLayer = window.dataLayer || []; 2107 2108 2109 2110 if (__tnt.user.services){ 2111 var bloxUserServiceIDs = __tnt.user.services.replace('%2C',',').split(','); 2112 } 2113 2114 // GTM tncms.subscription.paid_access_service_ids 2115 if(bloxServiceIDs){ 2116 dataLayer.push({'tncms':{'subscription':{'access_service_ids':bloxServiceIDs.toString()}}}); 2117 } 2118 2119 // GTM tncms.subscrption.user_service_ids 2120 if(bloxUserServiceIDs){ 2121 dataLayer.push({'tncms':{'subscription':{'user_service_ids':bloxUserServiceIDs.toString()}}}); 2122 } 2123 }); 2124 </script>
2124 2125 2126 <div id="site-container"><div id="asset-contribute-bar" class="asset-edit-bar hidden-print"> 2127 <div class="asset-edit-icon"><i class="fas tnt-certificate tnt-fw"></i></div> 2128 <div class="asset-edit-message">You are the owner of this article.</div> 2129 <div class="asset-edit-btns"> 2130 <a class="btn btn-primary btn-sm" href="https://www.thestar.com/users/admin/contribute/article/?assetid=1337f598-2b2e-4b63-b5ee-0e923c663892&assettype=article"><i class="fas tnt-pencil-alt tnt-fw"></i> Edit Article</a> 2131 2132 <a class="btn btn-danger btn-sm" href="https://www.thestar.com/users/admin/contribute/article/?from_section=/interactives"><i class="fas tnt-plus tnt-fw"></i> Add New Article</a> 2133 2134 <button class="asset-edit-close btn btn-link btn-sm"><i class="fas tnt-times"></i><span class="sr-only">Close</span></button> 2135 </div> 2136 </div><div id="asset-admin-bar" class="asset-edit-bar hidden-print"> 2137 <div class="asset-edit-icon"><i class="fas tnt-lock-open tnt-fw"></i></div> 2138 <div class="asset-edit-message">You have permission to edit this article.</div> 2139 <div class="asset-edit-btns"> 2140 <a class="btn btn-primary btn-sm" target="_blank" rel="noopener nofollow" href="https://www.thestar.com/tncms/admin/editorial-asset/?edit=1337f598-2b2e-4b63-b5ee-0e923c663892"><i class="fas tnt-pencil-alt tnt-fw"></i> Edit</a> 2141 <button class="asset-edit-close btn btn-link btn-sm"><i class="fas tnt-times"></i><span class="sr-only">Close</span></button> 2142 </div> 2143 </div> 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 <aside class="hidden-print offcanvas-drawer offcanvas-drawer-left visible-sm visible-xs" aria-label="Left Main Menu" aria-expanded="false" tabindex="-1" > 2154 <div id="tncms-region-mobile-nav-top-left-region" class="tncms-region "><div id="tncms-block-3699117" class="tncms-block"> 2155<div class="mobileMenuToolsContainer"> 2156 2157 <div class="mobileMenuTopBar"> 2158 <button aria-label="Close Mobile Menu" role="button" class="mobile-menu-close"> 2159 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 12 12" stroke="currentColor" stroke-width="1" stroke-linecap="round" width="24" height="24"> 2160 <line x1="11" y1="1" x2="1" y2="11"></line> 2161 <line x1="1" y1="1" x2="11" y2="11"></line> 2162 </svg> 2163 </button> 2164 2165 <div class="mobileLoginState"> 2166 <span id='userStateButton' data-status='login'>Log In</span> 2167 2168 <form id="user-mobile-logout-form" method="post" style="display:none" action="https://www.thestar.com/users/logout/" ><input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"><input type="submit" name="logout" value="Logout" class="hide"> 2169 </form> 2170 <form id="user-mobile-login-form" style="display:none" role="form" method="post" action="https://www.thestar.com/users/login/"> 2171 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 2172 </form> 2173 2174 2175 2176 2177 </div> 2178 </div> 2179 2180 2181 2182 <a href="/about/"> 2183 <img src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/media2/resources/images//proudly-canadian/proudly-canadian-owned.png?_dc=1789580007" alt="Proudly Canadian Owned Logo" class="proudlyCanadianMobileLogo"/> 2184 </a> 2185 2186 2187 2188 <div class="mobileMenuLinks"> 2189 2190 2191 </div> 2192</div></div><div id="tncms-block-3699120" class="tncms-block"><div id="weather-3699120" class="weather-current size-small pull-left"> 2193 <ul class="list-unstyled"> 2194 <li class="current-conditions "> 2195 <a href="/weather/?weather_zip=M7A1A2" class="dropdown-toggle" aria-label="Weather">
2196 <span class="icon pull-left"> 2197 2198 <span class="fas tnt-wi-night-clear"></span> 2199 </span> 2200 <span class="pull-left temp-desc small"> 2201 <span class="temp">16°</span> 2202 2203 </span> 2204 <span class="clearfix"></span> 2205 2206 2207 <span class="weather-date-separator">|</span> 2208 <span class="weather-currentDate">Thursday, Sept. 24</span> 2209 2210 </a> 2211 2212 </li><li class="sponsor-line"><a href='https://ad.doubleclick.net/ddm/trackclk/N1381746.280442TORONTOSTAR/B36413023.454436571;dc_trk_aid=647942558;dc_trk_cid=261696611;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;ltd=;dc_tdv=1' sponsored' target='_blank' rel='noopener sponsored'><strong><u>Play Now! $60M</u></strong><strong><u> + $6MM</u></strong><img src='https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/assets/v3/editorial/9/62/962391b6-a783-4f5d-90fb-e2b416f33559/685808027fb7b.preview.png' class='img-responsive tnt-prop-img lazyloaded' alt='OLG Lottery'></a></li></ul> 2213</div> 2214 2215 2216 <div class="clearfix"></div>
2217<script> 2218 if(window.location.pathname.indexOf('subscribe') < 0) { 2219 window.weatherHeaderSponsorship = true; 2220 window.weatherSponsor = 'OLG Lottery'; 2221 } 2222 </script>
2222<script>window.weatherSponsorURL = 'https://ad.doubleclick.net/ddm/trackclk/N1381746.280442TORONTOSTAR/B36413023.454436571;dc_trk_aid=647942558;dc_trk_cid=261696611;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;ltd=;dc_tdv=1'</script>
2222</div><div id="tncms-block-3699114" class="tncms-block"> 2223<div class="mobileMenuToolsContainer"> 2224 2225 2226 2227 2228 2229 <div class="mobileMenuSearch"> 2230 <div id='site-search-form-3699114' class="user-controls-search"> 2231 <form id="site-search-3699114" aria-label="Site search" action="/search/" method="GET"> 2232 <input type="hidden" name="l" value="25"> 2233 <input type="hidden" name="s" value=""> 2234 <input type="hidden" name="sd" value="desc"> 2235 <input type="hidden" name="f" value="html"> 2236 <input type="hidden" name="t" value="article,video,youtube,collection"> 2237 <input type="hidden" name="app" value="editorial"> 2238 <input type="hidden" name="nsa" value="eedition"> 2239 <div id="site-search-form-3699114" class="site-search-form input-group form-control"> 2240 <label for="site-search-3699114-term" class="sr-only">Site search</label> 2241 <input id="site-search-3699114-term" name="q" title="Site search" type="text" placeholder="Search..." class="form-control" autocomplete="off"> 2242 <input type="submit" class="hide" value="Search"> 2243 <span class="input-group-btn"> 2244 <button id="site-search-3699114-btn" class="btn btn-link" aria-label="Submit Site Search" type="submit"> 2245 <span class="hidden-xl hidden-lg hidden-md fas tnt-search"></span> 2246 <span id="site-search-button-3699114" class="hidden-xs hidden-sm">Search</span> 2247 </button> 2248 </span> 2249 </div> 2250 <div class="user-controls-cancel-button"> 2251 <span id="search-cancel-3699114" aria-label="Clear Search"> 2252 <span class="fas tnt-times"></span> 2253 </span> 2254 </div> 2255 </form> 2256 2257 </div> 2258 2259 </div> 2260 2261 <div class="mobileMenuLinks"> 2262 2263 2264 <div class="mobileMenuLink"> 2265 <a tabindex="0" href="/newsletters/?itm_source=newsletter-header-link" ><i class='fas tnt-envelope'></i>Newsletters</a> 2266 </div> 2267 2268 2269 2270 <div class="mobileMenuLink"> 2271 <a tabindex="0" class="epaper" href="https://waterloorecord.pressreader.com/" target="_blank" rel="noopener"><i class="fas tnt-file"></i>Today's paper</a> 2272 </div> 2273 2274 </div> 2275</div></div></div> 2276 <div id="mobile-primary-panel"> 2277 <div id="tncms-region-nav-mobile-nav-left" class="tncms-region-nav"><div id="mobile-nav-left_menu" class="panel-group nav navbar-nav" role="tablist" aria-hidden="true"><div class="panel panel-default "> 2278 <div class="panel-heading" role="tab"> 2279 <div class="panel-title"><a tabindex="-1" aria-hidden="true" href="/" class="nav-link tnt-section-home ">Home</a> 2280 </div> 2281 </div></div><div class="panel panel-default "> 2282 <div class="panel-heading" role="tab"> 2283 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-2" data-target="#mobile-nav-left_menu-child-2"> 2284 <i class="fas tnt-chevron-down"></i> 2285 </span><a tabindex="-1" aria-hidden="true" href="/news/gta/" class="nav-link tnt-section-gta ">GTA</a> 2286 </div> 2287 </div><ul id="mobile-nav-left_menu-child-2" class="collapse nav navbar-nav"> 2288 <li> 2289 <a tabindex="-1" aria-hidden="true" href="https://readerschoice.thestar.com/readerschoice-toronto/" target="_blank" rel="noopener" class="nav-link tnt-section-readers-choice-awards ">Readersâ Choice Awards</a> 2290 2291 </li></ul></div><div class="panel panel-default "> 2292 <div class="panel-heading" role="tab"> 2293 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-3" data-target="#mobile-nav-left_menu-child-3"> 2294 <i class="fas tnt-chevron-down"></i> 2295 </span><a tabindex="-1" aria-hidden="true" href="/news/canada/" class="nav-link tnt-section-canada ">Canada</a> 2296 </div> 2297 </div><ul id="mobile-nav-left_menu-child-3" class="collapse nav navbar-nav"> 2298 <li> 2299 <a tabindex="-1" aria-hidden="true" href="/news/ontario/" class="nav-link tnt-section-ontario ">Ontario</a> 2300 2301 </li> 2302 <li> 2303 <a tabindex="-1" aria-hidden="true" href="/news/canada/british-columbia/" class="nav-link tnt-section-british-columbia ">British Columbia</a> 2304 2305 </li> 2306 <li> 2307 <a tabindex="-1" aria-hidden="true" href="/news/canada/alberta/" class="nav-link tnt-section-alberta ">Alberta</a> 2308 2309 </li> 2310 <li> 2311 <a tabindex="-1" aria-hidden="true" href="/news/canada/quebec/" class="nav-link tnt-section-quebec ">
2311Quebec</a> 2312 2313 </li> 2314 <li> 2315 <a tabindex="-1" aria-hidden="true" href="/news/canada/nova-scotia/" class="nav-link tnt-section-nova-scotia ">Nova Scotia</a> 2316 2317 </li></ul></div><div class="panel panel-default "> 2318 <div class="panel-heading" role="tab"> 2319 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-4" data-target="#mobile-nav-left_menu-child-4"> 2320 <i class="fas tnt-chevron-down"></i> 2321 </span><a tabindex="-1" aria-hidden="true" href="/politics/" class="nav-link tnt-section-politics ">Politics</a> 2322 </div> 2323 </div><ul id="mobile-nav-left_menu-child-4" class="collapse nav navbar-nav"> 2324 <li> 2325 <a tabindex="-1" aria-hidden="true" href="/politics/federal/" class="nav-link tnt-section-federal-politics ">Federal Politics</a> 2326 2327 </li> 2328 <li> 2329 <a tabindex="-1" aria-hidden="true" href="/politics/provincial/" class="nav-link tnt-section-provincial-politics ">Provincial Politics</a> 2330 2331 </li> 2332 <li> 2333 <a tabindex="-1" aria-hidden="true" href="/politics/political-opinion/" class="nav-link tnt-section-political-opinion ">Political Opinion</a> 2334 2335 </li></ul></div><div class="panel panel-default "> 2336 <div class="panel-heading" role="tab"> 2337 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-5" data-target="#mobile-nav-left_menu-child-5"> 2338 <i class="fas tnt-chevron-down"></i> 2339 </span><a tabindex="-1" aria-hidden="true" href="/news/world/" class="nav-link tnt-section-world ">World</a> 2340 </div> 2341 </div><ul id="mobile-nav-left_menu-child-5" class="collapse nav navbar-nav"> 2342 <li> 2343 <a tabindex="-1" aria-hidden="true" href="/news/world/united-states/" class="nav-link tnt-section-united-states ">United States</a> 2344 2345 </li> 2346 <li> 2347 <a tabindex="-1" aria-hidden="true" href="/news/world/americas/" class="nav-link tnt-section-americas ">Americas</a> 2348 2349 </li> 2350 <li> 2351 <a tabindex="-1" aria-hidden="true" href="/news/world/europe/" class="nav-link tnt-section-europe ">Europe</a> 2352 2353 </li> 2354 <li> 2355 <a tabindex="-1" aria-hidden="true" href="/news/world/asia/" class="nav-link tnt-section-asia ">Asia</a> 2356 2357 </li> 2358 <li> 2359 <a tabindex="-1" aria-hidden="true" href="/news/world/africa/" class="nav-link tnt-section-africa ">Africa</a> 2360 2361 </li> 2362 <li> 2363 <a tabindex="-1" aria-hidden="true" href="/news/world/australia/" class="nav-link tnt-section-australia ">Australia</a> 2364 2365 </li> 2366 <li> 2367 <a tabindex="-1" aria-hidden="true" href="/news/world/middle-east/" class="nav-link tnt-section-middle-east ">Middle East</a> 2368 2369 </li></ul></div><div class="panel panel-default "> 2370 <div class="panel-heading" role="tab"> 2371 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-6" data-target="#mobile-nav-left_menu-child-6"> 2372 <i class="fas tnt-chevron-down"></i> 2373 </span><a tabindex="-1" aria-hidden="true" href="/opinion/" class="nav-link tnt-section-opinion ">Opinion</a> 2374 </div> 2375 </div><ul id="mobile-nav-left_menu-child-6" class="collapse nav navbar-nav"> 2376 <li> 2377 <a tabindex="-1" aria-hidden="true" href="/opinion/star-columnists/" class="nav-link tnt-section-star-columnists ">Star Columnists</a> 2378 2379 </li> 2380 <li> 2381 <a tabindex="-1" aria-hidden="true" href="/opinion/editorials/" class="nav-link tnt-section-editorials ">Editorials</a> 2382 2383 </li> 2384 <li> 2385 <a tabindex="-1" aria-hidden="true" href="/opinion/contributors/" class="nav-link tnt-section-contributors ">Contributors</a> 2386 2387 </li> 2388 <li> 2389 <a tabindex="-1" aria-hidden="true" href="/opinion/letters-to-the-editor/" class="nav-link tnt-section-letters-to-the-editor ">Letters To The Editor</a> 2390 2391 </li> 2392 <li> 2393 <a tabindex="-1" aria-hidden="true" href="/opinion/editorial-cartoons/" class="nav-link tnt-section-editorial-cartoons ">Editorial Cartoons</a> 2394 2395 </li></ul></div><div class="panel panel-default "> 2396 <div class="panel-heading" role="tab"> 2397 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-7" data-target="#mobile-nav-left_menu-child-7"> 2398 <i class="fas tnt-chevron-down"></i> 2399 </span><a tabindex="-1" aria-hidden="true" href="/life/" class="nav-link tnt-section-life ">Life</a> 2400 </div> 2401 </div><ul id="mobile-nav-left_menu-child-7" class="collapse nav navbar-nav"> 2402 <li> 2403 <a tabindex="-1" aria-hidden="true" href="/life/relationships/" class="nav-link tnt-section-relationships ">Relationships</a> 2404 2405 </li> 2406 <li> 2407 <a tabindex="-1" aria-hidden="true" href="/life/food-and-drink/" class="nav-link tnt-section-food-and-drink ">Food and Drink</a> 2408 2409 </li> 2410 <li> 2411 <a tabindex="-1" aria-hidden="true" href="/life/home-and-garden/" class="nav-link tnt-section-home-and-garden ">Home and Garden</a> 2412 2413 </li> 2414 <li> 2415 <a tabindex="-1" aria-hidden="true" href="/life/beauty-and-fashion/" class="nav-link tnt-section-beauty-and-fashion ">Beauty and Fashion</a> 2416 2417 </li> 2418 <li> 2419 <a tabindex="-1" aria-hidden="true" href="/life/health-wellness/" class="nav-link tnt-section-health ">Health</a> 2420 2421 </li> 2422 <li> 2423 <a tabindex="-1" aria-hidden="true" href="/life/travel/" class="nav-link tnt-section-travel ">Travel</a> 2424 2425 </li> 2426 <li> 2427 <a tabindex="-1" aria-hidden="true" href="/life/autos/" class="nav-link tnt-section-autos ">Autos</a> 2428 2429 </li> 2430 <li> 2431 <a tabindex="-1" aria-hidden="true" href="/life/horoscopes/" class="nav-link tnt-section-horoscopes ">Horoscopes</a> 2432 2433 </li> 2434 <li> 2435 <a tabindex="-1" aria-hidden="true" href="https://obituaries.thestar.com/" target="_blank" rel="noopener" class="nav-link tnt-section-obituaries ">Obituaries</a> 2436 2437 </li></ul></div><div class="panel panel-default "> 2438 <div class="panel-heading" role="tab"> 2439 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-8" data-target="#mobile-nav-left_menu-child-8"> 2440 <i class="fas tnt-chevron-down"></i> 2441 </span><a tabindex="-1" aria-hidden="true" href="/sports/" class="nav-link tnt-section-sports ">Sports</a> 2442 </div> 2443 </div><ul id="mobile-nav-left_menu-child-8" class="collapse nav navbar-nav"> 2444 <li> 2445 <a tabindex="-1" aria-hidden="true" href="/sports/hockey/" class="nav-link tnt-section-nhl ">NHL</a> 2446 2447 </li> 2448 <li> 2449 <a tabindex="-1" aria-hidden="true" href="/sports/basketball/" class="nav-link tnt-section-nba ">NBA</a> 2450 2451 </li> 2452 <li> 2453 <a tabindex="-1" aria-hidden="true" href="/sports/baseball/" class="nav-link tnt-section-mlb ">MLB</a> 2454 2455 </li> 2456 <li> 2457 <a tabindex="-1" aria-hidden="true" href="/sports/football/" class="nav-link tnt-section-nfl ">NFL</a> 2458 2459 </li> 2460 <li> 2461 <a tabindex="-1" aria-hidden="true" href="/sports/football/cfl/" class="nav-link tnt-section-cfl ">CFL</a> 2462 2463 </li> 2464 <li> 2465 <a tabindex="-1" aria-hidden="true" href="/sports/sports-betting/" class="nav-link tnt-section-sports-betting ">Sports Betting</a> 2466 2467 </li> 2468 <li> 2469 <a tabindex="-1" aria-hidden="true" href="/sports/golf/" class="nav-link tnt-section-golf ">Golf</a> 2470 2471 </li> 2472 <li> 2473 <a tabindex="-1" aria-hidden="true" href="/sports/soccer/" class="nav-link tnt-section-soccer ">Soccer</a> 2474 2475 </li> 2476 <li> 2477 <a tabindex="-1" aria-hidden="true" href="/sports/tennis/" class="nav-link tnt-section-tennis ">Tennis</a> 2478 2479 </li> 2480 <li> 2481 <a tabindex="-1" aria-hidden="true" href="/sports/auto-racing/" class="nav-link tnt-section-auto-racing ">Auto Racing</a> 2482 2483 </li> 2484 <li> 2485 <a tabindex="-1" aria-hidden="true" href="/sports/cricket/" class="nav-link tnt-section-cricket ">Cricket</a> 2486 2487 </li> 2488 <li> 2489 <a tabindex="-1" aria-hidden="true" href="/sports/olympics-and-paralympics/" class="nav-link tnt-section-olympics-and-paralympics ">Olympics and Paralympics</a> 2490 2491 </li></ul></div><div class="panel panel-default "> 2492 <div class="panel-heading" role="tab"> 2493 <div class="panel-title"><a tabindex="-1" aria-hidden="true" href="/real-estate/" class="nav-link tnt-section-real-estate ">Real Estate</a> 2494 </div> 2495 </div></div><div class="panel panel-default "> 2496 <div class="panel-heading" role="tab"> 2497 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-10" data-target="#mobile-nav-left_menu-child-10"> 2498 <i class="fas tnt-chevron-down"></i> 2499 </span><a tabindex="-1" aria-hidden="true" href="/entertainment/" class="nav-link tnt-section-entertainment ">Entertainment</a> 2500 </div> 2501 </div><ul id="mobile-nav-left_menu-child-10" class="collapse nav navbar-nav"> 2502 <li> 2503 <a tabindex="-1" aria-hidden="true" href="/entertainment/television/" class="nav-link tnt-section-television ">Television</a> 2504 2505 </li> 2506 <li> 2507 <a tabindex="-1" aria-hidden="true" href="/entertainment/music/" class="nav-link tnt-section-music ">Music</a> 2508 2509 </li> 2510 <li> 2511 <a tabindex="-1" aria-hidden="true" href="https://www.thestar.com/entertainment/music/taylor-swift/" target="_blank" rel="noopener" class="nav-link tnt-section-taylor-swift ">Taylor Swift</a> 2512 2513 </li> 2514 <li> 2515 <a tabindex="-1" aria-hidden="true" href="/entertainment/books/" class="nav-link tnt-section-books ">Books</a> 2516 2517 </li> 2518 <li> 2519 <a tabindex="-1" aria-hidden="true" href="/entertainment/movies/" class="nav-link tnt-section-movies ">Movies</a> 2520 2521 </li> 2522 <li> 2523 <a tabindex="-1" aria-hidden="true" href="/entertainment/stage/" class="nav-link tnt-section-stage ">Stage</a> 2524 2525
2525 </li> 2526 <li> 2527 <a tabindex="-1" aria-hidden="true" href="/entertainment/visual-arts/" class="nav-link tnt-section-visual-arts ">Visual Arts</a> 2528 2529 </li> 2530 <li> 2531 <a tabindex="-1" aria-hidden="true" href="https://diversions.thestar.com/" target="_blank" rel="noopener" class="nav-link tnt-section-fun-games ">Fun & Games</a> 2532 2533 </li> 2534 <li> 2535 <a tabindex="-1" aria-hidden="true" href="https://diversions.thestar.com/comics.html" target="_blank" rel="noopener" class="nav-link tnt-section-comics ">Comics</a> 2536 2537 </li> 2538 <li> 2539 <a tabindex="-1" aria-hidden="true" href="/entertainment/tv-listings/" class="nav-link tnt-section-tv-listings ">TV Listings</a> 2540 2541 </li></ul></div><div class="panel panel-default "> 2542 <div class="panel-heading" role="tab"> 2543 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-11" data-target="#mobile-nav-left_menu-child-11"> 2544 <i class="fas tnt-chevron-down"></i> 2545 </span><a tabindex="-1" aria-hidden="true" href="/business/" class="nav-link tnt-section-business ">Business</a> 2546 </div> 2547 </div><ul id="mobile-nav-left_menu-child-11" class="collapse nav navbar-nav"> 2548 <li> 2549 <a tabindex="-1" aria-hidden="true" href="/business/small-business/" class="nav-link tnt-section-small-business ">Small Business</a> 2550 2551 </li> 2552 <li> 2553 <a tabindex="-1" aria-hidden="true" href="/business/technology/" class="nav-link tnt-section-technology ">Technology</a> 2554 2555 </li> 2556 <li> 2557 <a tabindex="-1" aria-hidden="true" href="/business/personal-finance/" class="nav-link tnt-section-personal-finance ">Personal Finance</a> 2558 2559 </li> 2560 <li> 2561 <a tabindex="-1" aria-hidden="true" href="/business/mars/" class="nav-link tnt-section-innovation ">Innovation</a> 2562 2563 </li></ul></div><div class="panel panel-default "> 2564 <div class="panel-heading" role="tab"> 2565 <div class="panel-title"><span tabindex="-1" aria-hidden="true" data-toggle="collapse" class="expand-children collapsed pull-right" aria-expanded="false" aria-controls="mobile-nav-left_menu-child-12" data-target="#mobile-nav-left_menu-child-12"> 2566 <i class="fas tnt-chevron-down"></i> 2567 </span><a tabindex="-1" aria-hidden="true" href="/podcasts/" class="nav-link tnt-section-podcasts ">Podcasts</a> 2568 </div> 2569 </div><ul id="mobile-nav-left_menu-child-12" class="collapse nav navbar-nav"> 2570 <li> 2571 <a tabindex="-1" aria-hidden="true" href="/podcasts/this-matters/" class="nav-link tnt-section-this-matters ">This Matters</a> 2572 2573 </li> 2574 <li> 2575 <a tabindex="-1" aria-hidden="true" href="/podcasts/its-political/" class="nav-link tnt-section-it-s-political ">Itâs Political</a> 2576 2577 </li> 2578 <li> 2579 <a tabindex="-1" aria-hidden="true" href="/podcasts/billionaire-murders/" class="nav-link tnt-section-the-billionaire-murders ">The Billionaire Murders</a> 2580 2581 </li> 2582 <li> 2583 <a tabindex="-1" aria-hidden="true" href="/podcasts/deep-left-field/" class="nav-link tnt-section-deep-left-field ">Deep Left Field </a> 2584 2585 </li></ul></div><div class="panel panel-default "> 2586 <div class="panel-heading" role="tab"> 2587 <div class="panel-title"><a tabindex="-1" aria-hidden="true" href="/news/investigations/" class="nav-link tnt-section-investigations ">Investigations</a> 2588 </div> 2589 </div></div></div></div> 2590 2591 2592 <div id="tncms-region-mobile-nav-bottom-left-region" class="tncms-region "></div> 2593 </div> 2594 <div id="mobile-secondary-panel" style="display:none !important"> 2595 2596 </div> 2597 </aside> 2598 2599 2600 2601 <div class="offcanvas-inner"> 2602 <div class="offcanvas-close-btn hidden-md hidden-lg"></div> 2603 2604 2605 2606 2607 2608 2609 2610 2611 <div id="site-top-nav-container" class="hidden-sm hidden-xs hidden-print"> 2612 <header id="site-top-nav" class="container_fluid"> 2613 <div class="row"> 2614 <div id="topbar-col-one" class="col-md-4 col-sm-4"><div id="tncms-region-topbar-col-one" class="tncms-region "><div id="tncms-block-3699123" class="tncms-block"><div id="weather-3699123" class="weather-current size-small pull-left"> 2615 <ul class="list-unstyled"> 2616 <li class="current-conditions "> 2617 <a href="/weather/?weather_zip=M7A1A2" class="dropdown-toggle" aria-label="Weather">
2618 <span class="icon pull-left"> 2619 2620 <span class="fas tnt-wi-night-clear"></span> 2621 </span> 2622 <span class="pull-left temp-desc small"> 2623 <span class="temp">16°</span> 2624 2625 </span> 2626 <span class="clearfix"></span> 2627 2628 2629 <span class="weather-date-separator">|</span> 2630 <span class="weather-currentDate">Thursday, Sept. 24</span> 2631 2632 </a> 2633 2634 </li><li class="sponsor-line"><a href='https://ad.doubleclick.net/ddm/trackclk/N1381746.280442TORONTOSTAR/B36413023.454436571;dc_trk_aid=647942558;dc_trk_cid=261696611;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;ltd=;dc_tdv=1' sponsored' target='_blank' rel='noopener sponsored'><strong><u>Play Now! $60M</u></strong><strong><u> + $6MM</u></strong><img src='https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/assets/v3/editorial/9/62/962391b6-a783-4f5d-90fb-e2b416f33559/685808027fb7b.preview.png' class='img-responsive tnt-prop-img lazyloaded' alt='OLG Lottery'></a></li></ul> 2635</div> 2636 2637 2638 <div class="clearfix"></div>
2639<script> 2640 if(window.location.pathname.indexOf('subscribe') < 0) { 2641 window.weatherHeaderSponsorship = true; 2642 window.weatherSponsor = 'OLG Lottery'; 2643 } 2644 </script>
2644<script>window.weatherSponsorURL = 'https://ad.doubleclick.net/ddm/trackclk/N1381746.280442TORONTOSTAR/B36413023.454436571;dc_trk_aid=647942558;dc_trk_cid=261696611;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;ltd=;dc_tdv=1'</script>
2644</div></div></div> 2645 <div id="topbar-col-two" class="col-md-4 col-sm-4"><div id="tncms-region-topbar-col-two" class="tncms-region "><div id="tncms-block-3140365" class="tncms-block"> 2646<style> 2647.site-logo-desktop { 2648 background-image: var(--site-logo-src); 2649 height: var(--site-logo-height); 2650 width: var(--site-logo-width); 2651 background-size:cover; 2652 display:block; 2653} 2654#topbar-col-two #tncms-region-topbar-col-two { 2655 margin: 0 !important; 2656} 2657 @media (max-width: 992px) { 2658 .site-logo-desktop { 2659 background-image: var(--site-logo-mobile-src); 2660 height: var(--site-logo-mobile-height); 2661 width: var(--site-logo-mobile-width); 2662 background-size:cover; 2663 display:block; 2664 } 2665 } 2666 @media (min-width: 993px) { 2667 #topbar-col-two { 2668 padding-top: 12px !important; 2669 } 2670 } 2671 @media (max-width: 411px) { 2672 .site-logo-desktop { 2673 height: 17px; 2674 width: 157px; 2675 background-size:cover; 2676 display:block; 2677 } 2678 .user-promo-button { 2679 margin-right: 8px !important; 2680 margin-left: 8px !important; 2681 } 2682 } 2683 2684 @media (min-width: 993px) and (max-width: 1080px) { 2685 .site-logo-desktop { 2686 height: 34px !important; 2687 width: 320px !important; 2688 } 2689 } 2690</style> 2691<div class="site-logo-container text-left siteUserHeader-desktop" style="height:40px;"> 2692 <div class="logo-middle"> 2693 <a id="siteUserHeaderHref-desktop" title="Toronto Star" href="/" aria-label="Home page" class="site-logo-desktop"></a> 2694 </div> 2695</div></div></div></div> 2696 <div id="topbar-col-three" class="col-md-4 col-sm-4"><div id="tncms-region-topbar-col-three" class="tncms-region "><div id="tncms-block-2841699" class="tncms-block"> 2697<div class="user-controls"> 2698 <div id="user-controls-2841699" class="user-controls-main" style="position:relative;z-index:1010"> 2699 2700 2701 <div id="user-promo-2841699" class="user-promo"> 2702 2703 <div class="user-promo-desktop left"> 2704 2705 <div class="anonymous hidden"> 2706 2707 <div data-type='danon' class="user-promo-button"> 2708 <a href="https://www.thestar.com/subscribe/trial-purchase/"> 2709 <div class="line1">Try Us</div> 2710 <div class="line2">7-Day Trial</div> 2711 </a> 2712 </div> 2713 </div> 2714 2715 2716 <div class="registered hidden"> 2717 2718 <div data-type='dreg' class="user-promo-button"> 2719 <a href="https://www.thestar.com/subscribe/?sub_referrer=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 2720 <div class="line1">SALE: Only $1</div> 2721 <div class="line2">Subscribe Now</div> 2722 </a> 2723 </div> 2724 </div> 2725 2726 2727 <div class="subscriber hidden"> 2728 <div data-type='dsub' class="user-promo-button"> 2729 <a href="https://www.thestar.com/newsletters/?itm_source=newsletter-header-link"> 2730 <div class="line1">Newsletters</div> 2731 2732 </a> 2733 </div> 2734 </div> 2735 2736 </div> 2737 2738 </div> 2739 2740 <div id="user-control-panel-2841699" class="user-login-panel header"> 2741 <button class="btn btn-secondary dropdownMenuButton loggedout" aria-label="sign in" type="button" id="userControlPanel-2841699" 2742 data-placement="header" data-status="closed" data-user="loggedout"> 2743 <span class="userName">Sign In</span> 2744 <span class="userIconSpan icon-guest"></span> 2745 <i class="userPanelIndicator fas tnt-chevron-down"></i> 2746 </button> 2747 <div class="user-controls-menu closed" aria-label="User menu"> 2748 <ul role="menu"> 2749
2750 <li class="user-controls-dropdown-user-email" role="menuitem" id="user-email-2841699"></li> 2751 2752 <li role="menuitem"><a class="dropdown-item" href="/users/admin/" aria-label="Manage Profile" rel="nofollow">Manage Profile<i class="fas tnt-chevron-right"></i></a></li> 2753 <li role="menuitem"><a class="dropdown-item" href="/users/admin/service/" aria-label="Subscriptions" rel="nofollow">Subscriptions<i class="fas tnt-chevron-right"></i></a></li> 2754 <li role="menuitem"><a class="dropdown-item" href="/users/admin/service/?view=transactions" aria-label="Billing Information" rel="nofollow">Billing Information<i class="fas tnt-chevron-right"></i></a></li> 2755 <li role="menuitem"><a class="dropdown-item" href="/users/admin/list/" rel="nofollow" aria-label="Saved Articles">Saved Articles<i class="fas tnt-chevron-right"></i></a></li> 2756 2757 <li role="menuitem"><a class="dropdown-item" href="/newsletters/" aria-label="Newsletters" >Newsletters<i class="fas tnt-chevron-right"></i></a></li> 2758 2759 <li role="menuitem"><a class="dropdown-item" href="/site/notifications/" aria-label="Notifications" >Notifications<i class="fas tnt-chevron-right"></i></a></li> 2760 2761 2762 2763 <li role="menuitem" id="sub-perks-2841699" style="display: none;"><a class="dropdown-item" href="/site/benefits?itm_source=benefits-menu" aria-label="Subscriber Perks">Subscriber Perks<i class="fas tnt-chevron-right"></i></a></li> 2764 2765 2766 2767 <li role="menuitem" id="archives-2841699" style="display: none;"> 2768 <a class="dropdown-item" href="/newspapers/" rel="nofollow" aria-label="Archives" > 2769 Archives 2770 </a> 2771 </li> 2772 2773 2774 <li> 2775 <a class="dropdown-item logout-btn" id="logout-2841699" onclick="handleUserLogout2841699()" rel="nofollow" role="menuitem" aria-label="Logout" > 2776 Sign out 2777 </a> 2778 </li> 2779 </ul> 2780 </div> 2781 2782 2783 <form id="user-login-form-2841699" style="display:none" role="form" method="post" action="https://www.thestar.com/users/login/"> 2784 <input type="hidden" name="x_org_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 2785 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 2786 <input type="hidden" name="username" value="provider:Metroland Hub"> 2787 <input type="hidden" name="site" value="thestar.com"> 2788 </form> 2789 2790 <form id="user-local-logout-form-2841699" method="post" style="display:block" action="https://www.thestar.com/tncms/auth/logout/?return=https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html" > 2791 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 2792 <input type="submit" name="logout" value="Logout" class="hide"> 2793 </form> 2794 <form id="user-remote-logout-form-2841699" method="post" action="https://www.thestar.com/tncms/auth/logout/"><input type="hidden" name="return" value="https://www.thestar.com/tncms/auth/logout/?return=https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"><input type="submit" name="logout" value="Logout" class="hide"> 2795 </form> 2796 2797 </div><!-- closing user-login-panel --> 2798 2799 2800
2801 <div class="user-controls-search-button"> 2802 <button id="search-toggle-2841699" aria-label="Search"> 2803 <span class="fas tnt-search"></span> 2804 </button> 2805 </div> 2806 2807 </div><!--closing user controls main --> 2808 2809 2810 2811 2812 <div id='site-search-form-2841699' class="user-controls-search" style="display:none";> 2813 <form id="site-search-header" aria-label="Site search" action="/search/" method="GET" > 2814 <input type="hidden" name="l" value="25"> 2815 <input type="hidden" name="s" value="start_time"> 2816 <input type="hidden" name="sd" value="desc"> 2817 2818 2819 2820 <input type="hidden" name="d1" value=""> 2821 2822 <input type="hidden" name="f" value="html"> 2823 2824 <input type="hidden" name="t" value="article,video,youtube,collection"> 2825 2826 <input type="hidden" name="app" value="editorial"> 2827 <input type="hidden" name="nsa" value="eedition"> 2828 <div id="site-search-form-2841699" class="site-search-form input-group "> 2829 <label for="site-search-2841699-term" class="sr-only">Site search</label> 2830 <input id="site-search-2841699-term" name="q" title="Site search" type="text" placeholder="Search..." class="form-control" autocomplete="off"> 2831 <input type="submit" class="hide" value="Search"> 2832 <span class="input-group-btn"> 2833 <button id="site-search-2841699-btn" class="btn btn-primary" aria-label="Submit Site Search" type="submit"> 2834 <span class="hidden-xl hidden-lg hidden-md fas tnt-search"></span> 2835 <span id="site-search-button-2841699" class="hidden-xs hidden-sm">Search</span> 2836 </button> 2837 </span> 2838 </div> 2839 <div class="user-controls-cancel-button"> 2840 <span id="search-cancel-2841699" aria-label="Cancel Search"> 2841 <span class="fas tnt-times"></span> 2842 </span> 2843 </div> 2844 </form> 2845 2846 </div> 2847 2848 2849</div><!-- closing user controls --></div></div><div id="tncms-region-nav-topbar-col-three-nav" class="tncms-region-nav"><ul id="topbar-col-three-nav_menu" class="topNav list-inline nav-list" ><li class=" " data-cmspath="/interactives" data-liurl="/site/about/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 2850 2851 <a class="nav-link tnt-section-span-aria-label-proudly-canadian-span" href="/site/about/" tabindex="0"> 2852 <span class="nav-label "><span aria-label="Proudly Canadian"></span></span> 2853 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/newsletters/?itm_source=newsletter-header-link" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 2854 2855 <a class="nav-link tnt-section-i-class-fas-tnt-envelope-i-newsletters" href="/newsletters/?itm_source=newsletter-header-link" tabindex="0"> 2856 <span class="nav-label "><i class="fas tnt-envelope"></i> Newsletters</span> 2857 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://torontostar.pressreader.com/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 2858 2859 <a class="nav-link tnt-section-i-class-fas-tnt-file-alt-i-today-s-paper" href="https://torontostar.pressreader.com/" target="_blank" rel="noopener" tabindex="0"> 2860 <span class="nav-label "><i class="fas tnt-file-alt"></i> Todayâs Paper</span> 2861 </a></li></ul><style> 2862 .affix-top #tncms-region-main-nav-right-region{display: none} 2863 .affix #tncms-region-main-nav-right-region{display: flex;column-gap:8px} 2864 @media (max-width: 991px){ 2865 #main-navigation{height: 45px} 2866 } 2867 2868 </style> 2869 </div></div> 2870 </div> 2871 </header> 2872 </div> 2873 2874 2875 2876 <div id="site-header-container" class="hidden-sm hidden-xs hidden-print"> 2877 <header id="site-header" class="container_fluid" role="banner"> 2878 2879 <div class="row"> 2880 <div id="masthead-full-top" class="col-lg-12"><div id="tncms-region-masthead-full-top" class="tncms-region "></div></div> 2881 </div> 2882 <div class="row"> 2883 2884 <div id="masthead-col-one" class="col-md-4 col-sm-4"><div id="tncms-region-masthead-col-one" class="tncms-region "><div id="tncms-block-3687831" class="tncms-block"><div id="weather-3687831" class="weather-current size-small pull-left"> 2885 <ul class="list-unstyled"> 2886 <li class="current-conditions "> 2887 <a href="/weather/?weather_zip=M7A1A2" class="dropdown-toggle" aria-label="Weather">
2888 <span class="icon pull-left"> 2889 2890 <span class="fas tnt-wi-night-clear"></span> 2891 </span> 2892 <span class="pull-left temp-desc small"> 2893 <span class="temp">16°</span> 2894 2895 </span> 2896 <span class="clearfix"></span> 2897 2898 2899 </a> 2900 2901 </li></ul> 2902</div> 2903 2904 <div class="clearfix"></div> 2905</div></div></div> 2906 <div id="masthead-col-two" class="col-md-4 col-sm-4"><div id="tncms-region-masthead-col-two" class="tncms-region "></div></div> 2907 <div id="masthead-col-three" class="col-md-4 col-sm-4"><div id="tncms-region-masthead-col-three" class="tncms-region "></div></div> 2908 </div> 2909 <div class="row"> 2910 <div id="masthead-full-bottom" class="col-lg-12"><div id="tncms-region-masthead-full-bottom" class="tncms-region "></div></div> 2911 </div> 2912 2913 </header> 2914 </div> 2915 2916 2917 2918 2919 <div id="site-navbar-container" class="hidden-print affix-top"> 2920 <div id="tncms-region-affix-nav-brand" class="tncms-region "><div id="tncms-block-2828682" class="tncms-block sm-brand hidden-sm hidden-xs"><div id="site-logo-2828682" class="site-logo-container text-center" ><div class="logo-middle"> 2921 <a href="/" aria-label="Home page"><img 2922 2923 src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/custom/image/31c48758-8d44-11ed-8c30-0bcb8697ec11.png?resize=200%2C200" 2924 srcset="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/custom/image/31c48758-8d44-11ed-8c30-0bcb8697ec11.png" 2925 sizes="100vw" 2926 2927 class=" img-responsive lazyload tnt-prop-img" 2928 width="138" 2929 height="138" 2930 alt="site-logo" 2931 ></a> 2932 </div></div></div></div> 2933 <nav id="main-navigation" aria-label="Main" class="navbar yamm navbar-default container_fluid navbar-static"> 2934 2935 2936 <div class="navbar-header"> 2937 2938 2939 <button type="button" class=" visible-sm visible-xs navbar-toggle pull-left" data-toggle="offcanvas" data-target="left" aria-label="Left Main Menu" aria-expanded="false"> 2940 <span class="icon-bar"></span> 2941 <span class="icon-bar"></span> 2942 <span class="icon-bar"></span> 2943 2944 </button> 2945 2946 2947 2948 2949 2950 <div class="navbar-brand hidden-md hidden-lg pos_left"> 2951 2952 <div id="tncms-region-main-nav-brand" class="tncms-region "><div id="tncms-block-3140368" class="tncms-block"> 2953<style> 2954.site-logo-mobile { 2955 background-image: var(--site-logo-src); 2956 height: var(--site-logo-height); 2957 width: var(--site-logo-width); 2958 background-size:cover; 2959 display:block; 2960} 2961#topbar-col-two #tncms-region-topbar-col-two { 2962 margin: 0 !important; 2963} 2964 @media (max-width: 992px) { 2965 .site-logo-mobile { 2966 background-image: var(--site-logo-mobile-src); 2967 height: var(--site-logo-mobile-height); 2968 width: var(--site-logo-mobile-width); 2969 background-size:cover; 2970 display:block; 2971 } 2972 } 2973 @media (min-width: 993px) { 2974 #topbar-col-two { 2975 padding-top: 12px !important; 2976 } 2977 } 2978 @media (max-width: 411px) { 2979 .site-logo-mobile { 2980 height: 17px; 2981 width: 157px; 2982 background-size:cover; 2983 display:block; 2984 } 2985 .user-promo-button { 2986 margin-right: 8px !important; 2987 margin-left: 8px !important; 2988 } 2989 } 2990 2991 @media (min-width: 993px) and (max-width: 1080px) { 2992 .site-logo-mobile { 2993 height: 34px !important; 2994 width: 320px !important; 2995 } 2996 } 2997</style> 2998<div class="site-logo-container text-left siteUserHeader-mobile" style="height:20px;"> 2999 <div class="logo-middle"> 3000 <a id="siteUserHeaderHref-mobile" title="Toronto Star" href="/" aria-label="Home page" class="site-logo-mobile"></a> 3001 </div> 3002</div></div><div id="tncms-block-2841705" class="tncms-block">
3003<div class="user-controls"> 3004 <div id="user-controls-2841705" class="user-controls-main" > 3005 3006 3007 <div id="user-promo-2841705" class="user-promo"> 3008 3009 <div class="user-promo-mobile "> 3010 3011 <div class="anonymous hidden"> 3012 3013 <div class="user-promo-button"> 3014 <a href="https://www.thestar.com/subscribe/trial-purchase/" aria-label="Try Us">Try Us</a> 3015 </div> 3016 </div> 3017 3018 3019 <div class="registered hidden"> 3020 3021 <div class=" user-promo-button"> 3022 <a href="https://www.thestar.com/subscribe/" aria-label="SALE<br>Only $1">SALE<br>Only $1</a> 3023 </div> 3024 </div> 3025 3026 3027 <div class="subscriber hidden"> 3028 <div class="user-promo-button"> 3029 <a href="/newsletters?itm_source=newsletter-header-button" aria-label="Newsletters">Newsletters</a> 3030 </div> 3031 </div> 3032 3033 </div> 3034 3035 </div> 3036 3037 <div id="user-control-panel-2841705" class="user-login-panel mobile"> 3038 <button class="btn btn-secondary dropdownMenuButton loggedout" aria-label="sign in" type="button" id="userControlPanel-2841705" 3039 data-placement="mobile" data-status="closed" data-user="loggedout"> 3040 <span class="userName">Sign In</span> 3041 <span class="userIconSpan icon-guest"></span> 3042 <i class="userPanelIndicator fas tnt-chevron-down"></i> 3043 </button> 3044 <div class="user-controls-menu closed" aria-label="User menu"> 3045 <ul role="menu"> 3046 3047 <li class="user-controls-dropdown-user-email" role="menuitem" id="user-email-2841705"></li> 3048 3049 <li role="menuitem"><a class="dropdown-item" href="/users/admin/" aria-label="Manage Profile" rel="nofollow">Manage Profile<i class="fas tnt-chevron-right"></i></a></li> 3050 <li role="menuitem"><a class="dropdown-item" href="/users/admin/service/" aria-label="Subscriptions" rel="nofollow">Subscriptions<i class="fas tnt-chevron-right"></i></a></li> 3051 <li role="menuitem"><a class="dropdown-item" href="/users/admin/service/?view=transactions" aria-label="Billing Information" rel="nofollow">Billing Information<i class="fas tnt-chevron-right"></i></a></li> 3052 <li role="menuitem"><a class="dropdown-item" href="/users/admin/list/" rel="nofollow" aria-label="Saved Articles">Saved Articles<i class="fas tnt-chevron-right"></i></a></li> 3053 3054 <li role="menuitem"><a class="dropdown-item" href="/newsletters/" aria-label="Newsletters" >Newsletters<i class="fas tnt-chevron-right"></i></a></li> 3055 3056 <li role="menuitem"><a class="dropdown-item" href="/site/notifications/" aria-label="Notifications" >Notifications<i class="fas tnt-chevron-right"></i></a></li> 3057 3058 3059 3060 <li role="menuitem" id="sub-perks-2841705" style="display: none;"><a class="dropdown-item" href="/site/benefits?itm_source=benefits-menu" aria-label="Subscriber Perks">Subscriber Perks<i class="fas tnt-chevron-right"></i></a></li> 3061 3062 3063 3064 <li role="menuitem" id="archives-2841705" style="display: none;"> 3065 <a class="dropdown-item" href="/newspapers/" rel="nofollow" aria-label="Archives" > 3066 Archives 3067 </a> 3068 </li> 3069 3070 3071 <li> 3072 <a class="dropdown-item logout-btn" id="logout-2841705" onclick="handleUserLogout2841705()" rel="nofollow" role="menuitem" aria-label="Logout" > 3073 Sign out 3074 </a> 3075 </li> 3076 </ul> 3077 </div> 3078 3079 3080 <form id="user-login-form-2841705" style="display:none" role="form" method="post" action="https://www.thestar.com/users/login/"> 3081 <input type="hidden" name="x_org_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3082 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3083 <input type="hidden" name="username" value="provider:Metroland Hub"> 3084 <input type="hidden" name="site" value="thestar.com"> 3085 </form> 3086 3087 <form id="user-local-logout-form-2841705" method="post" style="display:block" action="https://www.thestar.com/tncms/auth/logout/?return=https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html" > 3088 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3089 <input type="submit" name="logout" value="Logout" class="hide"> 3090 </form> 3091 <form id="user-remote-logout-form-2841705" method="post" action="https://www.thestar.com/tncms/auth/logout/"><input type="hidden" name="return" value="https://www.thestar.com/tncms/auth/logout/?return=https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"><input type="submit" name="logout" value="Logout" class="hide"> 3092 </form> 3093 3094 </div><!-- closing user-login-panel --> 3095 3096 3097 3098 </div><!--closing user controls main --> 3099 3100 3101 3102 3103</div><!-- closing user controls --></div></div> 3104 3105 </div> 3106 3107 3108 3109 </div> 3110 3111 3112 <div id="navbar-collapse" class="navbar-collapse collapse"> 3113 3114 <div class="pull-right"> 3115 <div id="tncms-region-main-nav-right-region" class="tncms-region "><div id="tncms-block-3118246" class="tncms-block"> 3116 3117</div><div id="tncms-block-2841702" class="tncms-block">
3118<div class="user-controls"> 3119 <div id="user-controls-2841702" class="user-controls-main" > 3120 3121 <div id="user-control-panel-2841702" class="user-login-panel static"> 3122 <button class="btn btn-secondary dropdownMenuButton loggedout" aria-label="sign in" type="button" id="userControlPanel-2841702" 3123 data-placement="static" data-status="closed" data-user="loggedout"> 3124 <span class="userName">Sign In</span> 3125 <span class="userIconSpan icon-guest"></span> 3126 <i class="userPanelIndicator fas tnt-chevron-down"></i> 3127 </button> 3128 <div class="user-controls-menu closed" aria-label="User menu"> 3129 <ul role="menu"> 3130 3131 <li class="user-controls-dropdown-user-email" role="menuitem" id="user-email-2841702"></li> 3132 3133 <li role="menuitem"><a class="dropdown-item" href="/users/admin/" aria-label="Manage Profile" rel="nofollow">Manage Profile<i class="fas tnt-chevron-right"></i></a></li> 3134 <li role="menuitem"><a class="dropdown-item" href="/users/admin/service/" aria-label="Subscriptions" rel="nofollow">Subscriptions<i class="fas tnt-chevron-right"></i></a></li> 3135 <li role="menuitem"><a class="dropdown-item" href="/users/admin/service/?view=transactions" aria-label="Billing Information" rel="nofollow">Billing Information<i class="fas tnt-chevron-right"></i></a></li> 3136 <li role="menuitem"><a class="dropdown-item" href="/users/admin/list/" rel="nofollow" aria-label="Saved Articles">Saved Articles<i class="fas tnt-chevron-right"></i></a></li> 3137 3138 <li role="menuitem"><a class="dropdown-item" href="/newsletters/" aria-label="Newsletters" >Newsletters<i class="fas tnt-chevron-right"></i></a></li> 3139 3140 <li role="menuitem"><a class="dropdown-item" href="/site/notifications/" aria-label="Notifications" >Notifications<i class="fas tnt-chevron-right"></i></a></li> 3141 3142 3143 3144 <li role="menuitem" id="sub-perks-2841702" style="display: none;"><a class="dropdown-item" href="/site/benefits?itm_source=benefits-menu" aria-label="Subscriber Perks">Subscriber Perks<i class="fas tnt-chevron-right"></i></a></li> 3145 3146 3147 3148 <li role="menuitem" id="archives-2841702" style="display: none;"> 3149 <a class="dropdown-item" href="/newspapers/" rel="nofollow" aria-label="Archives" > 3150 Archives 3151 </a> 3152 </li> 3153 3154 3155 <li> 3156 <a class="dropdown-item logout-btn" id="logout-2841702" onclick="handleUserLogout2841702()" rel="nofollow" role="menuitem" aria-label="Logout" > 3157 Sign out 3158 </a> 3159 </li> 3160 </ul> 3161 </div> 3162 3163 3164 <form id="user-login-form-2841702" style="display:none" role="form" method="post" action="https://www.thestar.com/users/login/"> 3165 <input type="hidden" name="x_org_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3166 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3167 <input type="hidden" name="username" value="provider:Metroland Hub"> 3168 <input type="hidden" name="site" value="thestar.com"> 3169 </form> 3170 3171 <form id="user-local-logout-form-2841702" method="post" style="display:block" action="https://www.thestar.com/tncms/auth/logout/?return=https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html" > 3172 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3173 <input type="submit" name="logout" value="Logout" class="hide"> 3174 </form> 3175 <form id="user-remote-logout-form-2841702" method="post" action="https://www.thestar.com/tncms/auth/logout/"><input type="hidden" name="return" value="https://www.thestar.com/tncms/auth/logout/?return=https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"><input type="submit" name="logout" value="Logout" class="hide"> 3176 </form> 3177 3178 </div><!-- closing user-login-panel --> 3179 3180 3181 <div id="user-promo-2841702" class="user-promo"> 3182 3183 <div class="user-promo-desktop right"> 3184 3185 <div class="anonymous hidden"> 3186 3187 <div data-type='danon' class="user-promo-button"> 3188 <a href="https://www.thestar.com/subscribe/trial-purchase/"> 3189 <div class="line1">Try Us</div> 3190 <div class="line2">7-Day Trial</div> 3191 </a> 3192 </div> 3193 </div> 3194 3195 3196 <div class="registered hidden"> 3197 3198 <div data-type='dreg' class="user-promo-button"> 3199 <a href="https://www.thestar.com/subscribe/"> 3200 <div class="line1">SALE<br>Only $1</div> 3201 3202 </a> 3203 </div> 3204 </div> 3205 3206 3207 <div class="subscriber hidden"> 3208 <div data-type='dsub' class="user-promo-button"> 3209 <a href="/newsletters?itm_source=newsletter-header-button"> 3210 <div class="line1">Newsletters</div> 3211 3212 </a> 3213 </div> 3214 </div> 3215 3216 </div> 3217 3218 </div> 3219 3220 3221 3222 </div><!--closing user controls main --> 3223 3224 3225 3226 3227</div><!-- closing user controls --></div></div> 3228 3229 </div> 3230 3231 <div class="navbar-left"> 3232 <div id="tncms-region-nav-main-nav" class="tncms-region-nav"><ul id="main-nav_menu" class="topNav nav navbar-nav" role="navigation" aria-label="Main"><li class=" " data-cmspath="/interactives" data-liurl="/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3233 3234 <a class="nav-link nav-home tnt-section-home" href="/" tabindex="0">
3235 <span class="nav-label ">Home</span> 3236 </a></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/news/gta/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3237 3238 <a class="nav-link dropdown-toggle tnt-section-gta" data-target="#" href="/news/gta/" tabindex="0"> 3239 <span class="nav-label ">GTA</span> 3240 </a><ul id="main-nav_menu-child-2" class="subNav dropdown"> 3241 3242 3243 3244 <li class=" " data-activeitem=""> 3245 <a class="nav-link tnt-section-readers-choice-awards" href="https://readerschoice.thestar.com/readerschoice-toronto/" target="_blank" rel="noopener" tabindex="0"> 3246 <span class="nav-label">Readersâ Choice Awards</span> 3247 </a> 3248 </li> 3249 3250 3251 3252 </ul></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/news/canada/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3253 3254 <a class="nav-link dropdown-toggle tnt-section-canada" data-target="#" href="/news/canada/" tabindex="0"> 3255 <span class="nav-label ">Canada</span> 3256 </a><ul id="main-nav_menu-child-4" class="subNav dropdown"> 3257 3258 3259 3260 <li class=" " data-activeitem=""> 3261 <a class="nav-link tnt-section-ontario" href="/news/ontario/" tabindex="0"> 3262 <span class="nav-label">Ontario</span> 3263 </a> 3264 </li> 3265 3266 3267 3268 <li class=" " data-activeitem=""> 3269 <a class="nav-link tnt-section-british-columbia" href="/news/canada/british-columbia/" tabindex="0"> 3270 <span class="nav-label">British Columbia</span> 3271 </a> 3272 </li> 3273 3274 3275 3276 <li class=" " data-activeitem=""> 3277 <a class="nav-link tnt-section-alberta" href="/news/canada/alberta/" tabindex="0"> 3278 <span class="nav-label">Alberta</span> 3279 </a> 3280 </li> 3281 3282 3283 3284 <li class=" " data-activeitem=""> 3285 <a class="nav-link tnt-section-quebec" href="/news/canada/quebec/" tabindex="0"> 3286 <span class="nav-label">Quebec</span> 3287 </a> 3288 </li> 3289 3290 3291 3292 <li class=" " data-activeitem=""> 3293 <a class="nav-link tnt-section-nova-scotia" href="/news/canada/nova-scotia/" tabindex="0"> 3294 <span class="nav-label">Nova Scotia</span> 3295 </a> 3296 </li> 3297 3298 3299 3300 </ul></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/politics/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3301 3302 <a class="nav-link dropdown-toggle tnt-section-politics" data-target="#" href="/politics/" tabindex="0">
3303 <span class="nav-label ">Politics</span> 3304 </a><ul id="main-nav_menu-child-10" class="subNav dropdown"> 3305 3306 3307 3308 <li class=" " data-activeitem=""> 3309 <a class="nav-link tnt-section-federal-politics" href="/politics/federal/" tabindex="0"> 3310 <span class="nav-label">Federal Politics</span> 3311 </a> 3312 </li> 3313 3314 3315 3316 <li class=" " data-activeitem=""> 3317 <a class="nav-link tnt-section-provincial-politics" href="/politics/provincial/" tabindex="0"> 3318 <span class="nav-label">Provincial Politics</span> 3319 </a> 3320 </li> 3321 3322 3323 3324 <li class=" " data-activeitem=""> 3325 <a class="nav-link tnt-section-political-opinion" href="/politics/political-opinion/" tabindex="0"> 3326 <span class="nav-label">Political Opinion</span> 3327 </a> 3328 </li> 3329 3330 3331 3332 </ul></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/news/world/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3333 3334 <a class="nav-link dropdown-toggle tnt-section-world" data-target="#" href="/news/world/" tabindex="0"> 3335 <span class="nav-label ">World</span> 3336 </a><ul id="main-nav_menu-child-14" class="subNav dropdown"> 3337 3338 3339 3340 <li class=" " data-activeitem=""> 3341 <a class="nav-link tnt-section-united-states" href="/news/world/united-states/" tabindex="0"> 3342 <span class="nav-label">United States</span> 3343 </a> 3344 </li> 3345 3346 3347 3348 <li class=" " data-activeitem=""> 3349 <a class="nav-link tnt-section-americas" href="/news/world/americas/" tabindex="0"> 3350 <span class="nav-label">Americas</span> 3351 </a> 3352 </li> 3353 3354 3355 3356 <li class=" " data-activeitem=""> 3357 <a class="nav-link tnt-section-europe" href="/news/world/europe/" tabindex="0"> 3358 <span class="nav-label">Europe</span> 3359 </a> 3360 </li> 3361 3362 3363 3364 <li class=" " data-activeitem=""> 3365 <a class="nav-link tnt-section-asia" href="/news/world/asia/" tabindex="0"> 3366 <span class="nav-label">Asia</span> 3367 </a> 3368 </li> 3369 3370 3371 3372 <li class=" " data-activeitem=""> 3373 <a class="nav-link tnt-section-africa" href="/news/world/africa/" tabindex="0"> 3374 <span class="nav-label">Africa</span> 3375 </a> 3376 </li> 3377 3378 3379 3380 <li class=" " data-activeitem=""> 3381 <a class="nav-link tnt-section-australia" href="/news/world/australia/" tabindex="0">
3382 <span class="nav-label">Australia</span> 3383 </a> 3384 </li> 3385 3386 3387 3388 <li class=" " data-activeitem=""> 3389 <a class="nav-link tnt-section-middle-east" href="/news/world/middle-east/" tabindex="0"> 3390 <span class="nav-label">Middle East</span> 3391 </a> 3392 </li> 3393 3394 3395 3396 </ul></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/opinion/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3397 3398 <a class="nav-link dropdown-toggle tnt-section-opinion" data-target="#" href="/opinion/" tabindex="0"> 3399 <span class="nav-label ">Opinion</span> 3400 </a><ul id="main-nav_menu-child-22" class="subNav dropdown"> 3401 3402 3403 3404 <li class=" " data-activeitem=""> 3405 <a class="nav-link tnt-section-star-columnists" href="/opinion/star-columnists/" tabindex="0"> 3406 <span class="nav-label">Star Columnists</span> 3407 </a> 3408 </li> 3409 3410 3411 3412 <li class=" " data-activeitem=""> 3413 <a class="nav-link tnt-section-editorials" href="/opinion/editorials/" tabindex="0"> 3414 <span class="nav-label">Editorials</span> 3415 </a> 3416 </li> 3417 3418 3419 3420 <li class=" " data-activeitem=""> 3421 <a class="nav-link tnt-section-contributors" href="/opinion/contributors/" tabindex="0"> 3422 <span class="nav-label">Contributors</span> 3423 </a> 3424 </li> 3425 3426 3427 3428 <li class=" " data-activeitem=""> 3429 <a class="nav-link tnt-section-letters-to-the-editor" href="/opinion/letters-to-the-editor/" tabindex="0"> 3430 <span class="nav-label">Letters To The Editor</span> 3431 </a> 3432 </li> 3433 3434 3435 3436 <li class=" " data-activeitem=""> 3437 <a class="nav-link tnt-section-editorial-cartoons" href="/opinion/editorial-cartoons/" tabindex="0"> 3438 <span class="nav-label">Editorial Cartoons</span> 3439 </a> 3440 </li> 3441 3442 3443 3444 </ul></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/life/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3445 3446 <a class="nav-link dropdown-toggle tnt-section-life" data-target="#" href="/life/" tabindex="0"> 3447 <span class="nav-label ">Life</span> 3448 </a><ul id="main-nav_menu-child-28" class="subNav dropdown"> 3449 3450 3451 3452 <li class=" " data-activeitem=""> 3453 <a class="nav-link tnt-section-relationships" href="/life/relationships/" tabindex="0">
3454 <span class="nav-label">Relationships</span> 3455 </a> 3456 </li> 3457 3458 3459 3460 <li class=" " data-activeitem=""> 3461 <a class="nav-link tnt-section-food-and-drink" href="/life/food-and-drink/" tabindex="0"> 3462 <span class="nav-label">Food and Drink</span> 3463 </a> 3464 </li> 3465 3466 3467 3468 <li class=" " data-activeitem=""> 3469 <a class="nav-link tnt-section-home-and-garden" href="/life/home-and-garden/" tabindex="0"> 3470 <span class="nav-label">Home and Garden</span> 3471 </a> 3472 </li> 3473 3474 3475 3476 <li class=" " data-activeitem=""> 3477 <a class="nav-link tnt-section-beauty-and-fashion" href="/life/beauty-and-fashion/" tabindex="0"> 3478 <span class="nav-label">Beauty and Fashion</span> 3479 </a> 3480 </li> 3481 3482 3483 3484 <li class=" " data-activeitem=""> 3485 <a class="nav-link tnt-section-health" href="/life/health-wellness/" tabindex="0"> 3486 <span class="nav-label">Health</span> 3487 </a> 3488 </li> 3489 3490 3491 3492 <li class=" " data-activeitem=""> 3493 <a class="nav-link tnt-section-travel" href="/life/travel/" tabindex="0"> 3494 <span class="nav-label">Travel</span> 3495 </a> 3496 </li> 3497 3498 3499 3500 <li class=" " data-activeitem=""> 3501 <a class="nav-link tnt-section-autos" href="/life/autos/" tabindex="0"> 3502 <span class="nav-label">Autos</span> 3503 </a> 3504 </li> 3505 3506 3507 3508 <li class=" " data-activeitem=""> 3509 <a class="nav-link tnt-section-horoscopes" href="/life/horoscopes/" tabindex="0"> 3510 <span class="nav-label">Horoscopes</span> 3511 </a> 3512 </li> 3513 3514 3515 3516 <li class=" " data-activeitem=""> 3517 <a class="nav-link tnt-section-obituaries" href="https://obituaries.thestar.com/" target="_blank" rel="noopener" tabindex="0"> 3518 <span class="nav-label">Obituaries</span> 3519 </a> 3520 </li> 3521 3522 3523 3524 </ul></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/sports/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3525 3526 <a class="nav-link dropdown-toggle tnt-section-sports" data-target="#" href="/sports/" tabindex="0"> 3527 <span class="nav-label ">Sports</span> 3528 </a><ul id="main-nav_menu-child-38" class="subNav dropdown"> 3529 3530 3531 3532 <li class=" " data-activeitem=""> 3533 <a class="nav-link tnt-section-nhl" href="/sports/hockey/" tabindex="0">
3534 <span class="nav-label">NHL</span> 3535 </a> 3536 </li> 3537 3538 3539 3540 <li class=" " data-activeitem=""> 3541 <a class="nav-link tnt-section-nba" href="/sports/basketball/" tabindex="0"> 3542 <span class="nav-label">NBA</span> 3543 </a> 3544 </li> 3545 3546 3547 3548 <li class=" " data-activeitem=""> 3549 <a class="nav-link tnt-section-mlb" href="/sports/baseball/" tabindex="0"> 3550 <span class="nav-label">MLB</span> 3551 </a> 3552 </li> 3553 3554 3555 3556 <li class=" " data-activeitem=""> 3557 <a class="nav-link tnt-section-nfl" href="/sports/football/" tabindex="0"> 3558 <span class="nav-label">NFL</span> 3559 </a> 3560 </li> 3561 3562 3563 3564 <li class=" " data-activeitem=""> 3565 <a class="nav-link tnt-section-cfl" href="/sports/football/cfl/" tabindex="0"> 3566 <span class="nav-label">CFL</span> 3567 </a> 3568 </li> 3569 3570 3571 3572 <li class=" " data-activeitem=""> 3573 <a class="nav-link tnt-section-sports-betting" href="/sports/sports-betting/" tabindex="0"> 3574 <span class="nav-label">Sports Betting</span> 3575 </a> 3576 </li> 3577 3578 3579 3580 <li class=" " data-activeitem=""> 3581 <a class="nav-link tnt-section-golf" href="/sports/golf/" tabindex="0"> 3582 <span class="nav-label">Golf</span> 3583 </a> 3584 </li> 3585 3586 3587 3588 <li class=" " data-activeitem=""> 3589 <a class="nav-link tnt-section-soccer" href="/sports/soccer/" tabindex="0"> 3590 <span class="nav-label">Soccer</span> 3591 </a> 3592 </li> 3593 3594 3595 3596 <li class=" " data-activeitem=""> 3597 <a class="nav-link tnt-section-tennis" href="/sports/tennis/" tabindex="0"> 3598 <span class="nav-label">Tennis</span> 3599 </a> 3600 </li> 3601 3602 3603 3604 <li class=" " data-activeitem=""> 3605 <a class="nav-link tnt-section-auto-racing" href="/sports/auto-racing/" tabindex="0"> 3606 <span class="nav-label">Auto Racing</span> 3607 </a> 3608 </li> 3609 3610 3611 3612 <li class=" " data-activeitem=""> 3613 <a class="nav-link tnt-section-cricket" href="/sports/cricket/" tabindex="0"> 3614 <span class="nav-label">Cricket</span> 3615 </a> 3616 </li> 3617 3618 3619 3620 <li class=" " data-activeitem=""> 3621 <a class="nav-link tnt-section-olympics-and-paralympics" href="/sports/olympics-and-paralympics/" tabindex="0">
3622 <span class="nav-label">Olympics and Paralympics</span> 3623 </a> 3624 </li> 3625 3626 3627 3628 </ul></li><li class=" " data-cmspath="/interactives" data-liurl="/real-estate/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3629 3630 <a class="nav-link tnt-section-real-estate" href="/real-estate/" tabindex="0"> 3631 <span class="nav-label ">Real Estate</span> 3632 </a></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/entertainment/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3633 3634 <a class="nav-link dropdown-toggle tnt-section-entertainment" data-target="#" href="/entertainment/" tabindex="0"> 3635 <span class="nav-label ">Entertainment</span> 3636 </a><ul id="main-nav_menu-child-52" class="subNav dropdown"> 3637 3638 3639 3640 <li class=" " data-activeitem=""> 3641 <a class="nav-link tnt-section-television" href="/entertainment/television/" tabindex="0"> 3642 <span class="nav-label">Television</span> 3643 </a> 3644 </li> 3645 3646 3647 3648 <li class=" " data-activeitem=""> 3649 <a class="nav-link tnt-section-music" href="/entertainment/music/" tabindex="0"> 3650 <span class="nav-label">Music</span> 3651 </a> 3652 </li> 3653 3654 3655 3656 <li class=" " data-activeitem=""> 3657 <a class="nav-link tnt-section-taylor-swift" href="https://www.thestar.com/entertainment/music/taylor-swift/" target="_blank" rel="noopener" tabindex="0"> 3658 <span class="nav-label">Taylor Swift</span> 3659 </a> 3660 </li> 3661 3662 3663 3664 <li class=" " data-activeitem=""> 3665 <a class="nav-link tnt-section-books" href="/entertainment/books/" tabindex="0"> 3666 <span class="nav-label">Books</span> 3667 </a> 3668 </li> 3669 3670 3671 3672 <li class=" " data-activeitem=""> 3673 <a class="nav-link tnt-section-movies" href="/entertainment/movies/" tabindex="0"> 3674 <span class="nav-label">Movies</span> 3675 </a> 3676 </li> 3677 3678 3679 3680 <li class=" " data-activeitem=""> 3681 <a class="nav-link tnt-section-stage" href="/entertainment/stage/" tabindex="0"> 3682 <span class="nav-label">Stage</span> 3683 </a> 3684 </li> 3685 3686 3687 3688 <li class=" " data-activeitem=""> 3689 <a class="nav-link tnt-section-visual-arts" href="/entertainment/visual-arts/" tabindex="0">
3690 <span class="nav-label">Visual Arts</span> 3691 </a> 3692 </li> 3693 3694 3695 3696 <li class=" " data-activeitem=""> 3697 <a class="nav-link tnt-section-fun-games" href="https://diversions.thestar.com/" target="_blank" rel="noopener" tabindex="0"> 3698 <span class="nav-label">Fun & Games</span> 3699 </a> 3700 </li> 3701 3702 3703 3704 <li class=" " data-activeitem=""> 3705 <a class="nav-link tnt-section-comics" href="https://diversions.thestar.com/comics.html" target="_blank" rel="noopener" tabindex="0"> 3706 <span class="nav-label">Comics</span> 3707 </a> 3708 </li> 3709 3710 3711 3712 <li class=" " data-activeitem=""> 3713 <a class="nav-link tnt-section-tv-listings" href="/entertainment/tv-listings/" tabindex="0"> 3714 <span class="nav-label">TV Listings</span> 3715 </a> 3716 </li> 3717 3718 3719 3720 </ul></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/business/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3721 3722 <a class="nav-link dropdown-toggle tnt-section-business" data-target="#" href="/business/" tabindex="0"> 3723 <span class="nav-label ">Business</span> 3724 </a><ul id="main-nav_menu-child-63" class="subNav dropdown"> 3725 3726 3727 3728 <li class=" " data-activeitem=""> 3729 <a class="nav-link tnt-section-small-business" href="/business/small-business/" tabindex="0"> 3730 <span class="nav-label">Small Business</span> 3731 </a> 3732 </li> 3733 3734 3735 3736 <li class=" " data-activeitem=""> 3737 <a class="nav-link tnt-section-technology" href="/business/technology/" tabindex="0"> 3738 <span class="nav-label">Technology</span> 3739 </a> 3740 </li> 3741 3742 3743 3744 <li class=" " data-activeitem=""> 3745 <a class="nav-link tnt-section-personal-finance" href="/business/personal-finance/" tabindex="0"> 3746 <span class="nav-label">Personal Finance</span> 3747 </a> 3748 </li> 3749 3750 3751 3752 <li class=" " data-activeitem=""> 3753 <a class="nav-link tnt-section-innovation" href="/business/mars/" tabindex="0"> 3754 <span class="nav-label">Innovation</span> 3755 </a> 3756 </li> 3757 3758 3759 3760 </ul></li><li class=" dropdown " aria-expanded="false" data-cmspath="/interactives" data-liurl="/podcasts/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3761 3762 <a class="nav-link dropdown-toggle tnt-section-podcasts" data-target="#" href="/podcasts/" tabindex="0">
3763 <span class="nav-label ">Podcasts</span> 3764 </a><ul id="main-nav_menu-child-68" class="subNav dropdown"> 3765 3766 3767 3768 <li class=" " data-activeitem=""> 3769 <a class="nav-link tnt-section-this-matters" href="/podcasts/this-matters/" tabindex="0"> 3770 <span class="nav-label">This Matters</span> 3771 </a> 3772 </li> 3773 3774 3775 3776 <li class=" " data-activeitem=""> 3777 <a class="nav-link tnt-section-it-s-political" href="/podcasts/its-political/" tabindex="0"> 3778 <span class="nav-label">Itâs Political</span> 3779 </a> 3780 </li> 3781 3782 3783 3784 <li class=" " data-activeitem=""> 3785 <a class="nav-link tnt-section-the-billionaire-murders" href="/podcasts/billionaire-murders/" tabindex="0"> 3786 <span class="nav-label">The Billionaire Murders</span> 3787 </a> 3788 </li> 3789 3790 3791 3792 <li class=" " data-activeitem=""> 3793 <a class="nav-link tnt-section-deep-left-field" href="/podcasts/deep-left-field/" tabindex="0"> 3794 <span class="nav-label">Deep Left Field </span> 3795 </a> 3796 </li> 3797 3798 3799 3800 </ul></li><li class=" " data-cmspath="/interactives" data-liurl="/news/investigations/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 3801 3802 <a class="nav-link tnt-section-investigations" href="/news/investigations/" tabindex="0"> 3803 <span class="nav-label ">Investigations</span> 3804 </a></li></ul><style> 3805 .affix-top #tncms-region-main-nav-right-region{display: none} 3806 .affix #tncms-region-main-nav-right-region{display: flex;column-gap:8px} 3807 @media (max-width: 991px){ 3808 #main-navigation{height: 45px} 3809 } 3810 3811 </style> 3812 </div> 3813 </div> 3814 </div> 3815 3816 3817 3818 </nav> 3819 3820 3821 </div> 3822 3823 3824 3825 3826 3827 <div id="main-body-container"> 3828 3829 3830 3831 <section id="main-page-container" class="container_fluid"> 3832 3833 3834 3835
3836<script> 3837 window.articleTemplate = "article-interactive"; 3838 </script>
3838 3839<link rel="preconnect" href="https://fonts.googleapis.com"> 3840<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""> 3841<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,[email protected],100..900&display=swap" rel="stylesheet"> 3842<link rel="stylesheet" href="https://projects-images.thestar.com/signalUnlimited/style4.css">
3843<script src="https://misc.thestar.com/interactivegraphic/libraries/d3.v7.min.js"></script>
3843
3844<script src="https://misc.thestar.com/interactivegraphic/libraries/topojsonv3.min.js"></script>
3844 3845<style> 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866.subscriber-offers { 3867 left: 0; 3868} 3869 3870#widget-gift-mount { 3871 display: flex; 3872 justify-content: center; 3873 padding-top: 8px; 3874display: none; 3875} 3876 3877 .widget-tnt-gift-article { 3878 position: relative; 3879 display: inline-block; 3880 } 3881 .widget-tnt-gift-btn-dropdown { 3882 display: inline-flex; 3883 align-items: center; 3884 justify-content: center; 3885 background: none; 3886 border: none; 3887 padding: 0; 3888 cursor: pointer; 3889 } 3890 .widget-tnt-gift-btn-dropdown img { 3891 display: block; 3892 width: 32px; 3893 height: 32px; 3894 } 3895 .widget-tnt-gift-menu { 3896 position: absolute; 3897 top: calc(100% + 8px); 3898 right: -80px; 3899 z-index: 1000; 3900 min-width: 260px; 3901 background: #fff; 3902 border: 1px solid #ddd; 3903 border-radius: 8px; 3904 box-shadow: 0 8px 24px rgba(0,0,0,0.15); 3905 padding: 0; 3906 display: none; 3907 color: black; 3908 } 3909 .widget-tnt-gift-toggle:checked + .widget-tnt-gift-btn-dropdown + .widget-tnt-gift-menu { 3910 display: block; 3911 } 3912 .widget-gift-title { 3913 font-weight: 700; 3914 padding: 12px 16px; 3915 border-bottom: 1px solid #eee; 3916 } 3917 .widget-gift-body { 3918 padding: 16px; 3919 } 3920 .widget-gift-desc { 3921 margin-bottom: 12px; 3922 } 3923 .widget-gift-options { 3924 list-style: none; 3925 padding: 0; 3926 margin: 0; 3927 } 3928 .widget-gift-options li + li { 3929 margin-top: 8px; 3930 } 3931 .widget-gift-options a { 3932 display: block; 3933 text-decoration: none; 3934 color: inherit; 3935 padding: 8px 10px; 3936 border-radius: 6px; 3937 cursor: pointer; 3938 } 3939 .widget-gift-options a:hover, 3940 .widget-gift-options a:focus { 3941 background: #f5f5f5; 3942 text-decoration: none; 3943 } 3944 .widget-alert { 3945 margin-bottom: 10px; 3946 padding: 8px 10px; 3947 border-radius: 6px; 3948 font-size: 0.95rem; 3949 } 3950 .widget-alert-success { 3951 background: #edf7ed; 3952 color: #1e4620; 3953 } 3954 .widget-alert-danger { 3955 background: #fdecea; 3956 color: #611a15; 3957 } 3958 .widget-alert-warning { 3959 background: #fff4e5; 3960 color: #663c00; 3961 } 3962</style> 3963<div class="SA_story-wrapper" id="SA_story-wrapper"> 3964<section class="SA_top-wrapper"><img class="SA_main-art" src="https://projects-images.thestar.com/signalUnlimited/images/signal-leaves-v2-tint.png" alt=""> 3965<div class="SA_headline-package"> 3966<h2>The Signal</h2> 3967<h1>Canadaâs premier federal election forecast</h1> 3968<p class="SA_byline">By <a href="https://voxpoplabs.com/" target="_blank">Vox Pop Labs</a></p> 3969<p class="SA_byline">In partnership with the Toronto Star</p> 3970<p class="SA_date">Last updated on <span id="lastupdated">--</span></p> 3971<div id="widget-gift-mount"></div> 3972</div> 3973</section> 3974<section class="SA_text-wrapper" id="SA_intro-text"> 3975<p>Political fortunes can change at any moment. The Signal models thousands of polls to bring you one of the most consistently accurate election forecasts in Canada. See <a id="SA_scrolldown" href="#SA_methodology-section">methodology</a> for details.</p> 3976</section> 3977<section class="SA_graphic-container"> 3978<div class="SA_graphic-top-container"> 3979<div class="SA_graphic-top-text-container"> 3980<h2 class="SA_graphic-heading">If a federal election were held today</h2> 3981</div> 3982</div> 3983<div class="SA_graphic"> 3984<div class="SA_card-container"></div> 3985<div class="chart0"></div> 3986</div> 3987</section> 3988<!-- start of paywall --> 3989 <div id="article-body" itemprop="articleBody">
3990 <div id="asset-content" class="asset-content subscriber-premium"> 3991 <div class="subscriber-preview"></div> 3992 <div class="subscriber-only" style="display:none"> 3993<section class="SA_graphic-container"> 3994<div class="SA_graphic-top-container"> 3995<div class="SA_graphic-top-text-container"> 3996<h2 class="SA_graphic-heading">Projected vote share by party for</h2> 3997<div class="SA_region-dropdown-wrapper"> 3998<h2 class="SA_graphic-heading"><select class="SA_region-dropdown"> 3999<option selected value="NATIONAL">Canada</option> 4000<option value="ON">Ontario</option> 4001<option value="QC">Quebec</option> 4002<option value="BC">British Columbia</option> 4003<option value="AB">Alberta</option> 4004<option value="SK/MB">Manitoba and Sask.</option> 4005<option value="ATL">Atlantic Canada</option> 4006</select></h2> 4007</div> 4008<!-- <p class="SA_graphic-blurb">Which parties do voters support?</p> --></div> 4009</div> 4010<div class="SA_graphic"> 4011<div class="party-box-wrapper"> 4012<div class="party-box" id="partybox1"> 4013<div class="party-name-box"><img class="party-logo" id="" src="" alt=""> 4014<p class="party-name">--</p> 4015<p class="party-name-long">--</p> 4016</div> 4017<p class="party-votes"><span>--</span>%</p> 4018<div class="lowerupper"> 4019<div class="lowerbox"> 4020<p class="lowerupperlabel">Low</p> 4021<p class="lowfigure"><span>--</span></p> 4022</div> 4023<div class="higherbox"> 4024<p class="lowerupperlabel">High</p> 4025<p class="highfigure"><span>--</span></p> 4026</div> 4027</div> 4028</div> 4029<div class="party-box" id="partybox2"> 4030<div class="party-name-box"><img class="party-logo" id="" src="" alt=""> 4031<p class="party-name">--</p> 4032<p class="party-name-long">--</p> 4033</div> 4034<p class="party-votes"><span>--</span>%</p> 4035<div class="lowerupper"> 4036<div class="lowerbox"> 4037<p class="lowerupperlabel">Low</p> 4038<p class="lowfigure"><span>--</span></p> 4039</div> 4040<div class="higherbox"> 4041<p class="lowerupperlabel">High</p> 4042<p class="highfigure"><span>--</span></p> 4043</div> 4044</div> 4045</div> 4046<div class="party-box" id="partybox3"> 4047<div class="party-name-box"><img class="party-logo" id="" src="" alt=""> 4048<p class="party-name">--</p> 4049<p class="party-name-long">--</p> 4050</div> 4051<p class="party-votes"><span>--</span>%</p> 4052<div class="lowerupper"> 4053<div class="lowerbox"> 4054<p class="lowerupperlabel">Low</p> 4055<p class="lowfigure"><span>--</span></p> 4056</div> 4057<div class="higherbox"> 4058<p class="lowerupperlabel">High</p> 4059<p class="highfigure"><span>--</span></p> 4060</div> 4061</div> 4062</div> 4063<div class="party-box" id="partybox4"> 4064<div class="party-name-box"><img class="party-logo" id="" src="" alt=""> 4065<p class="party-name">--</p> 4066<p class="party-name-long">--</p> 4067</div> 4068<p class="party-votes"><span>--</span>%</p> 4069<div class="lowerupper"> 4070<div class="lowerbox"> 4071<p class="lowerupperlabel">Low</p> 4072<p class="lowfigure"><span>--</span></p> 4073</div> 4074<div class="higherbox"> 4075<p class="lowerupperlabel">High</p> 4076<p class="highfigure"><span>--</span></p> 4077</div> 4078</div> 4079</div> 4080<div class="party-box" id="partybox5"> 4081<div class="party-name-box"><img class="party-logo" id="" src="" alt=""> 4082<p class="party-name">--</p> 4083<p class="party-name-long">--</p> 4084</div> 4085<p class="party-votes"><span>--</span>%</p> 4086<div class="lowerupper"> 4087<div class="lowerbox"> 4088<p class="lowerupperlabel">Low</p> 4089<p class="lowfigure"><span>--</span></p> 4090</div> 4091<div class="higherbox"> 4092<p class="lowerupperlabel">High</p> 4093<p class="highfigure"><span>--</span></p> 4094</div> 4095</div> 4096</div> 4097<div class="party-box" id="partybox6"> 4098<div class="party-name-box"><img class="party-logo" id="" src="" alt=""> 4099<p class="party-name">--</p> 4100<p class="party-name-long">--</p> 4101</div> 4102<p class="party-votes"><span>--</span>%</p> 4103<div class="lowerupper"> 4104<div class="lowerbox"> 4105<p class="lowerupperlabel">Low</p> 4106<p class="lowfigure"><span>--</span></p> 4107</div> 4108<div class="higherbox"> 4109<p class="lowerupperlabel">High</p> 4110<p class="highfigure"><span>--</span></p> 4111</div> 4112</div> 4113</div> 4114<div class="OTHbox" id="partyboxOther"> 4115<div class="party-name-box"><!-- <img class="party-logo" id="" src="" alt=""> --> 4116<p class="party-name" id="other-name">Other</p> 4117<p class="party-name-long" id="other-name-long">Other</p> 4118</div> 4119<p class="party-votes"><span>--</span>%</p> 4120<div class="lowerupper"> 4121<div class="lowerbox"> 4122<p class="lowerupperlabel">Low</p> 4123<p class="lowfigure"><span>--</span></p> 4124</div> 4125<div class="higherbox"> 4126<p class="lowerupperlabel">High</p> 4127<p class="highfigure"><span>--</span></p> 4128</div> 4129</div> 4130</div> 4131</div> 4132</div> 4133</section> 4134<section class="SA_graphic-container"> 4135<div class="SA_graphic-top-container"> 4136<div class="SA_graphic-top-text-container"> 4137<h2 class="SA_graphic-heading">Vote share over time for</h2> 4138<div class="SA_region-dropdown-wrapper"> 4139<h2 class="SA_graphic-heading"><select class="SA_region-dropdown"> 4140<option selected value="NATIONAL">Canada</option> 4141<option value="ON">Ontario</option> 4142<option value="QC">Quebec</option> 4143<option value="BC">British Columbia</option> 4144<option value="AB">Alberta</option> 4145<option value="SK/MB">Manitoba and Sask.</option> 4146<option value="ATL">Atlantic Canada</option> 4147</select></h2> 4148</div> 4149<p class="SA_graphic-blurb">How vote share has changed since the last federal election. The upper and lower bounds represent a 95 per cent credible interval.</p> 4150</div> 4151<div class="SA_key-container" id="SA_key2"> 4152<p style="text-align: right;">Median vote intention</p> 4153<img id="key2img" src="https://projects-images.thestar.com/signalUnlimited/images/key2.svg" alt=""> 4154<p>Upper and lower bounds</p> 4155</div> 4156</div> 4157<div class="SA_graphic"> 4158<div class="chartbox"> 4159<div class="chart2"><svg id="chart2"></svg></div> 4160<div class="SA_tooltip SA_hidden" id="SA_tooltip2"> 4161<div class="SA_value"></div> 4162</div> 4163</div> 4164</div> 4165</section> 4166<div class="SA_ad_breaker"> 4167<div class="ad-interactives-placeholder"></div> 4168</div> 4169<section class="SA_graphic-container"> 4170<div class="SA_graphic-top-container"> 4171<div class="SA_graphic-top-text-container"> 4172<h2 class="SA_graphic-heading">Projected seat count for</h2> 4173<div class="SA_region-dropdown-wrapper"> 4174<h2 class="SA_graphic-heading"><select class="SA_region-dropdown"> 4175<option selected value="NATIONAL">Canada</option> 4176<option value="ON">Ontario</option> 4177<option value="QC">Quebec</option> 4178<option value="BC">British Columbia</option> 4179<option value="AB">Alberta</option> 4180<option value="SK/MB">Manitoba and Sask.</option> 4181<option value="ATL">Atlantic Canada</option> 4182</select></h2> 4183</div> 4184<p class="SA_graphic-blurb">The median is the number of seats each party is estimated to win. The upper and lower bounds represent a 95 per cent credible interval.</p> 4185</div> 4186<div class="SA_key-container" id="SA_key1"> 4187<p style="text-align: right;">Lower bound</p> 4188<p class="key-center-text">Median</p> 4189<img id="key1img" src="https://projects-images.thestar.com/signalUnlimited/images/key1.svg" alt=""> 4190<p>Upper bound</p> 4191</div> 4192</div> 4193<div class="SA_graphic"> 4194<div class="chart1"><svg id="chart1"></svg></div> 4195</div> 4196</section> 4197<section class="SA_graphic-container"> 4198<div class="SA_graphic-top-container"> 4199<div class="SA_graphic-top-text-container"> 4200<h2 class="SA_graphic-heading">Riding projections</h2> 4201<p class="SA_graphic-blurb">The projected outcome for each riding based on current vote share estimates.</p> 4202</div> 4203<div class="SA_key-container" id="SA_key3"><!-- <p class="map-legend-label">Projection confidence</p> --> 4204<div class="map-legend-boxes"> 4205<div class="map-legend-party-box map-legend-label-box"> 4206<p class="box-label">Toss up</p> 4207<p class="box-label" id="leaning">Leaning</p> 4208<p class="box-label" id="likely">Likely</p> 4209<p class="box-label" id="safe">Safe</p> 4210</div> 4211<div class="map-legend-party-box"> 4212<div class="tossupbox"></div> 4213<div class="leaningbox"></div> 4214<div class="likelybox"></div> 4215<div class="safebox"></div> 4216</div> 4217</div> 4218</div> 4219</div> 4220<div class="SA_graphic"> 4221<div id="map-holder"> 4222<div class="SA_tooltip SA_hidden" id="SA_tooltip1"> 4223<div class="SA_closebutton" id="SA_closebutton1"><img class="SA_icon" src="https://projects-images.thestar.com/signalUnlimited/images/close-icon.svg" border="0"></div> 4224<div class="SA_value"></div> 4225</div> 4226<div class="selection-holder"> 4227<p id="searchboxtitle">Search for a riding</p> 4228<div class="searchbox"><input autocomplete="off" type="text" id="filterOn" onfocus="this.value=''" placeholder="Type a riding name"> 4229<div class="filterListContainer"> 4230<ul id="filterList"></ul> 4231</div> 4232</div> 4233</div> 4234<div id="map-wrapper"> 4235<div class="zoom-buttons"> 4236<div class="zoom-button" id="zoomin"><img class="zoom-button-icon" src="https://projects-images.thestar.com/signalUnlimited/images/plus.svg" border="0"></div> 4237<div class="zoom-button zoombutton-out disable" id="zoomout"><img class="zoom-button-icon" src="https://projects-images.thestar.com/signalUnlimited/images/minus.svg" border="0"></div> 4238<div class="zoom-button zoombutton-out disable" id="reset"><img class="zoom-button-icon" src="https://projects-images.thestar.com/signalUnlimited/images/close.svg" border="0"></div> 4239</div> 4240<svg id="map"></svg></div> 4241</div> 4242</div> 4243</section> 4244<section class="SA_graphic-container"> 4245<div class="SA_graphic-top-container"> 4246<div class="SA_graphic-top-text-container"> 4247<h2 class="SA_graphic-heading">Polling manifest</h2> 4248<p class="SA_graphic-blurb">
4248Details of the most recent polls included in The Signal forecasting model.</p> 4249</div> 4250</div> 4251<div class="SA_graphic"> 4252<div class="graphic table"> 4253<div class="tablebox"> 4254<table class="poll-table"> 4255<thead> 4256<tr class="poll-table-header"> 4257<th>Dates</th> 4258<th>Pollster</th> 4259<th class="partycolumn">LIB</th> 4260<th class="partycolumn">CON</th> 4261<th class="partycolumn">NDP</th> 4262<th class="partycolumn">BQ</th> 4263<th class="partycolumn">GRN</th> 4264<th class="partycolumn">PPC</th> 4265<th class="partycolumn">OTH</th> 4266<th class="samplecolumn">Sample</th> 4267<!-- <th>Method</th> --></tr> 4268</thead> 4269</table> 4270</div> 4271<button id="expandButton">See more</button></div> 4272</div> 4273</section> 4274<div class="SA_ad_breaker"> 4275<div class="ad-interactives-placeholder"></div> 4276</div> 4277<section class="SA_text-wrapper"><img src="https://projects-images.thestar.com/signalUnlimited/images/vpl-logo.png" id="SA_vpl-logo"> 4278<p class="SA_heading">About Vox Pop Labs</p> 4279<p><a href="https://voxpoplabs.com" target="__blank">Vox Pop Labs</a> is a social enterprise working to enhance democratic participation with innovative digital products and public opinion research services. Founded and operated by social and statistical scientists, Vox Pop Labs is the developer of several electoral literacy applications such as <a href="https://votecompass.com" target="_blank">Vote Compass</a> and <a href="https://www.polimeter.org" target="_blank">Polimeter</a>.</p> 4280<p class="SA_heading" id="SA_methodology-section">Signal methodology</p> 4281<p>The Signal is an election forecast developed by Vox Pop Labs. It combines hundreds of public opinion polls using a Bayesian dynamic linear model to estimate vote share and project seat outcomes for each political party.</p> 4282<p>The model is designed to correct for key sources of bias in polling. It gives more weight to larger samples, accounts for consistent differences between pollsters (âhouse effectsâ) using data collected over multiple years, and adjusts for systematic bias in the polling industry as a whole based on past election results. While these biases are often small, they can have meaningful effects on seat projections.</p> 4283<p>Because polls are noisy and not released every day, the model also incorporates information over time. Each dayâs estimate reflects both new polling data and prior estimates, which helps smooth trends and prevents overreacting to outlier polls. This allows us to produce a daily forecast even when no new polls are released.</p> 4284<p>To generate regional and riding-level projections, we apply the same framework using updated electoral boundaries and results from the previous election. We then simulate 4,000 possible elections, aligning regional outcomes with the national forecast and incorporating an incumbency advantage for sitting candidates. These simulations produce seat projections along with credible intervals that capture uncertainty.</p> 4285<p>Uncertainty is greatest at the riding level, where projections rely on national and regional trends rather than local polling. These estimates should therefore be interpreted with appropriate caution.</p> 4286<p>To learn more about The Signalâs methodology, visit <a href="https://voxpoplabs.com/the-signal/methodology/" target="_blank">voxpoplabs.com/the-signal/methodology</a>.</p> 4287</section> 4288<div class="SA_ad_breaker"> 4289<div class="ad-interactives-placeholder"></div> 4290</div> 4291<section class="SA_credit-box"> 4292<div class="SA_credit"> 4293<p class="SA_credit-role">Model:</p> 4294<p class="SA_credit-name">Vox Pop Labs</p> 4295</div> 4296<div class="SA_credit"> 4297<p class="SA_credit-role">Design and development:</p> 4298<p class="SA_credit-name">Cameron Tulk</p> 4299</div> 4300<div class="SA_credit"> 4301<p class="SA_credit-role">Top illustration:</p> 4302<p class="SA_credit-name">Susan Kao</p> 4303</div> 4304<div class="SA_credit SA_credit-long"> 4305<p class="SA_credit-name">THE SIGNAL word mark and related model intellectual property © Vox Pop Labs Inc. All rights reserved.</p> 4306</div> 4307</section> 4308</div> <!-- closing subscriber-only wrapper --> 4309 </div> <!-- closing asset-content section --> 4310 </div> <!--closing article body --></div>
4311<script src="https://projects-images.thestar.com/signalUnlimited/script10.js"></script>
4311
4312<script> 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332(function () { 4333 function dispatchUserStatusEvent() { 4334 window.dispatchEvent(new CustomEvent("tnt-user-status", { 4335 detail: { 4336 grantingMethodName: "" 4337 } 4338 })); 4339 } 4340 function loadGiftScript() { 4341 var script = document.createElement("script"); 4342 script.src = "https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/article/resources/scripts/tnt.gift.btn.js"; 4343 script.async = false; 4344 script.onload = function () { 4345 dispatchUserStatusEvent(); 4346 }; 4347 script.onerror = function () { 4348 console.error("Failed to load tnt.gift.btn.js"); 4349 }; 4350 document.head.appendChild(script); 4351 } 4352 const waitForGiftObj = setInterval(function () { 4353 if (!window.giftArticleObj || !giftArticleObj.dataassetuuid || !giftArticleObj.dataAssetUrl) { 4354 return; 4355 } 4356 clearInterval(waitForGiftObj); 4357 document.body.setAttribute("data-asset-uuid", giftArticleObj.dataassetuuid || ""); 4358 const mount = document.getElementById("widget-gift-mount"); 4359 if (!mount) { 4360 console.log("widget-gift-mount not found"); 4361 return; 4362 } 4363 const imageSrc = giftArticleObj.sSrc || ""; 4364 const assetUrl = giftArticleObj.dataAssetUrl || ""; 4365 const assetType = giftArticleObj.dataassettype || ""; 4366 const assetTitle = giftArticleObj.dataassettitle || ""; 4367 const giftServiceIds = giftArticleObj.datagiftserviceids || ""; 4368 const apiUrl = giftArticleObj.dataapiurl || ""; 4369 mount.innerHTML = ""; 4370 const wrapper = document.createElement("div"); 4371 wrapper.id = "tnt-gift-btn-wrapper-metaInstance1"; 4372 wrapper.className = "widget-tnt-gift-article"; 4373 wrapper.setAttribute("data-asset-url", assetUrl); 4374 wrapper.setAttribute("data-gift-service-ids", giftServiceIds); 4375 wrapper.setAttribute("data-asset-type", assetType); 4376 wrapper.setAttribute("data-asset-title", assetTitle); 4377 wrapper.setAttribute("data-api-url", apiUrl); 4378 wrapper.hidden = true; 4379 const toggle = document.createElement("input"); 4380 toggle.type = "checkbox"; 4381 toggle.id = "widget-tnt-gift-toggle-metaInstance1"; 4382 toggle.className = "widget-tnt-gift-toggle"; 4383 toggle.hidden = true; 4384 const button = document.createElement("label"); 4385 button.setAttribute("for", "widget-tnt-gift-toggle-metaInstance1"); 4386 button.id = "tnt-gift-btn"; 4387 button.className = "widget-tnt-gift-btn-dropdown"; 4388 button.setAttribute("aria-haspopup", "true"); 4389 button.hidden = true; 4390 const img = document.createElement("img"); 4391 img.src = imageSrc; 4392 img.alt = "Gift this article"; 4393 img.title = "Gift this article"; 4394 button.appendChild(img); 4395 const menu = document.createElement("div"); 4396 menu.id = "tnt-gift-menu"; 4397 menu.className = "widget-tnt-gift-menu"; 4398 menu.setAttribute("aria-labelledby", "tnt-gift-btn"); 4399 const title = document.createElement("div"); 4400 title.className = "widget-gift-title"; 4401 title.textContent = "New subscriber benefit!"; 4402 const body = document.createElement("div"); 4403 body.className = "widget-gift-body"; 4404 const copyClip = document.createElement("div"); 4405 copyClip.id = "gift-copy-clip"; 4406 copyClip.className = "widget-alert widget-alert-success"; 4407 copyClip.setAttribute("role", "alert"); 4408 copyClip.hidden = true; 4409 copyClip.innerHTML = "Copied to clipboard"; 4410 const claimed = document.createElement("div"); 4411 claimed.id = "gift-claimed"; 4412 claimed.className = "widget-alert widget-alert-success"; 4413 claimed.setAttribute("role", "alert"); 4414 claimed.hidden = true; 4415 claimed.innerHTML = "A gifted article has been claimed."; 4416 const error = document.createElement("div"); 4417 error.id = "gift-error"; 4418 error.className = "widget-alert widget-alert-danger"; 4419 error.setAttribute("role", "alert"); 4420 error.hidden = true; 4421 error.innerHTML = "Out of gifts for the month"; 4422 const limit = document.createElement("div"); 4423 limit.id = "gift-limit"; 4424 limit.className = "widget-alert widget-alert-warning"; 4425 limit.hidden = true; 4426 limit.textContent = "Unfortunately you've used all of your gifts this month. Your counter will reset on the first day of next month."; 4427 const desc = document.createElement("div"); 4428 desc.className = "widget-gift-desc gift-desc"; 4429 desc.textContent = "Share this " + (assetType || "article") + " paywall-free"; 4430 const options = document.createElement("ul"); 4431 options.className = "widget-gift-options gift-options"; 4432 const emailLi = document.createElement("li"); 4433 const emailA = document.createElement("a"); 4434 emailA.id = "tnt-gift-email"; 4435 emailA.setAttribute("role", "button"); 4436 emailA.innerHTML = "Email"; 4437 emailLi.appendChild(emailA); 4438 const copyLi = document.createElement("li"); 4439 const copyA = document.createElement("a"); 4440 copyA.id = "tnt-gift-copy"; 4441 copyA.setAttribute("role", "button"); 4442 copyA.innerHTML = `
4443 <span class="tnt-link">Copy Link<\/span> 4444 <span class="tnt-spinner" hidden>Loadingâ¦<\/span> 4445 `; 4446 copyLi.appendChild(copyA); 4447 options.appendChild(emailLi); 4448 options.appendChild(copyLi); 4449 body.appendChild(copyClip); 4450 body.appendChild(claimed); 4451 body.appendChild(error); 4452 body.appendChild(limit); 4453 body.appendChild(desc); 4454 body.appendChild(options); 4455 menu.appendChild(title); 4456 menu.appendChild(body); 4457 wrapper.appendChild(toggle); 4458 wrapper.appendChild(button); 4459 wrapper.appendChild(menu); 4460 mount.appendChild(wrapper); 4461 if (!window.__giftScriptLoaded) { 4462 window.__giftScriptLoaded = true; 4463 loadGiftScript(); 4464 } else { 4465 dispatchUserStatusEvent(); 4466 } 4467 }, 25); 4468})(); 4469</script>
4469 4470
4471<script type="module"> 4472 4473 function getAdPlacementHtml(id) { 4474 const wrapperEl = document.createElement("div"); 4475 wrapperEl.classList.add('article-special-billboard-wrapper'); 4476 4477 const el = document.createElement("div"); 4478 el.classList.add('adLabelWrapperManual'); 4479 4480 const label = document.createElement("span"); 4481 label.appendChild(document.createTextNode('ARTICLE CONTINUES BELOW')); 4482 label.classList.add('label-article-continues'); 4483 4484 const innerEl = document.createElement('div'); 4485 innerEl.classList.add('tnt-ads-container', 'text-center', 'article-special-ads-desktop'); 4486 4487 const adPlaceholderEl = document.createElement('div'); 4488 adPlaceholderEl.setAttribute('id','article-instory-' + id) 4489 4490 4491 el.appendChild(label); 4492 innerEl.appendChild(adPlaceholderEl); 4493 el.appendChild(innerEl); 4494 wrapperEl.appendChild(el); 4495 4496 return wrapperEl; 4497 } 4498 4499 /* cycle through elements with selector `.ad-interactives-placeholder` and replace with our actual ad HTML 4500 then run the JS to create the ad slot & refresh */ 4501 function updateHtmlTemplateAdPlaceholders() { 4502 const elements = document.querySelectorAll('.ad-interactives-placeholder'); 4503 4504 /* enable lazyload */ 4505 window.googletag.cmd.push(function () { 4506 googletag.setConfig({ 4507 lazyLoad: { 4508 fetchMarginPercent: 500, 4509 renderMarginPercent: 200, 4510 mobileScaling: 2.0 4511 } 4512 }); 4513 }); 4514 4515 /* define slots */ 4516 for (let i = 0; i < elements.length; i++) { 4517 const adPos = i+1; 4518 const adHtml = getAdPlacementHtml(adPos); 4519 elements[i].replaceWith(adHtml); 4520 generateHtmlTemplateAd('article-instory-' + adPos, adPos); 4521 } 4522 4523 window.googletag.cmd.push(function () { 4524 // Enable services 4525 window.googletag.enableServices(); 4526 4527 /* refresh dynamic ad slots */ 4528 window.googletag 4529 .pubads() 4530 .getSlots() 4531 .forEach(function (slot) { 4532 if (slot.getSlotElementId().includes("instory")) { 4533 window.googletag.pubads().refresh([slot]); 4534 } 4535 }); 4536 4537 }); 4538 4539 } 4540 4541 4542 /** 4543 * Dynamically generates an ad and inserts it into the template when called. 4544 * @param {String} slotName - id of the element to render the ad in 4545 */ 4546 function generateHtmlTemplateAd(slotName, adPos) { 4547 // Generate slot name 4548 var adUnitString = '/58580620/thestar.com/interactives'; 4549 4550 window.googletag.cmd.push(function() { 4551 // Add any targeting or any other modifications to the ad here 4552 4553 var mapping = googletag.sizeMapping() 4554 .addSize([992, 0], [[970,250], [728,90], [300,250]]) // desktop 4555 .addSize([0, 0], [300, 250]) // mobile 4556 .build(); 4557 4558 window.gptAdSlots[slotName] = window.googletag.defineSlot(adUnitString, [300,250], slotName) 4559 .defineSizeMapping(mapping) 4560 .addService(window.googletag.pubads()) 4561 .setTargeting('pos', `${adPos}`); 4562 }); 4563 }; 4564 4565 4566 4567 document.addEventListener("DOMContentLoaded", (event) => { 4568 window.googletag = window.googletag || {}; 4569 window.googletag.cmd = window.googletag.cmd || []; 4570 4571 /* replace the placeholders with ads */ 4572 updateHtmlTemplateAdPlaceholders(); 4573 4574 /* reload ads when breakpoint is crossed, so we don't have leaderboards on mobile if the browser is resized */ 4575 function refreshInstoryAds() { 4576 try 4577 {
4578 googletag.pubads().getSlots().forEach(function(slot) { 4579 if (slot.getSlotElementId().includes('instory')) { 4580 googletag.pubads().refresh([slot]); 4581 } 4582 }); 4583 /* only fire refresh once when resizing from desktop */ 4584 window.htmlTemplate.adsRefreshed = true; 4585 } catch (err) { 4586 console.log('error refreshing instory ads: ', err); 4587 } 4588 } 4589 4590 function handleMediaQueryChange(event) { 4591 if (event.matches && !window.htmlTemplate.adsRefreshed) { 4592 refreshInstoryAds(); 4593 } 4594 } 4595 4596 window.htmlTemplate = {}; 4597 window.htmlTemplate.adsRefreshed = false; 4598 const mediaQuery = window.matchMedia('(max-width: 992px)'); 4599 mediaQuery.addEventListener('change', handleMediaQueryChange); 4600 4601 }); 4602 4603 4604</script>
4604 4605 4606
4606<script> 4607 var giftArticleObj ={}; 4608 giftArticleObj.dataAssetUrl ="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"; 4609 giftArticleObj.dataassettype ="article"; 4610 giftArticleObj.dataassettitle ="Just how popular are Carney's Liberals with Canadian voters? Here's what the polls show right now"; 4611 giftArticleObj.dataassetuuid ="1337f598-2b2e-4b63-b5ee-0e923c663892"; 4612 giftArticleObj.datagiftserviceids ="[16203,17076,12907,19939,20014,17769,14503,12817,17337,12880,12955,18690,13474,19329,12910,12877,13726,16134,12961,12820,12736,12835,17808,17427,12883,19921,12895,13666,17088,12946,12931,18255,16902,12889,19894,19302,12898,18666,13465,13513,18213,17835,16368,17784,20106,12940,12925,15144,19861,12937,16050,12901,16866,19972,12964,18693,20115,20079,15837,18561,16869,14605,20310,13477,16821,17616,16062,12916,19617,14203,16068,20043,13549,12949,15108,12814,14970,12838,20008,12886,19990,14979,18669,20118,12826,13471,13927,12811,16254,19912,12904,19836,16197,12934,12913,13468,12727,12943,18252,15825,13996,20055,20040,19987,16887,14254,12928,13069,19074,12892,19824,18159,19338,12919,12958,20229,12832,19957,19918,16437,12922,12823,12829,12952,12241,12238,12778,12781,12784,13861,9927,12802,13024,12262]"; 4613 giftArticleObj.sSrc="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/media2/resources/images/article-gifting/gift-icon.svg?_dc=1789580007"; 4614 giftArticleObj.dataapiurl = "https://42o3d97vxa.execute-api.us-east-1.amazonaws.com/prod/sign-gift-link"; 4615 </script>
4615 4616 4617 <div class="row"> 4618 4619 4620 4621 4622 4623 </div> 4624 4625 <div class="row"> 4626 <div class="col-md-12"><div id="tncms-region-global-container-bottom" class="tncms-region "></div></div> 4627 </div><div class="row"> 4628 <div id="asset-below" class="asset-below clearfix"> 4629 <div class="tsBelowArticle"> 4630 <div class="asset-comments hidden-print"></div> 4631 </div> 4632 </div> 4633 </div></section> 4634 <section id="main-bottom-container" class="container-fullscreen-region container-fluid"> 4635 <div class="fullscreen-region"><div id="tncms-region-global-container-bottom-fullscreen" class="tncms-region "></div></div> 4636 </section><!-- / main-body-container --> 4637 </div> 4638 <div id="site-footer-container" class="hidden-print"> 4639 4640 <div class="container"> 4641 <div id="asset-container-bottom" class="col-md-12"> 4642 <div id="tncms-region-asset_container_bottom" class="tncms-region hidden-print"></div> 4643 </div> 4644 </div> 4645 4646 4647 4648 <footer id="site-footer" class="container_fluid well-main"> 4649 4650 <div id="tncms-region-footer-top-col-full" class="tncms-region "></div> 4651 <div class="row"> 4652 <div id="footer-col-one" class="col-sm-3"><div id="tncms-region-footer-col-one" class="tncms-region "><div id="tncms-block-2826984" class="tncms-block footer-logo"><div id="site-logo-2826984" class="site-logo-container text-left" ><div class="logo-middle"> 4653 <a href="/" aria-label="Home page"><img 4654 4655 src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/custom/image/2faeee7c-8d44-11ed-8c18-eb5483a10695.png?resize=200%2C181" 4656 srcset="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/custom/image/2faeee7c-8d44-11ed-8c18-eb5483a10695.png?resize=150%2C136 150w, https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/custom/image/2faeee7c-8d44-11ed-8c18-eb5483a10695.png?resize=200%2C181 200w, https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/custom/image/2faeee7c-8d44-11ed-8c18-eb5483a10695.png?resize=225%2C203 225w, https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/custom/image/2faeee7c-8d44-11ed-8c18-eb5483a10695.png 300w" 4657 sizes="(min-width: 1200px) calc(25.00vw - 30px), calc(25vw - 30px)" 4658 4659 class=" img-responsive lazyload tnt-prop-img" 4660 width="300" 4661 height="271" 4662 alt="site-logo" 4663 ></a> 4664 </div></div></div><div id="tncms-block-2828136" class="tncms-block"><h3 id="footerColOneToggle">theStar.com <i class="visible-xs fas tnt-chevron-down"></i></h3></div></div><div id="tncms-region-nav-footer-col-one-nav" class="tncms-region-nav"><ul id="footer-col-one-nav_menu" class="topNav bullet-nav nav-list" ><li class=" " data-cmspath="/interactives" data-liurl="/subscribe/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4665 4666 <a class="nav-link tnt-section-subscribe-to-the-star" href="/subscribe/" tabindex="0"> 4667 <span class="nav-label ">Subscribe to the Star</span> 4668 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/users/admin/service/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4669 4670 <a class="nav-link tnt-section-manage-star-subscription" href="/users/admin/service/" tabindex="0"> 4671 <span class="nav-label ">Manage Star Subscription</span> 4672 </a></li><li class=" gdpr-removal" data-cmspath="/interactives" data-liurl="/site/forms/feedback_form/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4673 4674 <a class="nav-link tnt-section-feedback" href="/site/forms/feedback_form/" tabindex="0">
4675 <span class="nav-label ">Feedback</span> 4676 </a></li><li class=" gdpr-removal" data-cmspath="/interactives" data-liurl="/site/forms/removal_request/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4677 4678 <a class="nav-link tnt-section-removal-request" href="/site/forms/removal_request/" tabindex="0"> 4679 <span class="nav-label ">Removal Request</span> 4680 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/sitemap/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4681 4682 <a class="nav-link tnt-section-site-map" href="/site/sitemap/" tabindex="0"> 4683 <span class="nav-label ">Site Map</span> 4684 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/newsletters/?itm_source=newsletter-footer-link" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4685 4686 <a class="nav-link tnt-section-newsletters" href="/newsletters/?itm_source=newsletter-footer-link" tabindex="0"> 4687 <span class="nav-label ">Newsletters</span> 4688 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/opinion/corrections/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4689 4690 <a class="nav-link tnt-section-corrections" href="/opinion/corrections/" tabindex="0"> 4691 <span class="nav-label ">Corrections</span> 4692 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/todays-news/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4693 4694 <a class="nav-link tnt-section-today-s-news" href="/site/todays-news/" tabindex="0"> 4695 <span class="nav-label ">Todayâs News</span> 4696 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/globenewswire/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4697 4698 <a class="nav-link tnt-section-globenewswire" href="/globenewswire/" tabindex="0"> 4699 <span class="nav-label ">GlobeNewswire</span> 4700 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/flyers/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4701 4702 <a class="nav-link tnt-section-flyers" href="/site/flyers/" tabindex="0"> 4703 <span class="nav-label ">Flyers</span> 4704 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/contests/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4705 4706 <a class="nav-link tnt-section-contests" href="/contests/" tabindex="0"> 4707 <span class="nav-label ">Contests</span> 4708 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/newspapers/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4709 4710 <a class="nav-link tnt-section-archives" href="/newspapers/" tabindex="0">
4711 <span class="nav-label ">Archives</span> 4712 </a></li></ul><style> 4713 .affix-top #tncms-region-main-nav-right-region{display: none} 4714 .affix #tncms-region-main-nav-right-region{display: flex;column-gap:8px} 4715 @media (max-width: 991px){ 4716 #main-navigation{height: 45px} 4717 } 4718 4719 </style> 4720 </div><div id="tncms-region-footer-col-one-bottom" class="tncms-region "></div></div> 4721 <div id="footer-col-two" class="col-sm-3"><div id="tncms-region-footer-col-two" class="tncms-region "><div id="tncms-block-2828139" class="tncms-block"><h3 id="footerColTwoToggle">Toronto Star Newspapers Ltd. <i class="visible-xs fas tnt-chevron-down"></i></h3></div></div><div id="tncms-region-nav-footer-col-two-nav" class="tncms-region-nav"><ul id="footer-col-two-nav_menu" class="topNav bullet-nav nav-list" ><li class=" " data-cmspath="/interactives" data-liurl="https://www.tsoffers.ca/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4722 4723 <a class="nav-link tnt-section-subscribe-to-home-delivery" href="https://www.tsoffers.ca/" target="_blank" rel="noopener" tabindex="0"> 4724 <span class="nav-label ">Subscribe to Home Delivery</span> 4725 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://toriservices.newscyclecloud.com/cgi-bin/cmo_tor-c-cmdb-01.sh/custservice/web/login.html?SiteID=TS" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4726 4727 <a class="nav-link tnt-section-manage-home-delivery-subscription" href="https://toriservices.newscyclecloud.com/cgi-bin/cmo_tor-c-cmdb-01.sh/custservice/web/login.html?SiteID=TS" target="_blank" rel="noopener" tabindex="0"> 4728 <span class="nav-label ">Manage Home Delivery Subscription</span> 4729 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://tsgroupoffers.c
4729a/welcome" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4730 4731 <a class="nav-link tnt-section-corporate-group-subscriptions" href="https://tsgroupoffers.ca/welcome" target="_blank" rel="noopener" tabindex="0"> 4732 <span class="nav-label ">Corporate Group Subscriptions</span> 4733 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/about/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4734 4735 <a class="nav-link tnt-section-about" href="/site/about/" tabindex="0"> 4736 <span class="nav-label ">About</span> 4737 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://www.torstar.ca/sections/journalistic-standards" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4738 4739 <a class="nav-link tnt-section-torstar-journalistic-standards" href="https://www.torstar.ca/sections/journalistic-standards" target="_blank" rel="noopener" tabindex="0"> 4740 <span class="nav-label ">Torstar Journalistic Standards</span> 4741 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/atkinson/atkinson-principles.html" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4742 4743 <a class="nav-link tnt-section-atkinson-principles" href="/site/atkinson/atkinson-principles.html" tabindex="0"> 4744 <span class="nav-label ">Atkinson Principles</span> 4745 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/static-pages/glossary.html" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4746 4747 <a class="nav-link tnt-section-glossary" href="/site/static-pages/glossary.html" tabindex="0"> 4748 <span class="nav-label ">Glossary</span> 4749 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/trust/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4750 4751 <a class="nav-link tnt-section-trust-project" href="/trust/" tabindex="0"> 4752 <span class="nav-label ">Trust Project</span> 4753 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/static-pages/contact-us.html" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4754 4755 <a class="nav-link tnt-section-contact-us" href="/site/static-pages/contact-us.html" tabindex="0"> 4756 <span class="nav-label ">Contact Us</span> 4757 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://careers.smartrecruiters.com/Torstar/careers" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4758 4759 <a class="nav-link tnt-section-join-our-team" href="https://careers.smartrecruiters.com/Torstar/careers" target="_blank" rel="noopener" tabindex="0"> 4760 <span class="nav-label ">Join Our Team</span> 4761 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/static-pages/contact-webmaster.html" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4762 4763 <a class="nav-link tnt-section-contact-webmaster" href="/site/static-pages/contact-webmaster.html" tabindex="0">
4764 <span class="nav-label ">Contact Webmaster</span> 4765 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/faq/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4766 4767 <a class="nav-link tnt-section-faq" href="/site/faq/" tabindex="0"> 4768 <span class="nav-label ">FAQ</span> 4769 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://torontostar.pressreader.com/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4770 4771 <a class="nav-link tnt-section-star-epaper-edition" href="https://torontostar.pressreader.com/" target="_blank" rel="noopener" tabindex="0"> 4772 <span class="nav-label ">Star ePaper Edition</span> 4773 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/static-pages/reprint-license.html" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4774 4775 <a class="nav-link tnt-section-reprint-and-license" href="/site/static-pages/reprint-license.html" tabindex="0"> 4776 <span class="nav-label ">Reprint and License</span> 4777 </a></li></ul><style> 4778 .affix-top #tncms-region-main-nav-right-region{display: none} 4779 .affix #tncms-region-main-nav-right-region{display: flex;column-gap:8px} 4780 @media (max-width: 991px){ 4781 #main-navigation{height: 45px} 4782 } 4783 4784 </style> 4785 </div><div id="tncms-region-footer-col-two-bottom" class="tncms-region "></div></div> 4786 <div id="footer-col-three" class="col-sm-3"><div id="tncms-region-footer-col-three" class="tncms-region "><div id="tncms-block-2828142" class="tncms-block"><h3 id="footerColThreeToggle">Advertising <i class="visible-xs fas tnt-chevron-down"></i></h3></div></div><div id="tncms-region-nav-footer-col-three-nav" class="tncms-region-nav"><ul id="footer-col-three-nav_menu" class="topNav bullet-nav nav-list" ><li class=" " data-cmspath="/interactives" data-liurl="https://www.torstaradvertising.ca" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4787 4788 <a class="nav-link tnt-section-advertise-with-us" href="https://www.torstaradvertising.ca" target="_blank" rel="noopener" tabindex="0"> 4789 <span class="nav-label ">Advertise with Us</span> 4790 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/static-pages/terms-and-conditions.html" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4791 4792 <a class="nav-link tnt-section-advertising-terms" href="/site/static-pages/terms-and-conditions.html" tabindex="0"> 4793 <span class="nav-label ">Advertising Terms</span> 4794 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/static-pages/advertising-standards.html" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4795 4796 <a class="nav-link tnt-section-advertising-standards" href="/site/static-pages/advertising-standards.html" tabindex="0"> 4797 <span class="nav-label ">Advertising Standards</span> 4798 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/special-features/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4799 4800 <a class="nav-link tnt-section-special-features" href="/special-features/" tabindex="0">
4801 <span class="nav-label ">Special Features</span> 4802 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/sponsored-sections/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4803 4804 <a class="nav-link tnt-section-sponsored-content" href="/sponsored-sections/" tabindex="0"> 4805 <span class="nav-label ">Sponsored Content</span> 4806 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/site/ad-registry/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4807 4808 <a class="nav-link tnt-section-election-ads-registry" href="/site/ad-registry/" tabindex="0"> 4809 <span class="nav-label ">Election Ads Registry</span> 4810 </a></li></ul><style> 4811 .affix-top #tncms-region-main-nav-right-region{display: none} 4812 .affix #tncms-region-main-nav-right-region{display: flex;column-gap:8px} 4813 @media (max-width: 991px){ 4814 #main-navigation{height: 45px} 4815 } 4816 4817 </style> 4818 </div><div id="tncms-region-footer-col-three-bottom" class="tncms-region "></div></div> 4819 <div id="footer-col-four" class="col-sm-3"><div id="tncms-region-footer-col-four" class="tncms-region "><div id="tncms-block-2828145" class="tncms-block"><h3 id="footerColFourToggle">Initiatives <i class="visible-xs fas tnt-chevron-down"></i></h3></div></div><div id="tncms-region-nav-footer-col-four-nav" class="tncms-region-nav"><ul id="footer-col-four-nav_menu" class="topNav bullet-nav nav-list" ><li class=" " data-cmspath="/interactives" data-liurl="/initiatives/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4820 4821 <a class="nav-link tnt-section-the-toronto-star-childrens-charities" href="/initiatives/" tabindex="0"> 4822 <span class="nav-label ">The Toronto Star Children's Charities</span> 4823 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/initiatives/santa-claus-fund/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4824 4825 <a class="nav-link tnt-section-santa-claus-fund" href="/initiatives/santa-claus-fund/" tabindex="0"> 4826 <span class="nav-label ">Santa Claus Fund</span> 4827 </a></li><li class=" " data-cmspath="/interactives" data-liurl="/initiatives/fresh-air-fund/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4828 4829 <a class="nav-link tnt-section-fresh-air-fund" href="/initiatives/fresh-air-fund/" tabindex="0"> 4830 <span class="nav-label ">Fresh Air Fund</span> 4831 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://www.thestaradvisers.com/Portal/default.aspx" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4832 4833 <a class="nav-link tnt-section-star-advisers" href="https://www.thestaradvisers.com/Portal/default.aspx" target="_blank" rel="noopener" tabindex="0"> 4834 <span class="nav-label ">Star Advisers</span> 4835 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://www.classroomconnection.ca/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4836 4837 <a class="nav-link tnt-section-classroom-connection" href="https://www.classroomconnection.ca/" target="_blank" rel="noopener" tabindex="0">
4838 <span class="nav-label ">Classroom Connection</span> 4839 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://www.newspapers.com/?iid=619" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4840 4841 <a class="nav-link tnt-section-newspaperscom-archives" href="https://www.newspapers.com/?iid=619" target="_blank" rel="noopener" tabindex="0"> 4842 <span class="nav-label ">Newspapers.com Archives</span> 4843 </a></li><li class=" " data-cmspath="/interactives" data-liurl="https://starstore.ca/" data-parent="" data-grandparent="" data-activeitem="" data-cmsUrl="/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 4844 4845 <a class="nav-link tnt-section-shop-starstoreca" href="https://starstore.ca/" target="_blank" rel="noopener" tabindex="0"> 4846 <span class="nav-label ">Shop StarStore.ca</span> 4847 </a></li></ul><style> 4848 .affix-top #tncms-region-main-nav-right-region{display: none} 4849 .affix #tncms-region-main-nav-right-region{display: flex;column-gap:8px} 4850 @media (max-width: 991px){ 4851 #main-navigation{height: 45px} 4852 } 4853 4854 </style> 4855 </div><div id="tncms-region-footer-col-four-bottom" class="tncms-region "></div></div> 4856 </div> 4857 <div id="tncms-region-footer-bottom-col-full" class="tncms-region "><div id="tncms-block-2826990" class="tncms-block footer-social padding-bottom"><div class="follow-links-2826990 follow-links text-left"> 4858 4859 <section id="block-2826990" class="block emphasis-h4 " ><ul class="list-inline"> 4860 4861 <li> 4862 <a href="https://www.facebook.com/torontostar" title="Facebook" target="_blank" rel="noopener" class="btn btn-xs btn-link fb" data-toggle="tooltip" data-placement="bottom"> 4863 <i class="fab tnt-facebook-f"></i> 4864 <span class="sr-only">Facebook</span> 4865 </a> 4866 </li> 4867 4868 4869 <li> 4870 <a href="https://twitter.com/torontostar" title="Twitter" target="_blank" rel="noopener" class="btn btn-xs btn-link tw" data-toggle="tooltip" data-placement="bottom"> 4871 <i class="fab tnt-x-twitter"></i> 4872 <span class="sr-only">Twitter</span> 4873 </a> 4874 </li> 4875 4876 4877 4878 4879 <li> 4880 <a href="https://www.youtube.com/TorontoStar" title="Youtube" target="_blank" rel="noopener" class="btn btn-xs btn-link yt" data-toggle="tooltip" data-placement="bottom"> 4881 <i class="fab tnt-youtube"></i> 4882 <span class="sr-only">YouTube</span> 4883 </a> 4884 </li> 4885 4886 4887 4888 4889 <li> 4890 <a href="https://www.instagram.com/thetorontostar/" title="Instagram" target="_blank" rel="noopener" class="btn btn-xs btn-link is" data-toggle="tooltip" data-placement="bottom"> 4891 <i class="fab tnt-instagram"></i> 4892 <span class="sr-only">Instagram</span> 4893 </a> 4894 </li> 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 </ul> 4918 </section> 4919</div>
4920<script type="application/ld+json"> 4921{ "@context" : "https://schema.org", 4922 "@type" : "Organization", 4923 "url" : "http://www.thestar.com", 4924 "sameAs" : ["https:\/\/www.facebook.com\/torontostar","https:\/\/twitter.com\/torontostar","https:\/\/www.youtube.com\/TorontoStar","https:\/\/www.instagram.com\/thetorontostar\/"] 4925} 4926</script>
4926 4927<div class="clearfix"></div></div><div id="tncms-block-2831502" class="tncms-block"> 4928<div class="footer-right-icons"> 4929 4930 <div class="epaper-link"><a href="https://thestarepaper.pressreader.com/" class="epaper" arial-label="ePaper Link"><img src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/icons/todays-paper.png?_dc=1789580009" alt="ePaper Link" loading="lazy" width=112 height=40></a></div> 4931 4932 4933 <div class="apple-link"><a href="https://apps.apple.com/ca/app/thestar-com-iphone/id379481068" arial-label="Apple App Store Download"><img src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/icons/app-store.svg?_dc=1789580009" alt="Apple App Store Logo" loading="lazy" width=112 height=40></a></div> 4934 4935 4936 <div class="google-link"><a href="https://play.google.com/store/apps/details?id=com.thestar.www&referrer=utm_source%3Dweb-driver%26utm_medium%3Ddriver%26utm_content%3Dfooter" arial-label="Google Play Store Download"><img src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/images/icons/google-play.svg?_dc=1789580009" alt="Google Play Store Logo" loading="lazy" width=112 height=40></a></div> 4937 4938 4939</div></div></div><div id="browser-compatibility-modal" class=" browser-compatibility-wrapper browser-compatibility-modal"> 4940 <div class="modal fade" tabindex="-1" role="dialog"> 4941 <div class="modal-dialog" role="document"> 4942 <div class="modal-content text-center"> 4943 <div class="modal-header"> 4944 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 4945 <h4 class="modal-title">Browser Compatibility</h4> 4946 </div> 4947 <div class="modal-body"> 4948 <p class="lead">Your browser is out of date and potentially vulnerable to security risks.<br />We recommend switching to one of the following browsers:</p> 4949 <div class="btn-group" role="group" aria-label="Outdated browser notice"> 4950 <a href="https://www.microsoft.com/en-us/edge" role="button" class="btn btn-default list-group-item"><i class="fab tnt-edge"></i>Microsoft Edge</a> 4951 <a href="https://www.google.com/chrome/" role="button" class="btn btn-default list-group-item"><i class="fab tnt-chrome"></i>Google Chrome</a> 4952 <a href="https://www.mozilla.org/en-US/firefox/" role="button" class="btn btn-default list-group-item"><i class="fab tnt-firefox"></i>Firefox</a> 4953 </div> 4954 </div> 4955 </div><!-- /.modal-content --> 4956 </div><!-- /.modal-dialog --> 4957 </div><!-- /.modal --> 4958 </div> 4959 </footer> 4960 4961 4962 <div id="site-copyright-container" class="container_fluid"> 4963 <div id="tncms-region-footer-copyright" class="tncms-region "><div id="tncms-block-3399231" class="tncms-block"> 4964 <div id="site-copyright" class="row copyright"> 4965 <div class="copyrightLinks"> 4966 4967 <a href="https://www.torstar.ca/terms" aria-label="Terms of Use">Terms of Use</a> 4968 4969 4970 | <a href="https://www.torstar.ca/privacy-policy" aria-label="Privacy Policy">Privacy Policy</a> 4971 4972 4973 | <a href="https://www.torstar.ca/sections/subscription-terms" aria-label="Subscription Terms">Subscription Terms</a> 4974 4975 4976 | <a href="/site/static-pages/terms-and-conditions.html" aria-label="Advertising Terms">Advertising Terms</a> 4977 4978 4979 | <a href="/site/static-pages/accessibility.html" aria-label="Accessibility">Accessibility</a> 4980 4981 </div> 4982 <div class="copyrightMessage"> 4983 100% Canadian Owned.<br /> 4984© Copyright Toronto Star Newspapers Limited 1996 - 2026<br /> 4985The Toronto Star and thestar.com, each property of Toronto Star Newsp
4985apers Limited, 8 Spadina Avenue, 10th Floor, Toronto, ON M5V 0S8 4986 </div> 4987 4988</div></div></div> 4989 </div> 4990 </div> 4991 4992 4993 </div><!-- / offcanvas close --> 4994 4995 4996 4997 <div id="sticky-anchor"><div id="tncms-region-page_sticky_anchor" class="tncms-region hidden-print collapse in"><div id="tncms-block-3143188" class="tncms-block visible-xs"><div class="tnt-ads-container text-center " > 4998 <div id="ad-3143188" class="tnt-ads dfp-ad" data-lazy="true" data-refresh="true" data-mobile-refresh="true" data-bidding-refresh="true" > 4999
4999<script> 5000 googletag.cmd.push(function() { 5001 googletag.display('ad-3143188'); 5002 5003 }); 5004 </script>
5004 5005 </div> 5006 </div></div></div></div> 5007 <!-- / site-container close --> 5008 </div> 5009 5010
5010<script> 5011 window.__tnt = window.__tnt || {}; 5012 __tnt.compatibility = __tnt.compatibility || {}; 5013 5014 __tnt.compatibility.status = ''; 5015 __tnt.compatibility.check = function() { 5016 if (typeof __tnt.advertisements == 'undefined') { 5017 __tnt.compatibility.status = 'FAIL: object 0 undefined'; 5018 return false; 5019 } 5020 return true; 5021 }; 5022 __tnt.compatibility.notification = function() { 5023 }; 5024 (function() { 5025 function compatibilityCheck() { 5026 if (!__tnt.compatibility.check()) { 5027 __tnt.trackEvent({ 5028 'category':'subscription', 5029 'action':'adblock', 5030 'label':'adblock detected', 5031 'value':'1' 5032 }); 5033 __tnt.compatibility.notification(); 5034 } 5035 } 5036 5037 if (document.readyState != 'loading') { 5038 compatibilityCheck(); 5039 } else { 5040 document.addEventListener('DOMContentLoaded', compatibilityCheck); 5041 } 5042 })(); 5043 </script>
5043 5044 5045
5045<script> 5046 jQuery(function() { 5047 if(typeof TNCMS.Tracking != 'undefined'){ 5048 jQuery(TNCMS.Tracking.trackDeclarativeEvents); 5049 }dataLayer.push({'tncms.client.recent_five':__tnt.recentFive.add("1337f598-2b2e-4b63-b5ee-0e923c663892")});}); 5050 </script>
5050 5051 5052
5052<script> 5053 __tnt.trackEvent = function(obj) { 5054 if (typeof obj === 'object') { 5055 if (obj.category && obj.action) { 5056 __tnt.googleEvent(obj); 5057 } else if (obj.network && obj.socialAction) { 5058 __tnt.googleSocial(obj); 5059 } else if (obj.url) { 5060 __tnt.googlePageView(obj); 5061 } 5062 if (typeof TNCMS.Tracking != 'undefined' && obj.metric) { 5063 TNCMS.Tracking.addEvent({ 5064 app: obj.app, 5065 metric: obj.metric, 5066 id: obj.uuid 5067 }); 5068 } 5069 } 5070 }; 5071 5072 if (__tnt.trackEventLater.length > 0) { 5073 __tnt.trackEventLater.forEach(function(obj) { 5074 __tnt.trackEvent(obj); 5075 }); 5076 } 5077 5078 Array.from(document.querySelectorAll('body [data-track]')).forEach(function(el) { 5079 el.addEventListener(__tnt.client.clickEvent, function() { 5080 __tnt.trackEvent(JSON.parse(el.dataset.track)); 5081 }); 5082 }); 5083 Array.from(document.querySelectorAll('body [data-tncms-track-event]')).forEach(function(el) { 5084 el.addEventListener(__tnt.client.clickEvent, function() { 5085 __tnt.trackEvent(JSON.parse(el.dataset.tncmsTrackEvent)); 5086 }); 5087 }); 5088 5089 Array.from(document.querySelectorAll('body [data-tncms-track-dmp]')).forEach(function(el) { 5090 el.addEventListener(__tnt.client.clickEvent, function() { 5091 var dmpData = el.dataset.tncmsTrackDmp; 5092 5093 }); 5094 }); 5095 5096 </script>
5096 5097 5098 <!-- Parsely Root object --> 5099 <div id="parsely-root" style="display: none"> 5100 <span id="parsely-cfg" data-parsely-site="thestar.com"></span> 5101 </div> 5102 <link rel="preload" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/subscription-assets.css?_dc=1789580009" as="style" onload="this.onload=null;this.rel='stylesheet'"> 5103 <noscript><link rel="stylesheet" href="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/styles/common/subscription-assets.css?_dc=1789580009"></noscript> 5104 5105 5106 5107 <form id="user-login-form-generic" style="display:none" role="form" method="post" action="https://www.thestar.com/users/login/"> 5108 <input type="hidden" name="x_org_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 5109 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 5110 <input type="hidden" name="username" value="provider:Metroland Hub"> 5111 <input type="hidden" name="site" value="thestar.com"> 5112 </form> 5113 5114<div id="tn-pay-card-templates" class="tn-pay-card-templates wallet-card-icons" hidden><template class="visa" data-card="Visa" data-card-spreedly="visa"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.visa.32937c5b818e2f6145f243b6ccc36fb6.svg" alt="Visa" /></template><template class="master" data-card="Mastercard" data-card-spreedly="master"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.mastercard.3cb5b7ce700383b4bf471acc2ecf7828.svg" alt="Mastercard" /></template><template class="american_express" data-card="American Express" data-card-spreedly="american_express"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.amex.9ae30a7ced41276fe9f087fdbc2e2bea.svg" alt="American Express" /></template><template class="discover" data-card="Discover" data-card-spreedly="discover"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.discover.df3351b64454849e4220183966bb80bd.svg" alt="Discover" /></template><template class="jcb" data-card="JCB" data-card-spreedly="jcb"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.jcb.f824c86d80073c9649d3ec9ebc995f64.svg" alt="JCB" /></template><template class="diners_club" data-card="Diners Club" data-card-spreedly="diners_club"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.diners.b2a3028ea5bece90a83cd302043a20f6.svg" alt="Diners Club" /></template><template class="dankort" data-card="Dankort" data-card-spreedly="dankort"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.creditcard.d9a15f41d5d4bd97cda40c4a67e08907.svg" alt="Credit Card" /></template><template class="other" data-card="other"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.creditcard.d9a15f41d5d4bd97cda40c4a67e08907.svg" alt="Credit Card" /></template> 5115</div> 5116<div id="access-offers-modal" class=" access-offers-wrapper access-modal access-offers-modal access-display-default" data-offers-in-page="true" data-display-mode="in-page" data-rate-display="service"> 5117 <div class="modal fade" data-backdrop="static" data-keyboard="false"> 5118 <div class="modal-dialog offer-tab"> 5119 <!-- OFFERS TAB --> 5120 <div id="modal-offers-tab" class="modal-content primary-tab hide" data-active-class="offer-tab"> 5121 <div class="modal-header"> 5122 <button type="button" class="tab-back btn btn-sm btn-default" aria-label="Previous Tab">
5123 <span>Back</span> 5124 </button> 5125 5126 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 5127 <span aria-hidden="true">×</span> 5128 </button> 5129 <h3 class="offer-group-title text-center">Offer</h3> 5130 </div> 5131 <div class="modal-body"> 5132 5133 <template class="template promo-error-template"> 5134 <div class="promo-error alert alert-warning"> 5135 <p><strong>Sorry</strong>, an error occurred.</p> 5136</div></template><template class="template-promo-service hide"><div class="promotion-service subscription-service panel panel-default"> 5137 <h4 class="method-featured"></h4> 5138 <h3 class="method-header"></h3> 5139 <div class="method-image"></div> 5140 <div class="offer-details"> 5141 <p class="offer-rate"></p> 5142 <p class="offer-limits">Already Subscribed!</p> 5143 <p class="offer-cycle"></p> 5144 <p class="offer-savings"></p> 5145 </div> 5146 5147 <div class="method-footer"> 5148 <a data-subscription-service="" class="method-link btn btn-primary btn-lg"><span class="no-services">Get Started</span><span class="user-owns-this-service">Manage Service</span></a> 5149 <p class="offer-cancel">Cancel anytime</p> 5150 </div></div></template> 5151 5152 <div id="access-modal-description" class="text-center offer-group-description"></div> 5153 <div class="access-login access-login-super col-sm-8 col-sm-push-2"> 5154 <div class="logged-in alert alert-success row purchase-standard" role="alert"> 5155 <div class="col-sm-8 text-left">You are logged in <strong class="tn-user-screenname"></strong></div> 5156 <div class="col-sm-4 text-right"> <a class="alert-link" href="https://www.thestar.com/users/login/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html" rel="nofollow">Switch accounts</a></div> 5157 </div> 5158 5159 </div> 5160 <div class="clearfix"></div> 5161 5162 <div class="promo-loading text-center font-larger" style="display:none;"> 5163 <span class="fas tnt-spinner tnt-spin"></span> 5164</div><div id="access-methods" class="output access-methods-list" data-referer="https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html" data-paywall-display="modal"> 5165 <div class="text-center"> 5166 <i class="fas tnt-spinner tnt-spin" style="font-size:64px;"></i> 5167 </div> 5168 </div> 5169 5170 <div class="offer-group-secure-signup text-center">Secure transaction.<span class="access-login access-login-link not-logged-in"> 5171 <a href="javascript:void(0)" role="button" class="login-toggle">Have an account? Log In</a> 5172 </span></div></div> 5173 <div class="clearfix"></div> 5174 </div> 5175 5176 <!-- SIGNUP TAB --> 5177 <div id="user-modal-tab-signup" class="modal-content hide" > 5178 <div class="modal-header"> 5179 <button type="button" class="tab-back btn btn-sm btn-default" aria-label="Previous Tab"> 5180 <span>Back</span> 5181 </button> 5182 5183 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 5184 <span aria-hidden="true">×</span> 5185 </button> 5186 5187 <h3 class="text-center">Sign Up</h3> 5188 </div> 5189 <div class="modal-body"><div class="user-register-blox"> 5190 <form id="user-register-form" class="user-login-form" role="form" method="post" action="https://www.thestar.com/users/signup/"><input name="referer_url" type="hidden" value="/"><div class="alert alert-danger critical-error hide"> 5191 <p>Account processing issue - the email address may already exist</p> 5192 </div> 5193 5194 <fieldset> 5195 <legend class="sr-only">User information</legend> 5196 <div class="form-group row"> 5197 <label for="input-firstname" class="control-label hide"> 5198
5199 <span class="text-danger">*</span> 5200 5201 First name 5202 </label> 5203 <div class="input-container col-xs-6"> 5204 <input id="input-firstname" class="form-control first_last_names" type="text" name="first_name" value="" required placeholder="First name"> 5205 </div> 5206 5207 <label for="input-lastname" class="control-label hide"> 5208 5209 <span class="text-danger">*</span> 5210 5211 Last name 5212 </label> 5213 <div class="input-container col-xs-6"> 5214 <input id="input-lastname" class="form-control first_last_names" type="text" name="last_name" value="" required placeholder="Last name"> 5215 5216 </div> 5217 </div> 5218 <div class="form-group"> 5219 <label for="input-email" class="control-label hide"><span class="text-danger">*</span> Email Address</label> 5220 <div class="input-container"> 5221 <input id="input-email" class="form-control" type="email" name="email" value="" placeholder="Email Address" data-toggle="tooltip" data-placement="top" title="Your email address will be used to confirm your account. We won't share it with anyone else." required> 5222 <span class="sr-only">Your email address will be used to confirm your account. We won't share it with anyone else.</span> 5223 </div> 5224 </div> 5225 5226 <div class="form-group"> 5227 <label for="input-password" class="control-label hide"><span class="text-danger">*</span> Password</label> 5228 <div class="input-container"> 5229 <input id="input-password" class="form-control" type="password" name="password" autocomplete="off" placeholder="Password" data-toggle="tooltip" data-placement="top" title="Create a password that only you will remember. If you forget it, you'll be able to recover it using your email address." required> 5230 <p class="help-block">Must be at least 8 characters, not contain repeating characters (e.g., 111), and not contain sequential numbers (e.g., 123).</p> 5231 <span class="sr-only">Create a password that only you will remember. If you forget it, you'll be able to recover it using your email address.</span> 5232 </div> 5233 </div> 5234 5235 <div class="form-group"> 5236 <label for="input-confirm-password" class="control-label hide"><span class="text-danger">*</span> Confirm Password</label> 5237 <div class="input-container"> 5238 <input id="input-confirm-password" class="form-control" type="password" name="password_verify" autocomplete="off" placeholder="Confirm Password" data-toggle="tooltip" data-placement="top" title="Confirm your password." required> 5239 <span class="sr-only">Confirm your password.</span> 5240 </div> 5241 </div></fieldset> 5242 5243 5244 <fieldset> 5245 <legend>Contact information</legend> 5246 5247 5248 <div class="form-group"> 5249 <label for="input-phone" class="control-label"> 5250 5251 5252 Phone 5253 </label> 5254 <div class="input-container"> 5255 <input id="input-phone" class="form-control phoneUS" type="tel" name="phone" value="" 5256 5257 data-mask="(000) 000-0000"> 5258 5259 </div> 5260 </div> 5261 5262 5263 5264 <div class="form-group"> 5265 <label for="select-country" class="control-label"> 5266 5267 Country</label> 5268 <div class="input-container"> 5269 <select id="select-country" name="country" class="form-control" 5270 5271><option value="US" >United States of America</option><option value="VI" >US Virgin Islands</option><option value="UM" >United States Minor Outlying Islands</option><option value="CA" selected>Canada</option><option value="MX" >Mexico, United Mexican States</option><option value="BS" >
5271Bahamas, Commonwealth of the</option><option value="CU" >Cuba, Republic of</option><option value="DO" >Dominican Republic</option><option value="HT" >Haiti, Republic of</option><option value="JM" >Jamaica</option><option value="AF" >Afghanistan</option><option value="AL" >Albania, People's Socialist Republic of</option><option value="DZ" >Algeria, People's Democratic Republic of</option><option value="AS" >American Samoa</option><option value="AD" >Andorra, Principality of</option><option value="AO" >Angola, Republic of</option><option value="AI" >Anguilla</option><option value="AQ" >Antarctica (the territory South of 60 deg S)</option><option value="AG" >Antigua and Barbuda</option><option value="AR" >Argentina, Argentine Republic</option><option value="AM" >Armenia</option><option value="AW" >Aruba</option><option value="AU" >Australia, Commonwealth of</option><option value="AT" >Austria, Republic of</option><option value="AZ" >Azerbaijan, Republic of</option><option value="BH" >Bahrain, Kingdom of</option><option value="BD" >Bangladesh, People's Republic of</option><option value="BB" >Barbados</option><option value="BY" >Belarus</option><option value="BE" >Belgium, Kingdom of</option><option value="BZ" >Belize</option><option value="BJ" >Benin, People's Republic of</option><option value="BM" >Bermuda</option><option value="BT" >Bhutan, Kingdom of</option><option value="BO" >Bolivia, Republic of</option><option value="BA" >Bosnia and Herzegovina</option><option value="BW" >Botswana, Republic of</option><option value="BV" >Bouvet Island (Bouvetoya)</option><option value="BR" >Brazil, Federative Republic of</option><option value="IO" >British Indian Ocean Territory (Chagos Archipelago)</option><option value="VG" >British Virgin Islands</option><option value="BN" >Brunei Darussalam</option><option value="BG" >Bulgaria, People's Republic of</option><option value="BF" >Burkina Faso</option><option value="BI" >Burundi, Republic of</option><option value="KH" >Cambodia, Kingdom of</option><option value="CM" >Cameroon, United Republic of</option><option value="CV" >Cape Verde, Republic of</option><option value="KY" >Cayman Islands</option><option value="CF" >Central African Republic</option><option value="TD" >Chad, Republic of</option><option value="CL" >Chile, Republic of</option><option value="CN" >China, People's Republic of</option><option value="CX" >Christmas Island</option><option value="CC" >Cocos (Keeling) Islands</option><option value="CO" >Colombia, Republic of</option><option value="KM" >Comoros, Union of the</option><option value="CD" >Congo, Democratic Republic of</option><option value="CG" >Congo, People's Republic of</option><option value="CK" >Cook Islands</option><option value="CR" >Costa Rica, Republic of</option><option value="CI" >Cote D'Ivoire, Ivory Coast, Republic of the</option><option value="CY" >Cyprus, Republic of</option><option value="CZ" >Czech Republic</option><option value="DK" >Denmark, Kingdom of</option><option value="DJ" >Djibouti, Republic of</option><option value="DM" >Dominica, Commonwealth of</option><option value="EC" >Ecuador, Republic of</option><option value="EG" >Egypt, Arab Republic of</option><option value="SV" >El Salvador, Republic of</option><option value="GQ" >Equatorial Guinea, Republic of</option><option value="ER" >Eritrea</option><option value="EE" >Estonia</option><option value="ET" >Ethiopia</option><option value="FO" >Faeroe Islands</option><option value="FK" >Falkland Islands (Malvinas)</option><option value="FJ" >Fiji, Republic of the Fiji Islands</option><option value="FI" >Finland, Republic of</option><option value="FR" >France, French Republic</option><option value="GF" >French Guiana</option><option value="PF" >French Polynesia</option><option value="TF" >French Southern Territories</option><option value="GA" >Gabon, Gabonese Republic</option><option value="GM" >Gambia, Republic of the</option><option value="GE" >Georgia</option><option value="DE" >Germany</option><option value="GH" >Ghana, Republic of</option><option value="GI" >Gibraltar</option><option value="GR" >Greece, Hellenic Republic</option><option value="GL" >Greenland</option><option value="GD" >Grenada</option><option value="GP" >Guadaloupe</option><option value="GU" >Guam</option><option value="GT" >Guatemala, Republic of</option><option value="GN" >Guinea, Revolutionary 5272People's Rep'c of</option><option value="GW" >Guinea-Bissau, Republic of</option><option value="GY" >Guyana, Republic of</option><option value="HM" >Heard and McDonald Islands</option><option value="VA" >
5272Holy See (Vatican City State)</option><option value="HN" >Honduras, Republic of</option><option value="HK" >Hong Kong, Special Administrative Region of China</option><option value="HR" >Hrvatska (Croatia)</option><option value="HU" >Hungary, Hungarian People's Republic</option><option value="IS" >Iceland, Republic of</option><option value="IN" >India, Republic of</option><option value="ID" >Indonesia, Republic of</option><option value="IR" >Iran, Islamic Republic of</option><option value="IQ" >Iraq, Republic of</option><option value="IE" >Ireland</option><option value="IL" >Israel, State of</option><option value="IT" >Italy, Italian Republic</option><option value="JP" >Japan</option><option value="JO" >Jordan, Hashemite Kingdom of</option><option value="KZ" >Kazakhstan, Republic of</option><option value="KE" >Kenya, Republic of</option><option value="KI" >Kiribati, Republic of</option><option value="KP" >Korea, Democratic People's Republic of</option><option value="KR" >Korea, Republic of</option><option value="KW" >Kuwait, State of</option><option value="KG" >Kyrgyz Republic</option><option value="LA" >Lao People's Democratic Republic</option><option value="LV" >Latvia</option><option value="LB" >Lebanon, Lebanese Republic</option><option value="LS" >Lesotho, Kingdom of</option><option value="LR" >Liberia, Republic of</option><option value="LY" >Libyan Arab Jamahiriya</option><option value="LI" >Liechtenstein, Principality of</option><option value="LT" >Lithuania</option><option value="LU" >Luxembourg, Grand Duchy of</option><option value="MO" >Macao, Special Administrative Region of China</option><option value="MK" >Macedonia, the former Yugoslav Republic of</option><option value="MG" >Madagascar, Republic of</option><option value="MW" >Malawi, Republic of</option><option value="MY" >Malaysia</option><option value="MV" >Maldives, Republic of</option><option value="ML" >Mali, Republic of</option><option value="MT" >Malta, Republic of</option><option value="MH" >Marshall Islands</option><option value="MQ" >Martinique</option><option value="MR" >Mauritania, Islamic Republic of</option><option value="MU" >Mauritius</option><option value="YT" >Mayotte</option><option value="FM" >Micronesia, Federated States of</option><option value="MD" >Moldova, Republic of</option><option value="MC" >Monaco, Principality of</option><option value="MN" >Mongolia, Mongolian People's Republic</option><option value="MS" >Montserrat</option><option value="MA" >Morocco, Kingdom of</option><option value="MZ" >Mozambique, People's Republic of</option><option value="MM" >Myanmar</option><option value="NA" >Namibia</option><option value="NR" >Nauru, Republic of</option><option value="NP" >Nepal, Kingdom of</option><option value="AN" >Netherlands Antilles</option><option value="NL" >Netherlands, Kingdom of the</option><option value="NC" >New Caledonia</option><option value="NZ" >New Zealand</option><option value="NI" >Nicaragua, Republic of</option><option value="NE" >Niger, Republic of the</option><option value="NG" >Nigeria, Federal Republic of</option><option value="NU" >Niue, Republic of</option><option value="NF" >Norfolk Island</option><option value="MP" >Northern Mariana Islands</option><option value="NO" >Norway, Kingdom of</option><option value="OM" >Oman, Sultanate of</option><option value="PK" >Pakistan, Islamic Republic of</option><option value="PW" >Palau</option><option value="PS" >Palestinian Territory, Occupied</option><option value="PA" >Panama, Republic of</option><option value="PG" >Papua New Guinea</option><option value="PY" >Paraguay, Republic of</option><option value="PE" >Peru, Republic of</option><option value="PH" >Philippines, Republic of the</option><option value="PN" >Pitcairn Island</option><option value="PL" >Poland, Polish People's Republic</option><option value="PT" >Portugal, Portuguese Republic</option><option value="PR" >Puerto Rico</option><option value="QA" >Qatar, State of</option><option value="RE" >Reunion</option><option value="RO" >Romania, Socialist Republic of</option><option value="RU" >Russian Federation</option><option value="RW" >Rwanda, Rwandese Republic</option><option value="WS" >Samoa, Independent State of</option><option value="SM" >San Marino, Republic of</option><option value="ST" >Sao Tome and Principe, Democratic Republic of</option><option value="SA" >Saudi Arabia, Kingdom of</option><option value="SN" >Senegal, Republic of</option><option value="CS" >Serbia and Montenegro</option><option value="SC" >Seychelles, Republic of</option><option value="SL" >Sierra Leone, Republic of</option><option value="SG" >Singapore, Republic of</option><option value="SK" >Slovakia (Slovak Republic)</option><option value="SI" >Slovenia</option><option value="SB" >Solomon Islands</option><option value="SO" >Somalia, Somali Republic</option><option value="ZA" >South Africa, Republic of</option><option value="GS" >South Georgia and the South Sandwich Islands</option><option value="ES" >Spain, Spanish State</option><option value="LK" >Sri Lanka, Democratic Socialist Republic of</option><option value="SH" >St. Helena</option><option value="KN" >St. Kitts and Nevis</option><option value="LC" >St. Lucia</option><option value="PM" >St. Pierre and Miquelon</option><option value="VC" >St. Vincent and the Grenadines</option><option value="SD" >
5272Sudan, Democratic Republic of the</option><option value="SR" >Suriname, Republic of</option><option value="SJ" >Svalbard & Jan Mayen Islands</option><option value="SZ" >Swaziland, Kingdom of</option><option value="SE" >Sweden, Kingdom of</option><option value="CH" >Switzerland, Swiss Confederation</option><option value="SY" >Syrian Arab Republic</option><option value="TW" >Taiwan, Province of China</option><option value="TJ" >Tajikistan</option><option value="TZ" >Tanzania, United Republic of</option><option value="TH" >Thailand, Kingdom of</option><option value="TL" >Timor-Leste, Democratic Republic of</option><option value="TG" >Togo, Togolese Republic</option><option value="TK" >Tokelau (Tokelau Islands)</option><option value="TO" >Tonga, Kingdom of</option><option value="TT" >Trinidad and Tobago, Republic of</option><option value="TN" >Tunisia, Republic of</option><option value="TR" >Turkey, Republic of</option><option value="TM" >Turkmenistan</option><option value="TC" >Turks and Caicos Islands</option><option value="TV" >Tuvalu</option><option value="UG" >Uganda, Republic of</option><option value="UA" >Ukraine</option><option value="AE" >United Arab Emirates</option><option value="GB" >United Kingdom of Great Britain & N. Ireland</option><option value="UY" >Uruguay, Eastern Republic of</option><option value="UZ" >Uzbekistan</option><option value="VU" >Vanuatu</option><option value="VE" >Venezuela, Bolivarian Republic of</option><option value="VN" >Viet Nam, Socialist Republic of</option><option value="WF" >Wallis and Futuna Islands</option><option value="EH" >Western Sahara</option><option value="YE" >Yemen</option><option value="ZM" >Zambia, Republic of</option><option value="ZW" >Zimbabwe</option></select> 5273 </div> 5274 </div> 5275 5276 <div class="form-group"> 5277 <label for="input-address" class="control-label"> 5278 5279 Address</label> 5280 <div class="input-container"> 5281 <input id="input-address" class="form-control" type="text" name="address" value="" 5282 5283> 5284 </div> 5285 </div> 5286 5287 <div class="form-group"> 5288 <label for="input-city" class="control-label"> 5289 5290 City</label> 5291 <div class="input-container"> 5292 <input id="input-city" class="form-control" type="text" name="municipality" value="Toronto" 5293 5294> 5295 </div> 5296 </div> 5297 5298 <div class="form-group"> 5299 <label for="select-state" class="control-label"> 5300 5301 State</label> 5302 <div class="input-container"> 5303 <select id="select-state" name="region" class="form-control" 5304 5305><option value="AL" >Alabama</option><option value="AK" >Alaska</option><option value="AZ" >Arizona</option><option value="AR" >Arkansas</option><option value="CA" >California</option><option value="CO" >Colorado</option><option value="CT" >Connecticut</option><option value="DE" >Delaware</option><option value="FL" >Florida</option><option value="GA" >Georgia</option><option value="HI" >Hawaii</option><option value="ID" >Idaho</option><option value="IL" >Illinois</option><option value="IN" >Indiana</option><option value="IA" >Iowa</option><option value="KS" >Kansas</option><option value="KY" >Kentucky</option><option value="LA" >Louisiana</option><option value="ME" >Maine</option><option value="MD" >Maryland</option><option value="MA" >Massachusetts</option><option value="MI" >Michigan</option><option value="MN" >Minnesota</option><option value="MS" >Mississippi</option><option value="MO" >Missouri</option><option value="MT" >Montana</option><option value="NE" >Nebraska</option><option value="NV" >Nevada</option><option value="NH" >New Hampshire</option><option value="NJ" >New Jersey</option><option value="NM" >New Mexico</option><option value="NY" >New York</option><option value="NC" >North Carolina</option><option value="ND" >North Dakota</option><option value="OH" >Ohio</option><option value="OK" >Oklahoma</option><option value="OR" >Oregon</option><option value="PA" >Pennsylvania</option><option value="RI" >Rhode Island</option><option value="SC" >South Carolina</option><option value="SD" >South Dakota</option><option value="TN" >Tennessee</option><option value="TX" >Texas</option><option value="UT" >Utah</option><option value="VT" >Vermont</option><option value="VA" >Virginia</option><option value="WA" >Washington</option><option value="DC" >Washington D.C.</option><option value="WV" >West Virginia</option><option value="WI" >Wisconsin</option><option value="WY" >Wyoming</option><option value="PR" >Puerto Rico</option><option value="VI" >US Virgin Islands</option><option value="AA" >Armed Forces Americas</option><option value="AP" >Armed Forces Pacific</option><option value="AE" >Armed Forces Europe</option><option value="MP" >Northern Mariana Islands</option><option value="MH" >Marshall Islands</option><option value="AS" >American Samoa</option><option value="FM" >Federated States of Micronesia</option><option value="GU" >Guam</option><option value="PW" >Palau</option><option value="AB" >Alberta, Canada</option><option value="BC" >British Columbia, Canada</option><option value="MB" >Manitoba, Canada</option><option value="NB" >New Brunswick, Canada</option><option value="NL" >Newfoundland, Canada</option><option value="NS" >Nova Scotia, Canada</option><option value="NT" >Northwest Territories, Canada</option><option value="NU" >Nunavut, Canada</option><option value="ON" selected>Ontario, Canada</option><option value="PE" >Prince Edward Island, Canada</option><option value="QC" >Quebec, Canada</option><option value="SK" >Saskatchewan, Canada</option><option value="YT" >Yukon Territory, Canada</option></select> 5306 </div> 5307 </div> 5308 5309 <div class="form-group"> 5310 <label for="input-postcode" class="control-label"> 5311 5312 Postal Code</label> 5313 <div class="input-container"> 5314 <input id="input-postcode" class="form-control" type="text" name="postcode" value="" 5315 5316> 5317 </div> 5318 5319 </div> 5320 5321 </fieldset> 5322 5323 5324 5325 <fieldset> 5326 <legend class="sr-only">Birth date</legend> 5327 <div class="form-group"> 5328 <label for="dp-birthday" class="control-label sr-only"> 5329 5330 5331 Birthday 5332 </label> 5333 <div class="input-container"> 5334 <input id="dp-birthday" class="form-control" name="dp_birthday" placeholder="Birthday" value="" 5335 5336> 5337 <input id="input-birthday" type="hidden" name="birthday" value="" disabled> 5338 </div> 5339 </div> 5340
5340<script> 5341 jQuery(document).ready(function($){ 5342 function dateToYMD(date) { 5343 var yyyy = date.getFullYear(); 5344 var mm = date.getMonth() + 1; 5345 var dd = date.getDate(); 5346 return '' + yyyy + '-' + (mm <= 9 ? '0' + mm : mm) + '-' + (dd <= 9 ? '0' + dd : dd); 5347 } 5348 5349 $('#dp-birthday').datepicker({ 5350 format:'mm-dd-yyyy', 5351 startView: 2, 5352 endDate: 'now', 5353 orientation:'top left', 5354 autoclose: true, 5355 }).on('hide', function(e){ 5356 if( $('#dp-birthday').val() != '' ){ 5357 // mm-dd-yyyy 5358 var sBirthdate = $('#dp-birthday').datepicker('getDate'); 5359 $('#input-birthday').val(dateToYMD(sBirthdate)).prop('disabled', false); 5360 } 5361 e.stopPropagation(); 5362 }); 5363 5364 if( $('#input-birthday').val() != '' ){ 5365 // yyyy-mm-dd 5366 var sBirthdate = $('#input-birthday').val().split('-'); 5367 // mm-dd-yyyy 5368 var sNewBirthdate = sBirthdate[1] + '-' + sBirthdate[2] + '-' + sBirthdate[0]; 5369 $('#dp-birthday').val(sNewBirthdate); 5370 } 5371 }); 5372 </script>
5372 5373 </fieldset> 5374 5375 5376 5377 <div class="form-group"> 5378 <div class="input-container"> 5379 <label class="center-block text-center"><span class="sr-only">CAPTCHA</span><div class="tncms-recaptcha-wrapper"><div class="g-recaptcha" data-sitekey="6LdvF8kSAAAAAHtjCXotWkt5byjdinh-RPyWTH5J" data-action="submit"></div><input type="hidden" name="g-recaptcha-is-checkbox" value="yes"></div></label> 5380 </div> 5381 </div><div class="user-register-submit form-group"> 5382 <div class="input-container text-center"> 5383 <button type="submit" class="btn btn-lg btn-primary">Create Account</button> 5384 </div> 5385 </div></form><div class="user-login-or-container"> 5386 <span class="user-login-or text-muted">or</span> 5387 </div> 5388 <p class="text-center">Sign up with</p><div class="user-login-fed-auth"> 5389 <form role="form" method="post" action="https://www.thestar.com/users/login/" class=""><input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"><button type="submit" name="username" value="provider:appleid" class="btn btn-block btn-lg btn-appleid"> 5390 <span class="fab tnt-apple tnt-fw"></span> Sign in with Apple</button><button type="submit" name="username" value="provider:facebook" class="btn btn-block btn-lg btn-facebook"> 5391 <span class="fab tnt-facebook-square tnt-fw"></span> Sign in with Facebook</button><button type="submit" name="username" value="provider:google" class="btn btn-block btn-lg btn-google"> 5392 <span class="fab tnt-google tnt-fw"></span> Sign in with Google</button></form> 5393</div></div> 5394
5394<script> 5395 window.tntSignup = document.createEvent('Event'); 5396 tntSignup.initEvent('tnt-signup',true,true,{}); 5397 5398 jQuery(document).ready(function($){ 5399 $('#user-register-form input').each(function(){ 5400 if( $(this).attr('data-mask') && $(this).data('mask') !== '' ){ 5401 $(this).mask( $(this).data('mask') ); 5402 } 5403 }); 5404 5405 if( $('#input-smslist-phone').length > 0 && $('#input-phone').length > 0 ){ 5406 $('#input-phone').change(function(){ 5407 $('#input-smslist-phone').val( $(this).val() ); 5408 }); 5409 } 5410 5411 document.getElementById('user-register-form').addEventListener('click', function(e) { 5412 if (e.target.matches('.mailing-lists-select-all')) { 5413 var inputs = document.getElementById('user-register-form')['lists[]']; 5414 for (var i=0; i<inputs.length; i++) { 5415 inputs[i].checked = true; 5416 } 5417 } else if (e.target.matches('.mailing-lists-select-none')) { 5418 var inputs = document.getElementById('user-register-form')['lists[]']; 5419 for (var i=0; i<inputs.length; i++) { 5420 inputs[i].checked = false; 5421 } 5422 } 5423 }); 5424 5425 $('#user-register-form').validate({ 5426 onkeyup: false, 5427 errorElement: 'span', 5428 errorPlacement: function(error, element){ 5429 error.appendTo( element.parents('.input-container') ); 5430 }, 5431 errorClass: 'has-error text-danger', 5432 validClass: 'has-success text-success', 5433 highlight: function(element, errorClass, validClass){ 5434 $(element).parents('.form-group').addClass(errorClass).removeClass(validClass); 5435 }, 5436 unhighlight: function(element, errorClass, validClass){ 5437 $(element).parents('.form-group').removeClass(errorClass).addClass(validClass); 5438 }, 5439 rules: { 5440 phone: { 5441 required: function(element){ 5442 5443 return $('input[name="smslist_lists[]"]').is(':checked'); 5444 5445 } 5446 }, 5447 screen_name: { 5448 required: false, 5449 remote_username: __tnt.scrubUrl($('#input-username').data('check-url')) 5450 }, 5451 5452 5453 5454 password: { 5455 hasSequentialNumbers: true, 5456 hasRepeatingChars: true, 5457 minlength: 8 5458 }, 5459 password_verify: { 5460 equalTo: '#input-password' 5461 } 5462 }, 5463 messages: { 5464 5465 password: { 5466 minlength: "Passwords must be at least 8 characters long." 5467 }, 5468 password_verify: { 5469 equalTo: "The password you entered doesn't match." 5470 } 5471 }, submitHandler: function(form) { 5472 $('#user-register-form button').prop('disabled', true);//form.submit(); 5473 }}); 5474 5475 $.validator.addMethod("first_last_names", function(value, element) { 5476 return this.optional( element ) || /^[a-z][- '.,a-z]+$/i.test( value ); 5477 }, 'Names must start with a letter and can only contain valid characters.'); 5478 }); 5479 </script>
5479</div> 5480 <div class="modal-footer"> 5481 <div class="text-right padding-bottom"> 5482 <a href="javascript:void(0)" role="button" id="user-modal-login-toggle">Have an account? Log In</a> 5483 </div> 5484 </div> 5485 </div> 5486 5487 <!-- SIGNUP SUCCESS VERIFICATION --> 5488 <div id="user-modal-tab-signup-success" class="modal-content hide"> 5489 <div class="modal-header"> 5490 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 5491 <span aria-hidden="true">×</span> 5492 </button> 5493 5494 <h3 class="text-center">You're all set!</h3> 5495 </div> 5496 <div class="modal-body row"> 5497 5498 <div class="col-xs-12" id="user-modal-tabs"> 5499 <div id="user-modal-signup-success-tab"> 5500 5501 <p id="user-modal-signup-success-check" class="text-center"><i class="fas tnt-check"></i></p> 5502 5503 <p class="text-center"><strong>Thank you <span class="username"></span></strong>.</p> 5504 <p class="text-center">Your account has been registered, and you are now logged in.</p> 5505 5506 <p class="text-center">Check your email for details.</p> 5507 </div> 5508 </div> 5509 </div> 5510 <div class="modal-footer text-center"> 5511 <a href="javascript:void(0)" role="button" class="btn btn-primary btn-lg" data-dismiss="modal" aria-label="OK">OK</a> 5512 </div> 5513 </div> 5514 5515 <!-- LOGIN TAB --> 5516 <div id="user-modal-tab-login" class="modal-content hide"> 5517 <div class="modal-header"> 5518 <button type="button" class="tab-back btn btn-sm btn-default" aria-label="Previous Tab"> 5519 <span>Back</span> 5520 </button> 5521 5522 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 5523 <span aria-hidden="true">×</span> 5524 </button> 5525 5526 <h3 id="user-modal-login-heading" class="text-center">Log In</h3> 5527 </div> 5528 <div class="modal-body row"> 5529 5530 <div class="col-xs-12" id="user-modal-tabs"> 5531 <div id="user-modal-login-tab" class=""><div class="user-login-blox"><form id="access-modal-login-form" class="user-login-form" role="form" method="post" action="https://www.thestar.com/users/login/"> 5532 <div class="alert alert-danger critical-error hide"> 5533 <p>Invalid password or account does not exist</p> 5534 </div><input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"><div class="user-login-username form-group"> 5535 <label for="user-username" class="control-label hide">Email Address</label> 5536 <div class="input-container"> 5537 <input id="user-username" class="form-control" name="username" type="text" value="" placeholder="Email Address" required> 5538 </div> 5539 </div> 5540 5541 <div class="user-login-password form-group"> 5542 <label for="user-password" class="control-label hide">Password</label><div class="input-group"> 5543 <input id="user-password" class="form-control" name="password" type="password" autocomplete="off" required placeholder="Password"> 5544 <div id="user-password-toggle" class="input-group-addon password-toggle" title="Toggle password visibility"> 5545 <i class="fas tnt-eye"></i> 5546 </div> 5547 </div></div> 5548 5549 <div class="user-login-remember form-group row"> 5550 <div class="input-container col-xs-6"> 5551 </div> 5552 <div class="col-xs-6 text-right forgot-wrapper"> 5553 <a id="open-modal-forgot" class="" rel="nofollow" href="https://www.thestar.com/users/forgot/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 5554 Forgot your password? 5555 </a> 5556 </div> 5557 </div> 5558 5559 <div class="user-login-submit form-group"> 5560 <div class="input-container text-center"> 5561 <button type="submit" class="btn btn-lg btn-primary">Log In</button> 5562 </div> 5563 </div> 5564 5565 <div class="text-center form-group"> 5566 <a id="open-modal-instant-login" class="btn btn-sm btn-default btn-instant-login" rel="nofollow" href="https://www.thestar.com/users/instant-login/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 5567 Email me a log in link 5568 </a> 5569 </div> 5570 5571 5572 </form><div class="user-login-or-container">
5573 <span class="user-login-or text-muted">or</span> 5574 </div> 5575 <p class="text-center">Sign in with</p><div class="user-login-fed-auth"> 5576 <form role="form" method="post" action="https://www.thestar.com/users/login/" class=""><input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"><button type="submit" name="username" value="provider:appleid" class="btn btn-block btn-lg btn-appleid"> 5577 <span class="fab tnt-apple tnt-fw"></span> Sign in with Apple</button><button type="submit" name="username" value="provider:facebook" class="btn btn-block btn-lg btn-facebook"> 5578 <span class="fab tnt-facebook-square tnt-fw"></span> Sign in with Facebook</button><button type="submit" name="username" value="provider:google" class="btn btn-block btn-lg btn-google"> 5579 <span class="fab tnt-google tnt-fw"></span> Sign in with Google</button></form> 5580</div></div></div> 5581 5582 </div> 5583 </div> 5584 <div class="modal-footer padding-top"> 5585 <div class="col-xs-4 text-left"> 5586 <a href="/tncms/auth/admin/">Admin login</a> 5587 <a href="javascript:void(0)" role="button" class="padding-bottom" id="user-modal-purchase-toggle">Subscribe</a> 5588 </div> 5589 <div class="col-xs-8 text-right"> 5590 <a href="javascript:void(0)" role="button" class="padding-bottom" id="user-modal-signup-toggle">Need an account? Sign Up</a> 5591 </div> 5592 </div> 5593 </div> 5594 5595 <!-- FORGOT TAB --> 5596 <div id="user-modal-tab-forgot" class="modal-content hide"> 5597 <div class="modal-header"> 5598 <button type="button" class="tab-back btn btn-sm-default" aria-label="Previous Tab"> 5599 <span>Back</span> 5600 </button> 5601 5602 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 5603 <span aria-hidden="true">×</span> 5604 </button> 5605 5606 <h3 class="text-center">Reset Password</h3> 5607 </div> 5608 5609 <div class="modal-body row"> 5610 <div class="col-xs-12"> 5611 <p class="user-help">Submitting this form below will send a message to your email with a link to change your password.</p> 5612 5613 <form id="user-modal-forgot-form" role="form" method="post" action="https://www.thestar.com/users/forgot/"> 5614 <input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"> 5615 <div class="user-login-username form-group"> 5616 <label for="forgot-username" class="sr-only">Email or Screen Name</label> 5617 <input id="forgot-username" class="form-control" name="username" type="text" placeholder="Email or Screen Name" value="" required> 5618 </div> 5619 5620 <div class="form-group"> 5621 <div class="input-container"> 5622 <label class="center-block text-center"><span class="sr-only">CAPTCHA</span><div class="tncms-recaptcha-wrapper"><div class="g-recaptcha" data-sitekey="6LdvF8kSAAAAAHtjCXotWkt5byjdinh-RPyWTH5J" data-action="submit"></div><input type="hidden" name="g-recaptcha-is-checkbox" value="yes"></div></label> 5623 </div> 5624 </div><div class="user-login-submit form-group"> 5625 <div class="text-center"> 5626 <button type="submit" class="btn btn-primary">Reset Password</button> 5627 </div> 5628 </div> 5629 </form></div> 5630 </div> 5631 </div> 5632 5633 <div id="user-modal-tab-forgot-success" class="modal-content hide"> 5634 <div class="modal-header"> 5635 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
5636 <span aria-hidden="true">×</span> 5637 </button> 5638 5639 <h3 class="text-center">Forgot Password</h3> 5640 </div> 5641 5642 <div class="modal-body"> 5643 <p>An email message containing instructions on how to reset your password has been sent to the email address listed on your account.</p> 5644 </div> 5645 5646 </div> 5647 5648 <!-- INSTANT LOG-IN TAB --> 5649 <div id="user-modal-tab-instant-login" class="modal-content hide"> 5650 <div class="modal-header"> 5651 <button type="button" class="tab-back btn btn-sm-default" aria-label="Previous Tab"> 5652 <span>Back</span> 5653 </button> 5654 5655 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 5656 <span aria-hidden="true">×</span> 5657 </button> 5658 5659 <h3 class="text-center">Email me a log in link</h3> 5660 </div> 5661 5662 <div class="modal-body row"> 5663 <div class="col-xs-12"> 5664 <form id="instant-login-form" class="form-horizontal" role="form" method="post" action="https://www.thestar.com/users/instant-login/"> 5665 <div class="form-group"> 5666 <div class="col-xs-12"> 5667 <label for="instant-login-email" class="sr-only">Account Email</label> 5668 <input id="instant-login-email" class="form-control" name="email" type="email" value="" required placeholder="Account Email"> 5669 </div> 5670 </div> 5671 <div class="form-group"> 5672 <div class="input-container"> 5673 <label class="center-block text-center"><span class="sr-only">CAPTCHA</span><div class="tncms-recaptcha-wrapper"><div class="g-recaptcha" data-sitekey="6LdvF8kSAAAAAHtjCXotWkt5byjdinh-RPyWTH5J" data-action="submit"></div><input type="hidden" name="g-recaptcha-is-checkbox" value="yes"></div></label> 5674 </div> 5675 </div> 5676 <div class="user-login-link-submit form-group"> 5677 <div class="text-center"> 5678 <button type="submit" class="btn btn-primary">Send Email</button> 5679 </div> 5680 </div> 5681</form></div> 5682 </div> 5683 </div> 5684 5685 <!-- PROMO TAB --> 5686 <div id="user-modal-tab-promo" class="modal-content hide" data-active-class="offer-tab"> 5687 <div class="modal-header"> 5688 <button type="button" class="tab-back btn btn-sm btn-default" aria-label="Previous Tab"> 5689 <span>Back</span> 5690 </button> 5691 5692 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 5693 <span aria-hidden="true">×</span> 5694 </button> 5695 5696 <h3 class="text-center">Promotional Offers</h3> 5697 </div> 5698 5699 <div class="modal-body"> 5700 <form id="service-promo-fetch" class="text-left service-promo-open form-horizontal" role="form" method="post" action="https://www.thestar.com/tncms/subscription/services/"> 5701 <input type="hidden" name="serviceid" value=""/> 5702 <div class="form-group"> 5703 <label for="promo" class="sr-only">Enter Promo Code</label> 5704 </div> 5705 5706 <div class="form-group"> 5707 <div class="input-group col-sm-8 col-sm-push-2 col-xs-10 col-xs-offset-1"> 5708 <input type="text" class="form-control" name="promoCode" placeholder="Enter Promo Code" value=""/> 5709 <span class="input-group-btn"> 5710 <button type="submit" class="btn btn-primary">Redeem</button> 5711 </span> 5712 </div> 5713 </div> 5714</form> 5715 5716 <div class="row"> 5717 <div class="col-xs-12"> 5718 <div id="service-promo-error" class="row hide"> 5719 <div class="col-xs-10 col-xs-push-1 alert alert-warning"> 5720 <p>No promotional rates found.</p> 5721 </div> 5722 </div> 5723 5724 <div class="promo-loading text-center font-larger" style="display:none;"> 5725 <span class="fas tnt-spinner tnt-spin"></span> 5726</div><div id="service-promo-output" class="output access-methods-list" data-paywall-display="promo"></div> 5727 </div> 5728 </div> 5729 <div class="clearfix"></div> 5730 </div> 5731 </div> 5732 5733 <!-- PURCHASE TAB --> 5734 <div id="user-modal-tab-purchase" class="modal-content hide"> 5735 <div class="modal-header"> 5736 <button type="button" class="tab-back btn btn-sm btn-default" aria-label="Previous Tab">
5737 <span>Back</span> 5738 </button> 5739 5740 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 5741 <span aria-hidden="true">×</span> 5742 </button> 5743 5744 <h3 class="text-center"> 5745 <span class="purchase-gift">Purchase Gift</span> 5746 <span class="purchase-standard">Purchase Access</span> 5747 </h3> 5748 </div> 5749 5750 <div class="modal-body row"> 5751 <div class="col-xs-12 purchase-form-wrapper"><div id="user-purchase-wrapper" class="col-xs-12"> 5752 5753 <div id="user-purchase-rate"> 5754 <template> 5755 <div data-service-id="" data-rate-id=""> 5756 <div class="service-rate"> 5757 <div class="row"> 5758 <div class="rate-info alert alert-info col-xs-12"> 5759 <div class="service-basics"> 5760 <h4 class="rate-name"></h4> 5761 <p class="rate-price"></p> 5762 <p class="rate-tax tnt-tax-detail hidden">+ Tax</p> 5763 </div> 5764 <div class="service-details hide"> 5765 <p class="service-description"></p> 5766 <a class="service-link purchase-standard" href="">See More Offers</a> 5767 </div> 5768 <div class="rate-info-expander"> 5769 <span class="collapsed">details</span> 5770 <span class="expanded hide">close</span> 5771 </div> 5772 </div> 5773 </div> 5774 </div> 5775 </div> 5776 </template> 5777 <div class="subscribe-form-purchase-rate output"></div> 5778 </div><div id="tnt-payment-super-purchase" class="tnt-payment"> 5779 <div class="row"> 5780 <div class="col-xs-12 alert alert-warning alert-dismissible tnt-payment-error fade" role="alert" id="form-error-super-purchase" hidden> 5781 <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> 5782 <div class="error-message" data-forgot-text="Forgot your password?">An error occurred</div> 5783 </div> 5784 <div class="col-xs-12 alert alert-success alert-dismissible tnt-payment-message fade" role="alert" id="form-message-super-purchase" hidden> 5785 <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> 5786 <div class="response-message"></div> 5787 </div> 5788 </div> 5789 5790 <p class="secure-notice text-center"> 5791 <span class="fas tnt-lock tnt-fw"></span> Secure & Encrypted</p><div id="form-federated-auth-super-purchase" class="row not-logged-in purchase-standard tnt-payment-federated-auth"> 5792 <div class="col-xs-12 access-offers-wrapper"> 5793 <form 5794 id="form-federated-auth-super-purchase-email" 5795 class="form-horizontal tnt-payment-federated-auth-form" 5796 onSubmit="return false"> 5797 <fieldset class="col-xs-12"> 5798 <legend>Sign in with</legend> 5799 <div class="form-group"> 5800 <label for="email-federated-option-super-purchase" class="control-label sr-only"> 5801 Email Address 5802 </label> 5803 <input id="email-federated-option-super-purchase" type="email" name="email" class="form-control" placeholder="Email Address" data-required required /> 5804 </div> 5805 5806 <div class="form-group"> 5807 <button value="blox-account" class="btn btn-block btn-lg btn-local-account" id="form-federated-auth-super-purchase-blox-account">
5808 <span class=""></span> Email Address 5809 </button> 5810 </div> 5811 </fieldset> 5812 </form> 5813 <div class="user-login-or-container"> 5814 <span class="user-login-or text-muted">or</span> 5815 </div> 5816 5817 <div class="user-login-fed-auth"> 5818 <form role="form" method="post" action="https://www.thestar.com/users/login/" class="form-horizontal not-logged-in"><input type="hidden" name="referer_url" value="https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html"><button type="submit" name="username" value="provider:appleid" class="btn btn-block btn-lg btn-appleid"> 5819 <span class="fab tnt-apple tnt-fw"></span> Sign in with Apple</button><button type="submit" name="username" value="provider:facebook" class="btn btn-block btn-lg btn-facebook"> 5820 <span class="fab tnt-facebook-square tnt-fw"></span> Sign in with Facebook</button><button type="submit" name="username" value="provider:google" class="btn btn-block btn-lg btn-google"> 5821 <span class="fab tnt-google tnt-fw"></span> Sign in with Google</button></form> 5822</div> 5823 </div> 5824 </div> 5825 5826 5827 <form id="tncms-paypal-super-purchase" action="/tncms/subscription/buy_paypal/" method="post" class="tnt-payment-paypal-form hide"> 5828 <input name="referrer_url" type="hidden" value="/subscribe/success/" aria-hidden="true" /> 5829 <input name="service_id" type="hidden" value="" aria-hidden="true" /> 5830 <input name="rate_id" type="hidden" value="" aria-hidden="true" /> 5831 <input name="first_name" type="hidden" value="" aria-hidden="true" /> 5832 <input name="last_name" type="hidden" value="" aria-hidden="true" /> 5833 <input name="email" type="hidden" value="" aria-hidden="true" /> 5834 <input name="password" type="password" value="" aria-hidden="true" aria-label="password" /> 5835 <input name="password_verify" type="password" value="" aria-hidden="true" aria-label="password verify" /> 5836 <input name="address" type="hidden" value="" aria-hidden="true" /> 5837 <input name="municipality" type="hidden" value="" aria-hidden="true" /> 5838 <input name="region" type="hidden" value="" aria-hidden="true" /> 5839 <input name="postal_code" type="hidden" value="" aria-hidden="true" /> 5840 <input name="country" type="hidden" value ="" aria-hidden="true" /> 5841 <input name="postal-address" type="hidden" value="" aria-hidden="true" /> 5842 <input name="postal-city" type="hidden" value="" aria-hidden="true" /> 5843 <input name="postal-state" type="hidden" value="" aria-hidden="true" /> 5844 <input name="postal-postcode" type="hidden" value="" aria-hidden="true" /> 5845 <input name="postal-country" type="hidden" value="" aria-hidden="true" /> 5846 <input name="phone" type="hidden" value="" aria-hidden="true" /> 5847</form> 5848 5849 <form 5850 id="form-super-purchase" 5851 class="form-horizontal tnt-payment-form" 5852 role="form" 5853 action="/tncms/subscription/buy/" 5854 method="post" 5855 data-taxable="false" 5856 data-location-required="true" 5857 data-spreedly-key="X7rJZ6QgeO39MdUWonvRd9m0BB7" 5858 data-captcha-key="6LdF3BEhAAAAAEQUmLciJe0QwaHESwQFc2vwCWqh" 5859 data-payment-method="" 5860 data-renewal-mode="false" 5861 5862 data-renewal-token="" 5863 data-spreedly-context="Spreedly" 5864 data-spreedly-env="X7rJZ6QgeO39MdUWonvRd9m0BB7" 5865 data-error-element="form-error-super-purchase" 5866 data-message-element="form-message-super-purchase" 5867 5868 5869 data-cards-source="" 5870 data-cards-allowed="["visa","master","american_express","discover","jcb","diners_club","dankort"]" 5871 data-terms-of-service="tn-tos-super-purchase" 5872 data-submit-button="form-submit-super-purchase" 5873 > 5874 5875 <input type="hidden" name="referrer_url" value="/subscribe/success/" /> 5876 <input type="hidden" name="service_id" value="" /> 5877 <input type="hidden" name="rate_name" value="" /> 5878 <input type="hidden" name="rate_id" value="" /> 5879 <input type="hidden" name="tnpay-token" value="" /> 5880 <input type="hidden" name="use_stored" value="" /> 5881 5882 <input type="hidden" name="rate_price" value="" /><input type="hidden" id="voight-kampf-super-purchase" name="recaptcha_token" value="" /><input type="hidden" name="promoCode" value="" /> 5883 5884 5885 5886 5887 5888 5889 <div class="logged-in alert alert-success" role="alert"> 5890 <div class="col-sm-8 text-left">You are logged in <strong class="tn-user-firstname"></strong></div> 5891 5892 5893 <div class="col-sm-4 text-right"> <a class="alert-link" role="button" tabindex="0" onclick="handleUserSwitchAccounts();">Switch accounts</a></div> 5894
5894<script> 5895 5896 function buildUserSwitchAccountsForm() { 5897 var form = document.getElementById('user-local-logout-form-switch-accounts'); 5898 5899 if (form) { return; } 5900 5901 // build form with javascript since having a form element here breaks the payment modal. 5902 var switchForm = document.createElement('form'); 5903 switchForm.setAttribute('id','user-local-logout-form-switch-accounts'); 5904 switchForm.setAttribute('method','post'); 5905 switchForm.setAttribute('action','https://www.thestar.com/tncms/auth/logout/?return=https://www.thestar.com/users/login/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html'); 5906 switchForm.setAttribute('style','display:none;'); 5907 5908 var refUrl = document.createElement('input'); //input element, text 5909 refUrl.setAttribute('type','hidden'); 5910 refUrl.setAttribute('name','referer_url'); 5911 refUrl.setAttribute('value','https://www.thestar.com/interactives/canadian-federal-politics-election-forecast/article_1337f598-2b2e-4b63-b5ee-0e923c663892.html'); 5912 5913 var submit = document.createElement('input'); 5914 submit.setAttribute('type','submit'); 5915 submit.setAttribute('name','logout'); 5916 submit.setAttribute('value','Logout'); 5917 5918 switchForm.appendChild(refUrl); 5919 switchForm.appendChild(submit); 5920 5921 document.getElementsByTagName('body')[0].appendChild(switchForm); 5922 } 5923 5924 function handleUserSwitchAccounts() { 5925 window.sessionStorage.removeItem('bd-viafoura-oidc'); // clear viafoura JWT token 5926 // logout user before sending them to login page via return url 5927 document.getElementById('user-local-logout-form-switch-accounts').submit(); 5928 return false; 5929 } 5930 5931 buildUserSwitchAccountsForm(); 5932 </script>
5932 5933 5934 </div> 5935 5936 <fieldset id="form-signup-super-purchase" class="col-xs-12 not-logged-in purchase-standard tnt-purchase-login"> 5937 <legend>What's your email address?</legend> 5938 <div class="form-group"> 5939 <label for="email-super-purchase" class="control-label sr-only">Email</label> 5940 <input id="email-super-purchase" 5941 type="email" 5942 name="email" 5943 class="form-control" 5944 placeholder="Email" data-required data-required-logged-out required /> 5945 </div> 5946 <div class="form-group"> 5947 <div class="row"> 5948 <div class="col-xs-6"> 5949 <label for="password-super-purchase" class="sr-only">Password</label> 5950 <input id="password-super-purchase" 5951 type="password" 5952 name="password" 5953 class="form-control" 5954 placeholder="Password" data-required data-required-logged-out required /> 5955 </div> 5956 <div class="col-xs-6"> 5957 <label for="password-verify-super-purchase" class="sr-only">Confirm password</label> 5958 <input id="password-verify-super-purchase" 5959 type="password" 5960 name="password_verify" 5961 class="form-control" 5962 placeholder="Confirm password" /> 5963 </div> 5964 </div> 5965 </div> 5966 </fieldset><fieldset id="form-name-super-purchase" class="col-xs-12 purchase-standard"> 5967 <legend>What's your name?</legend> 5968 <div class="form-group"> 5969 <div class="row"> 5970 <div class="col-xs-6"> 5971 <label for="field-purchaser-firstname-super-purchase" class="control-label sr-only">First name</label> 5972 <input id="field-purchaser-firstname-super-purchase" 5973 class="form-control" 5974 type="text" 5975 name="first_name" 5976 placeholder="First name" data-required required> 5977 </div> 5978 <div class="col-xs-6"> 5979 <label for="field-purchaser-lastname-super-purchase" class="control-label sr-only">Last name</label> 5980 <input id="field-purchaser-lastname-super-purchase" 5981 class="form-control" 5982 type="text" 5983 name="last_name" 5984 placeholder="Last name" data-required required> 5985 </div> 5986 </div> 5987 </div> 5988 </fieldset><fieldset id="form-gift-to-super-purchase" class="col-xs-12 purchase-gift"> 5989 <legend>Who is this gift for?</legend> 5990 <div class="form-group"> 5991 <div class="row"> 5992 <div class="col-xs-12 col-md-6"> 5993 <label for="field-recipient-name-super-purchase" class="control-label sr-only">Recipient name</label> 5994 <input id="field-recipient-name-super-purchase" 5995 class="form-control" 5996 type="text" 5997 name="recipient_name" 5998 placeholder="Recipient name" data-required required /> 5999 </div> 6000 <div class="col-xs-12 col-md-6"> 6001 <label for="field-recipient-email-super-purchase" class="control-label sr-only">Recipient email</label> 6002 <input id="field-recipient-email-super-purchase" 6003 class="form-control" 6004 type="email" 6005 name="recipient_email" 6006 placeholder="Recipient email" data-required required /> 6007 </div> 6008 </div> 6009 </div> 6010 <div class="form-group"> 6011 <div class="row"> 6012 <div id="gift-message" class="col-xs-12"> 6013 <label for="field-gift-message-super-purchase" class="control-label sr-only">Optional message for the recipient</label> 6014 <textarea id="field-gift-message-super-purchase" 6015 class="form-control" 6016 name="message" 6017 rows="4" 6018 placeholder="Optional message for the recipient"></textarea> 6019 </div> 6020 </div> 6021 </div> 6022 </fieldset><fieldset id="form-gift-from-super-purchase" class="col-xs-12 purchase-gift"> 6023 <legend>Who is this gift from?</legend> 6024 <div id="purchaser-info" class="form-group-flex"> 6025 <div id="purchaser-name">
6026 <label for="field-purchaser-name-super-purchase" class="control-label sr-only">Purchaser name</label> 6027 <input id="field-purchaser-name-super-purchase" 6028 class="form-control" 6029 type="text" 6030 name="purchaser_name" 6031 placeholder="Purchaser name" data-required required /> 6032 </div> 6033 6034 <div id="purchaser-email"> 6035 <label for="field-purchaser-email-super-purchase" class="control-label sr-only">Purchaser email</label> 6036 <input id="field-purchaser-email-super-purchase" 6037 class="form-control" 6038 type="email" 6039 name="purchaser_email" 6040 placeholder="Purchaser email" data-required required /> 6041 </div> 6042 </div><template id="purchaser-zip-template"> 6043 <div id="purchaser-zip"> 6044 <label for="field-purchaser-zip-super-purchase" class="control-label sr-only">Purchaser postal code</label> 6045 <input id="field-purchaser-zip-super-purchase" 6046 class="form-control" 6047 type="text" 6048 name="purchaser_zip" 6049 placeholder="Purchaser postal code" data-required required /> 6050 </div> 6051 </template> 6052 </fieldset> 6053 <fieldset id="form-gift-deliver-super-purchase" class="col-xs-12 purchase-gift"> 6054 <legend>Delivery date</legend> 6055 <div class="form-group"> 6056 <div class="row"> 6057 <div class="col-xs-12"> 6058 <label for="field-gift-date-super-purchase" class="control-label sr-only">Delivery date</label> 6059 </div> 6060 <div class="col-xs-12"> 6061 <input id="field-gift-date-super-purchase" 6062 class="form-control" 6063 name="delivery_date" 6064 type="date" 6065 value="2026-09-24"> 6066 </div> 6067 </div> 6068 </div> 6069 </fieldset><fieldset id="form-billing-location-super-purchase" class="col-xs-12 tnt-billing-location tnt-tax-detail tnt-required"> 6070 <legend> 6071 What's your billing location? 6072 </legend><div class="form-group-flex"> 6073 <div id="billing-state"> 6074 <label for="field-postal-state-super-purchase" class="control-label sr-only"> 6075 State 6076 </label> 6077 <select id="field-postal-state-super-purchase" 6078 class="form-control" 6079 name="postal-state" 6080 placeholder="State"><option value="AL" >Alabama</option><option value="AK" >Alaska</option><option value="AZ" >Arizona</option><option value="AR" >Arkansas</option><option value="CA" >California</option><option value="CO" >Colorado</option><option value="CT" >Connecticut</option><option value="DE" >Delaware</option><option value="FL" >Florida</option><option value="GA" >Georgia</option><option value="HI" >Hawaii</option><option value="ID" >Idaho</option><option value="IL" >Illinois</option><option value="IN" >Indiana</option><option value="IA" >Iowa</option><option value="KS" >Kansas</option><option value="KY" >Kentucky</option><option value="LA" >Louisiana</option><option value="ME" >Maine</option><option value="MD" >Maryland</option><option value="MA" >Massachusetts</option><option value="MI" >Michigan</option><option value="MN" >Minnesota</option><option value="MS" >Mississippi</option><option value="MO" >Missouri</option><option value="MT" >Montana</option><option value="NE" >Nebraska</option><option value="NV" >Nevada</option><option value="NH" >New Hampshire</option><option value="NJ" >New Jersey</option><option value="NM" >New Mexico</option><option value="NY" >New York</option><option value="NC" >North Carolina</option><option value="ND" >North Dakota</option><option value="OH" >Ohio</option><option value="OK" >Oklahoma</option><option value="OR" >Oregon</option><option value="PA" >Pennsylvania</option><option value="RI" >Rhode Island</option><option value="SC" >South Carolina</option><option value="SD" >South Dakota</option><option value="TN" >Tennessee</option><option value="TX" >Texas</option><option value="UT" >Utah</option><option value="VT" >Vermont</option><option value="VA" >Virginia</option><option value="WA" >Washington</option><option value="DC" >Washington D.C.</option><option value="WV" >West Virginia</option><option value="WI" >Wisconsin</option><option value="WY" >Wyoming</option><option value="PR" >Puerto Rico</option><option value="VI" >US Virgin Islands</option><option value="AA" >Armed Forces Americas</option><option value="AP" >Armed Forces Pacific</option><option value="AE" >Armed Forces Europe</option><option value="MP" >Northern Mariana Islands</option><option value="MH" >Marshall Islands</option><option value="AS" >American Samoa</option><option value="FM" >Federated States of Micronesia</option><option value="GU" >Guam</option><option value="PW" >Palau</option><option value="AB" >Alberta, Canada</option><option value="BC" >British Columbia, Canada</option><option value="MB" >Manitoba, Canada</option><option value="NB" >New Brunswick, Canada</option><option value="NL" >Newfoundland, Canada</option><option value="NS" >Nova Scotia, Canada</option><option value="NT" >Northwest Territories, Canada</option><option value="NU" >Nunavut, Canada</option><option value="ON" selected>Ontario, Canada</option><option value="PE" >Prince Edward Island, Canada</option><option value="QC" >Quebec, Canada</option><option value="SK" >Saskatchewan, Canada</option><option value="YT" >Yukon Territory, Canada</option></select> 6081 </div> 6082 <div id="billing-postcode">
6083 <label for="field-postal-postcode-super-purchase" class="control-label sr-only"> 6084 Postal Code 6085 </label> 6086 <input id="field-postal-postcode-super-purchase" 6087 type="text" 6088 name="postal-postcode" 6089 maxlength="7" 6090 class="form-control" 6091 placeholder="Postal code" required /> 6092 </div> 6093 <div id="billing-country"> 6094 <label for="field-postal-country-super-purchase" class="control-label sr-only"> 6095 Country 6096 </label> 6097 <select id="field-postal-country-super-purchase" name="postal-country" class="form-control"><option value="US" >United States of America</option><option value="VI" >US Virgin Islands</option><option value="UM" >United States Minor Outlying Islands</option><option value="CA" selected>Canada</option><option value="MX" >Mexico, United Mexican States</option><option value="BS" >Bahamas, Commonwealth of the</option><option value="CU" >Cuba, Republic of</option><option value="DO" >Dominican Republic</option><option value="HT" >Haiti, Republic of</option><option value="JM" >Jamaica</option><option value="AF" >Afghanistan</option><option value="AL" >Albania, People's Socialist Republic of</option><option value="DZ" >Algeria, People's Democratic Republic of</option><option value="AS" >American Samoa</option><option value="AD" >Andorra, Principality of</option><option value="AO" >Angola, Republic of</option><option value="AI" >Anguilla</option><option value="AQ" >Antarctica (the territory South of 60 deg S)</option><option value="AG" >Antigua and Barbuda</option><option value="AR" >Argentina, Argentine Republic</option><option value="AM" >Armenia</option><option value="AW" >Aruba</option><option value="AU" >Australia, Commonwealth of</option><option value="AT" >Austria, Republic of</option><option value="AZ" >Azerbaijan, Republic of</option><option value="BH" >Bahrain, Kingdom of</option><option value="BD" >Bangladesh, People's Republic of</option><option value="BB" >Barbados</option><option value="BY" >Belarus</option><option value="BE" >Belgium, Kingdom of</option><option value="BZ" >Belize</option><option value="BJ" >Benin, People's Republic of</option><option value="BM" >Bermuda</option><option value="BT" >Bhutan, Kingdom of</option><option value="BO" >Bolivia, Republic of</option><option value="BA" >Bosnia and Herzegovina</option><option value="BW" >Botswana, Republic of</option><option value="BV" >Bouvet Island (Bouvetoya)</option><option value="BR" >Brazil, Federative Republic of</option><option value="IO" >British Indian Ocean Territory (Chagos Archipelago)</option><option value="VG" >British Virgin Islands</option><option value="BN" >Brunei Darussalam</option><option value="BG" >Bulgaria, People's Republic of</option><option value="BF" >Burkina Faso</option><option value="BI" >Burundi, Republic of</option><option value="KH" >Cambodia, Kingdom of</option><option value="CM" >Cameroon, United Republic of</option><option value="CV" >Cape Verde, Republic of</option><option value="KY" >Cayman Islands</option><option value="CF" >Central African Republic</option><option value="TD" >Chad, Republic of</option><option value="CL" >Chile, Republic of</option><option value="CN" >China, People's Republic of</option><option value="CX" >Christmas Island</option><option value="CC" >Cocos (Keeling) Islands</option><option value="CO" >Colombia, Republic of</option><option value="KM" >Comoros, Union of the</option><option value="CD" >Congo, Democratic Republic of</option><option value="CG" >Congo, People's Republic of</option><option value="CK" >Cook Islands</option><option value="CR" >Costa Rica, Republic of</option><option value="CI" >Cote D'Ivoire, Ivory Coast, Republic of the</option><option value="CY" >Cyprus, Republic of</option><option value="CZ" >Czech Republic</option><option value="DK" >Denmark, Kingdom of</option><option value="DJ" >Djibouti, Republic of</option><option value="DM" >Dominica, Commonwealth of</option><option value="EC" >Ecuador, Republic of</option><option value="EG" >Egypt, Arab Republic of</option><option value="SV" >El Salvador, Republic of</option><option value="GQ" >Equatorial Guinea, Republic of</option><option value="ER" >Eritrea</option><option value="EE" >Estonia</option><option value="ET" >Ethiopia</option><option value="FO" >Faeroe Islands</option><option value="FK" >Falkland Islands (Malvinas)</option><option value="FJ" >Fiji, Republic of the Fiji Islands</option><option value="FI" >Finland, Republic of</option><option value="FR" >France, French Republic</option><option value="GF" >French Guiana</option><option value="PF" >French Polynesia</option><option value="TF" >French Southern Territories</option><option value="GA" >Gabon, Gabonese Republic</option><option value="GM" >
6097Gambia, Republic of the</option><option value="GE" >Georgia</option><option value="DE" >Germany</option><option value="GH" >Ghana, Republic of</option><option value="GI" >Gibraltar</option><option value="GR" >Greece, Hellenic Republic</option><option value="GL" >Greenland</option><option value="GD" >Grenada</option><option value="GP" >Guadaloupe</option><option value="GU" >Guam</option><option value="GT" >Guatemala, Republic of</option><option value="GN" >Guinea, Revolutionary 6098People's Rep'c of</option><option value="GW" >Guinea-Bissau, Republic of</option><option value="GY" >Guyana, Republic of</option><option value="HM" >Heard and McDonald Islands</option><option value="VA" >Holy See (Vatican City State)</option><option value="HN" >Honduras, Republic of</option><option value="HK" >Hong Kong, Special Administrative Region of China</option><option value="HR" >Hrvatska (Croatia)</option><option value="HU" >Hungary, Hungarian People's Republic</option><option value="IS" >Iceland, Republic of</option><option value="IN" >India, Republic of</option><option value="ID" >Indonesia, Republic of</option><option value="IR" >Iran, Islamic Republic of</option><option value="IQ" >Iraq, Republic of</option><option value="IE" >Ireland</option><option value="IL" >Israel, State of</option><option value="IT" >Italy, Italian Republic</option><option value="JP" >Japan</option><option value="JO" >Jordan, Hashemite Kingdom of</option><option value="KZ" >Kazakhstan, Republic of</option><option value="KE" >Kenya, Republic of</option><option value="KI" >Kiribati, Republic of</option><option value="KP" >Korea, Democratic People's Republic of</option><option value="KR" >Korea, Republic of</option><option value="KW" >Kuwait, State of</option><option value="KG" >Kyrgyz Republic</option><option value="LA" >Lao People's Democratic Republic</option><option value="LV" >Latvia</option><option value="LB" >Lebanon, Lebanese Republic</option><option value="LS" >Lesotho, Kingdom of</option><option value="LR" >Liberia, Republic of</option><option value="LY" >Libyan Arab Jamahiriya</option><option value="LI" >Liechtenstein, Principality of</option><option value="LT" >Lithuania</option><option value="LU" >Luxembourg, Grand Duchy of</option><option value="MO" >Macao, Special Administrative Region of China</option><option value="MK" >Macedonia, the former Yugoslav Republic of</option><option value="MG" >Madagascar, Republic of</option><option value="MW" >Malawi, Republic of</option><option value="MY" >Malaysia</option><option value="MV" >Maldives, Republic of</option><option value="ML" >Mali, Republic of</option><option value="MT" >Malta, Republic of</option><option value="MH" >Marshall Islands</option><option value="MQ" >Martinique</option><option value="MR" >Mauritania, Islamic Republic of</option><option value="MU" >Mauritius</option><option value="YT" >Mayotte</option><option value="FM" >Micronesia, Federated States of</option><option value="MD" >Moldova, Republic of</option><option value="MC" >Monaco, Principality of</option><option value="MN" >Mongolia, Mongolian People's Republic</option><option value="MS" >Montserrat</option><option value="MA" >Morocco, Kingdom of</option><option value="MZ" >Mozambique, People's Republic of</option><option value="MM" >Myanmar</option><option value="NA" >Namibia</option><option value="NR" >Nauru, Republic of</option><option value="NP" >Nepal, Kingdom of</option><option value="AN" >Netherlands Antilles</option><option value="NL" >Netherlands, Kingdom of the</option><option value="NC" >New Caledonia</option><option value="NZ" >New Zealand</option><option value="NI" >Nicaragua, Republic of</option><option value="NE" >Niger, Republic of the</option><option value="NG" >Nigeria, Federal Republic of</option><option value="NU" >Niue, Republic of</option><option value="NF" >Norfolk Island</option><option value="MP" >Northern Mariana Islands</option><option value="NO" >Norway, Kingdom of</option><option value="OM" >Oman, Sultanate of</option><option value="PK" >Pakistan, Islamic Republic of</option><option value="PW" >Palau</option><option value="PS" >Palestinian Territory, Occupied</option><option value="PA" >Panama, Republic of</option><option value="PG" >Papua New Guinea</option><option value="PY" >Paraguay, Republic of</option><option value="PE" >Peru, Republic of</option><option value="PH" >
6098Philippines, Republic of the</option><option value="PN" >Pitcairn Island</option><option value="PL" >Poland, Polish People's Republic</option><option value="PT" >Portugal, Portuguese Republic</option><option value="PR" >Puerto Rico</option><option value="QA" >Qatar, State of</option><option value="RE" >Reunion</option><option value="RO" >Romania, Socialist Republic of</option><option value="RU" >Russian Federation</option><option value="RW" >Rwanda, Rwandese Republic</option><option value="WS" >Samoa, Independent State of</option><option value="SM" >San Marino, Republic of</option><option value="ST" >Sao Tome and Principe, Democratic Republic of</option><option value="SA" >Saudi Arabia, Kingdom of</option><option value="SN" >Senegal, Republic of</option><option value="CS" >Serbia and Montenegro</option><option value="SC" >Seychelles, Republic of</option><option value="SL" >Sierra Leone, Republic of</option><option value="SG" >Singapore, Republic of</option><option value="SK" >Slovakia (Slovak Republic)</option><option value="SI" >Slovenia</option><option value="SB" >Solomon Islands</option><option value="SO" >Somalia, Somali Republic</option><option value="ZA" >South Africa, Republic of</option><option value="GS" >South Georgia and the South Sandwich Islands</option><option value="ES" >Spain, Spanish State</option><option value="LK" >Sri Lanka, Democratic Socialist Republic of</option><option value="SH" >St. Helena</option><option value="KN" >St. Kitts and Nevis</option><option value="LC" >St. Lucia</option><option value="PM" >St. Pierre and Miquelon</option><option value="VC" >St. Vincent and the Grenadines</option><option value="SD" >Sudan, Democratic Republic of the</option><option value="SR" >Suriname, Republic of</option><option value="SJ" >Svalbard & Jan Mayen Islands</option><option value="SZ" >Swaziland, Kingdom of</option><option value="SE" >Sweden, Kingdom of</option><option value="CH" >Switzerland, Swiss Confederation</option><option value="SY" >Syrian Arab Republic</option><option value="TW" >Taiwan, Province of China</option><option value="TJ" >Tajikistan</option><option value="TZ" >Tanzania, United Republic of</option><option value="TH" >Thailand, Kingdom of</option><option value="TL" >Timor-Leste, Democratic Republic of</option><option value="TG" >Togo, Togolese Republic</option><option value="TK" >Tokelau (Tokelau Islands)</option><option value="TO" >Tonga, Kingdom of</option><option value="TT" >Trinidad and Tobago, Republic of</option><option value="TN" >Tunisia, Republic of</option><option value="TR" >Turkey, Republic of</option><option value="TM" >Turkmenistan</option><option value="TC" >Turks and Caicos Islands</option><option value="TV" >Tuvalu</option><option value="UG" >Uganda, Republic of</option><option value="UA" >Ukraine</option><option value="AE" >United Arab Emirates</option><option value="GB" >United Kingdom of Great Britain & N. Ireland</option><option value="UY" >Uruguay, Eastern Republic of</option><option value="UZ" >Uzbekistan</option><option value="VU" >Vanuatu</option><option value="VE" >Venezuela, Bolivarian Republic of</option><option value="VN" >Viet Nam, Socialist Republic of</option><option value="WF" >Wallis and Futuna Islands</option><option value="EH" >Western Sahara</option><option value="YE" >Yemen</option><option value="ZM" >Zambia, Republic of</option><option value="ZW" >Zimbabwe</option></select> 6099 </div> 6100 </div> 6101 </fieldset><fieldset id="form-location-super-purchase" class="col-xs-12 tnt-delivery-location delivery-location-required" hidden> 6102 <legend>What's your delivery address?</legend> 6103 <div class="form-group tnt-tax-detail"> 6104 <label> 6105 <input id="same-info-super-purchase" class="same-info" type="checkbox" name="same_info"> 6106 <b style="position:relative;top:-2px;padding-left:10px;">Copy billing location</b> 6107 </label> 6108 </div> 6109 6110 <div class="form-group"> 6111 <label for="address-super-purchase" class="control-label sr-only">Address</label> 6112 <input id="address-super-purchase" type="text" name="address" class="form-control" placeholder="Address" /> 6113 </div> 6114 6115 <div class="form-group"> 6116 <label for="municipality-super-purchase" class="control-label sr-only">City</label> 6117 <input id="municipality-super-purchase" type="text" name="municipality" class="form-control" placeholder="City" /> 6118 </div> 6119 6120 <div class="form-group"> 6121 <div class="row"> 6122 <div class="col-xs-7 col-md-4"> 6123 <label for="region-super-purchase" class="control-label sr-only">State</label> 6124 <select id="region-super-purchase" class="form-control" name="region" placeholder="State"><option value="AL" >Alabama</option><option value="AK" >Alaska</option><option value="AZ" >Arizona</option><option value="AR" >Arkansas</option><option value="CA" >California</option><option value="CO" >Colorado</option><option value="CT" >Connecticut</option><option value="DE" >Delaware</option><option value="FL" >Florida</option><option value="GA" >Georgia</option><option value="HI" >Hawaii</option><option value="ID" >Idaho</option><option value="IL" >Illinois</option><option value="IN" >Indiana</option><option value="IA" >Iowa</option><option value="KS" >Kansas</option><option value="KY" >Kentucky</option><option value="LA" >Louisiana</option><option value="ME" >Maine</option><option value="MD" >Maryland</option><option value="MA" >Massachusetts</option><option value="MI" >Michigan</option><option value="MN" >Minnesota</option><option value="MS" >Mississippi</option><option value="MO" >Missouri</option><option value="MT" >Montana</option><option value="NE" >Nebraska</option><option value="NV" >Nevada</option><option value="NH" >New Hampshire</option><option value="NJ" >New Jersey</option><option value="NM" >New Mexico</option><option value="NY" >New York</option><option value="NC" >North Carolina</option><option value="ND" >North Dakota</option><option value="OH" >Ohio</option><option value="OK" >Oklahoma</option><option value="OR" >Oregon</option><option value="PA" >Pennsylvania</option><option value="RI" >Rhode Island</option><option value="SC" >South Carolina</option><option value="SD" >South Dakota</option><option value="TN" >Tennessee</option><option value="TX" >Texas</option><option value="UT" >Utah</option><option value="VT" >Vermont</option><option value="VA" >Virginia</option><option value="WA" >Washington</option><option value="DC" >Washington D.C.</option><option value="WV" >West Virginia</option><option value="WI" >Wisconsin</option><option value="WY" >Wyoming</option><option value="PR" >Puerto Rico</option><option value="VI" >US Virgin Islands</option><option value="AA" >Armed Forces Americas</option><option value="AP" >Armed Forces Pacific</option><option value="AE" >Armed Forces Europe</option><option value="MP" >Northern Mariana Islands</option><option value="MH" >Marshall Islands</option><option value="AS" >American Samoa</option><option value="FM" >Federated States of Micronesia</option><option value="GU" >Guam</option><option value="PW" >Palau</option><option value="AB" >Alberta, Canada</option><option value="BC" >British Columbia, Canada</option><option value="MB" >Manitoba, Canada</option><option value="NB" >New Brunswick, Canada</option><option value="NL" >Newfoundland, Canada</option><option value="NS" >Nova Scotia, Canada</option><option value="NT" >Northwest Territories, Canada</option><option value="NU" >Nunavut, Canada</option><option value="ON" selected>Ontario, Canada</option><option value="PE" >Prince Edward Island, Canada</option><option value="QC" >Quebec, Canada</option><option value="SK" >Saskatchewan, Canada</option><option value="YT" >Yukon Territory, Canada</option></select> 6125 </div> 6126 <div class="col-xs-5 col-md-3"> 6127 <label for="postal-code-super-purchase" class="control-label sr-only">Postal code</label> 6128 <input id="postal-code-super-purchase" 6129 type="text" 6130 name="postal_code" 6131 maxlength="6" 6132 class="form-control" 6133 placeholder="Postal code" /> 6134 </div> 6135 </div> 6136 </div> 6137 <div class="form-group"> 6138 <div class="row"> 6139 <div class="col-xs-7"> 6140 <label for="select-country-super-purchase" class="control-label sr-only">Country</label> 6141 <div class="input-container"> 6142 <select id="select-country-super-purchase" name="country" class="form-control"><option value="US" >United States of America</option><option value="VI" >US Virgin Islands</option><option value="UM" >United States Minor Outlying Islands</option><option value="CA" selected>Canada</option><option value="MX" >Mexico, United Mexican States</option><option value="BS" >
6142Bahamas, Commonwealth of the</option><option value="CU" >Cuba, Republic of</option><option value="DO" >Dominican Republic</option><option value="HT" >Haiti, Republic of</option><option value="JM" >Jamaica</option><option value="AF" >Afghanistan</option><option value="AL" >Albania, People's Socialist Republic of</option><option value="DZ" >Algeria, People's Democratic Republic of</option><option value="AS" >American Samoa</option><option value="AD" >Andorra, Principality of</option><option value="AO" >Angola, Republic of</option><option value="AI" >Anguilla</option><option value="AQ" >Antarctica (the territory South of 60 deg S)</option><option value="AG" >Antigua and Barbuda</option><option value="AR" >Argentina, Argentine Republic</option><option value="AM" >Armenia</option><option value="AW" >Aruba</option><option value="AU" >Australia, Commonwealth of</option><option value="AT" >Austria, Republic of</option><option value="AZ" >Azerbaijan, Republic of</option><option value="BH" >Bahrain, Kingdom of</option><option value="BD" >Bangladesh, People's Republic of</option><option value="BB" >Barbados</option><option value="BY" >Belarus</option><option value="BE" >Belgium, Kingdom of</option><option value="BZ" >Belize</option><option value="BJ" >Benin, People's Republic of</option><option value="BM" >Bermuda</option><option value="BT" >Bhutan, Kingdom of</option><option value="BO" >Bolivia, Republic of</option><option value="BA" >Bosnia and Herzegovina</option><option value="BW" >Botswana, Republic of</option><option value="BV" >Bouvet Island (Bouvetoya)</option><option value="BR" >Brazil, Federative Republic of</option><option value="IO" >British Indian Ocean Territory (Chagos Archipelago)</option><option value="VG" >British Virgin Islands</option><option value="BN" >Brunei Darussalam</option><option value="BG" >Bulgaria, People's Republic of</option><option value="BF" >Burkina Faso</option><option value="BI" >Burundi, Republic of</option><option value="KH" >Cambodia, Kingdom of</option><option value="CM" >Cameroon, United Republic of</option><option value="CV" >Cape Verde, Republic of</option><option value="KY" >Cayman Islands</option><option value="CF" >Central African Republic</option><option value="TD" >Chad, Republic of</option><option value="CL" >Chile, Republic of</option><option value="CN" >China, People's Republic of</option><option value="CX" >Christmas Island</option><option value="CC" >Cocos (Keeling) Islands</option><option value="CO" >Colombia, Republic of</option><option value="KM" >Comoros, Union of the</option><option value="CD" >Congo, Democratic Republic of</option><option value="CG" >Congo, People's Republic of</option><option value="CK" >Cook Islands</option><option value="CR" >Costa Rica, Republic of</option><option value="CI" >Cote D'Ivoire, Ivory Coast, Republic of the</option><option value="CY" >Cyprus, Republic of</option><option value="CZ" >Czech Republic</option><option value="DK" >Denmark, Kingdom of</option><option value="DJ" >Djibouti, Republic of</option><option value="DM" >Dominica, Commonwealth of</option><option value="EC" >Ecuador, Republic of</option><option value="EG" >Egypt, Arab Republic of</option><option value="SV" >El Salvador, Republic of</option><option value="GQ" >Equatorial Guinea, Republic of</option><option value="ER" >Eritrea</option><option value="EE" >Estonia</option><option value="ET" >Ethiopia</option><option value="FO" >Faeroe Islands</option><option value="FK" >Falkland Islands (Malvinas)</option><option value="FJ" >Fiji, Republic of the Fiji Islands</option><option value="FI" >Finland, Republic of</option><option value="FR" >France, French Republic</option><option value="GF" >French Guiana</option><option value="PF" >French Polynesia</option><option value="TF" >French Southern Territories</option><option value="GA" >Gabon, Gabonese Republic</option><option value="GM" >Gambia, Republic of the</option><option value="GE" >Georgia</option><option value="DE" >Germany</option><option value="GH" >Ghana, Republic of</option><option value="GI" >Gibraltar</option><option value="GR" >Greece, Hellenic Republic</option><option value="GL" >Greenland</option><option value="GD" >Grenada</option><option value="GP" >Guadaloupe</option><option value="GU" >Guam</option><option value="GT" >Guatemala, Republic of</option><option value="GN" >Guinea, Revolutionary 6143People's Rep'c of</option><option value="GW" >Guinea-Bissau, Republic of</option><option value="GY" >Guyana, Republic of</option><option value="HM" >Heard and McDonald Islands</option><option value="VA" >
6143Holy See (Vatican City State)</option><option value="HN" >Honduras, Republic of</option><option value="HK" >Hong Kong, Special Administrative Region of China</option><option value="HR" >Hrvatska (Croatia)</option><option value="HU" >Hungary, Hungarian People's Republic</option><option value="IS" >Iceland, Republic of</option><option value="IN" >India, Republic of</option><option value="ID" >Indonesia, Republic of</option><option value="IR" >Iran, Islamic Republic of</option><option value="IQ" >Iraq, Republic of</option><option value="IE" >Ireland</option><option value="IL" >Israel, State of</option><option value="IT" >Italy, Italian Republic</option><option value="JP" >Japan</option><option value="JO" >Jordan, Hashemite Kingdom of</option><option value="KZ" >Kazakhstan, Republic of</option><option value="KE" >Kenya, Republic of</option><option value="KI" >Kiribati, Republic of</option><option value="KP" >Korea, Democratic People's Republic of</option><option value="KR" >Korea, Republic of</option><option value="KW" >Kuwait, State of</option><option value="KG" >Kyrgyz Republic</option><option value="LA" >Lao People's Democratic Republic</option><option value="LV" >Latvia</option><option value="LB" >Lebanon, Lebanese Republic</option><option value="LS" >Lesotho, Kingdom of</option><option value="LR" >Liberia, Republic of</option><option value="LY" >Libyan Arab Jamahiriya</option><option value="LI" >Liechtenstein, Principality of</option><option value="LT" >Lithuania</option><option value="LU" >Luxembourg, Grand Duchy of</option><option value="MO" >Macao, Special Administrative Region of China</option><option value="MK" >Macedonia, the former Yugoslav Republic of</option><option value="MG" >Madagascar, Republic of</option><option value="MW" >Malawi, Republic of</option><option value="MY" >Malaysia</option><option value="MV" >Maldives, Republic of</option><option value="ML" >Mali, Republic of</option><option value="MT" >Malta, Republic of</option><option value="MH" >Marshall Islands</option><option value="MQ" >Martinique</option><option value="MR" >Mauritania, Islamic Republic of</option><option value="MU" >Mauritius</option><option value="YT" >Mayotte</option><option value="FM" >Micronesia, Federated States of</option><option value="MD" >Moldova, Republic of</option><option value="MC" >Monaco, Principality of</option><option value="MN" >Mongolia, Mongolian People's Republic</option><option value="MS" >Montserrat</option><option value="MA" >Morocco, Kingdom of</option><option value="MZ" >Mozambique, People's Republic of</option><option value="MM" >Myanmar</option><option value="NA" >Namibia</option><option value="NR" >Nauru, Republic of</option><option value="NP" >Nepal, Kingdom of</option><option value="AN" >Netherlands Antilles</option><option value="NL" >Netherlands, Kingdom of the</option><option value="NC" >New Caledonia</option><option value="NZ" >New Zealand</option><option value="NI" >Nicaragua, Republic of</option><option value="NE" >Niger, Republic of the</option><option value="NG" >Nigeria, Federal Republic of</option><option value="NU" >Niue, Republic of</option><option value="NF" >Norfolk Island</option><option value="MP" >Northern Mariana Islands</option><option value="NO" >Norway, Kingdom of</option><option value="OM" >Oman, Sultanate of</option><option value="PK" >Pakistan, Islamic Republic of</option><option value="PW" >Palau</option><option value="PS" >Palestinian Territory, Occupied</option><option value="PA" >Panama, Republic of</option><option value="PG" >Papua New Guinea</option><option value="PY" >Paraguay, Republic of</option><option value="PE" >Peru, Republic of</option><option value="PH" >Philippines, Republic of the</option><option value="PN" >Pitcairn Island</option><option value="PL" >Poland, Polish People's Republic</option><option value="PT" >Portugal, Portuguese Republic</option><option value="PR" >Puerto Rico</option><option value="QA" >Qatar, State of</option><option value="RE" >Reunion</option><option value="RO" >Romania, Socialist Republic of</option><option value="RU" >Russian Federation</option><option value="RW" >Rwanda, Rwandese Republic</option><option value="WS" >Samoa, Independent State of</option><option value="SM" >San Marino, Republic of</option><option value="ST" >Sao Tome and Principe, Democratic Republic of</option><option value="SA" >Saudi Arabia, Kingdom of</option><option value="SN" >Senegal, Republic of</option><option value="CS" >Serbia and Montenegro</option><option value="SC" >Seychelles, Republic of</option><option value="SL" >Sierra Leone, Republic of</option><option value="SG" >Singapore, Republic of</option><option value="SK" >Slovakia (Slovak Republic)</option><option value="SI" >Slovenia</option><option value="SB" >Solomon Islands</option><option value="SO" >Somalia, Somali Republic</option><option value="ZA" >South Africa, Republic of</option><option value="GS" >South Georgia and the South Sandwich Islands</option><option value="ES" >Spain, Spanish State</option><option value="LK" >Sri Lanka, Democratic Socialist Republic of</option><option value="SH" >St. Helena</option><option value="KN" >St. Kitts and Nevis</option><option value="LC" >St. Lucia</option><option value="PM" >St. Pierre and Miquelon</option><option value="VC" >St. Vincent and the Grenadines</option><option value="SD" >
6143Sudan, Democratic Republic of the</option><option value="SR" >Suriname, Republic of</option><option value="SJ" >Svalbard & Jan Mayen Islands</option><option value="SZ" >Swaziland, Kingdom of</option><option value="SE" >Sweden, Kingdom of</option><option value="CH" >Switzerland, Swiss Confederation</option><option value="SY" >Syrian Arab Republic</option><option value="TW" >Taiwan, Province of China</option><option value="TJ" >Tajikistan</option><option value="TZ" >Tanzania, United Republic of</option><option value="TH" >Thailand, Kingdom of</option><option value="TL" >Timor-Leste, Democratic Republic of</option><option value="TG" >Togo, Togolese Republic</option><option value="TK" >Tokelau (Tokelau Islands)</option><option value="TO" >Tonga, Kingdom of</option><option value="TT" >Trinidad and Tobago, Republic of</option><option value="TN" >Tunisia, Republic of</option><option value="TR" >Turkey, Republic of</option><option value="TM" >Turkmenistan</option><option value="TC" >Turks and Caicos Islands</option><option value="TV" >Tuvalu</option><option value="UG" >Uganda, Republic of</option><option value="UA" >Ukraine</option><option value="AE" >United Arab Emirates</option><option value="GB" >United Kingdom of Great Britain & N. Ireland</option><option value="UY" >Uruguay, Eastern Republic of</option><option value="UZ" >Uzbekistan</option><option value="VU" >Vanuatu</option><option value="VE" >Venezuela, Bolivarian Republic of</option><option value="VN" >Viet Nam, Socialist Republic of</option><option value="WF" >Wallis and Futuna Islands</option><option value="EH" >Western Sahara</option><option value="YE" >Yemen</option><option value="ZM" >Zambia, Republic of</option><option value="ZW" >Zimbabwe</option></select> 6144 </div> 6145 </div> 6146 6147 <div class="col-xs-5"> 6148 <label for="phone-super-purchase" class="control-label sr-only">Phone</label> 6149 <input id="phone-super-purchase" type="tel" name="phone" class="form-control" placeholder="Phone number" /> 6150 </div> 6151 6152 </div> 6153 </div> 6154 </fieldset><fieldset id="form-payment-tax-detail" class="tnt-tax-detail col-xs-12"> 6155 <div class="form-group-flex tax-result"> 6156 <div id="tax-subtotal-container"> 6157 Subtotal: <span class="tax-subtotal"></span> 6158 </div> 6159 <div id="tax-total-container"> 6160 Total: <span class="tax-total"></span> 6161 </div> 6162 </div> 6163 </fieldset><fieldset id="form-payment-super-purchase" class="col-xs-12"> 6164 <legend>How would you like to pay?</legend> 6165 6166 6167 6168 <div id="tn-pay-method-select-super-purchase" class="form-group tn-pay-method-select" hidden> 6169 <template id="tn-pay-method-card-template-super-purchase" class="wallet-template"> 6170 <a class="btn btn-lg btn-block btn-default wallet-btn wallet-show-card" title=""> 6171 <span class="tn-cc-lg" data-cc=""></span> 6172 <span class="tn-cc-text"> 6173 <span class="tn-cc-heading"><span class="tn-cc-ending-in">Ending in <span class="tn-cc-last-four"></span></span> 6174 <span class="tn-cc-label text-muted"></span> <small class="tn-cc-exp"></small> 6175 </span> 6176 </a> 6177 </template><div id="tn-pay-method-alt-super-purchase" class="tn-pay-method-alt"></div><div id="tn-pay-method-output-super-purchase" class="tn-pay-method-output"></div> 6178 6179 <a id="tn-pay-method-new-card-super-purchase" class="btn btn-lg btn-block tn-pay-method-new-card wallet-btn wallet-show-card"> 6180 <div class="">Add New Card</div><div id="tn-pay-cards-valid-super-purchase" class="tn-pay-cards tn-pay-cards-new" data-cards-allowed="["visa","master","american_express","discover","jcb","diners_club","dankort"]" aria-label="Allowed credit cards"> 6181 <span data-cc="american_express" title="American Express" class="allow_announce"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.amex.9ae30a7ced41276fe9f087fdbc2e2bea.svg" alt="American Express" /></span> 6182 <span data-cc="discover" title="Discover" class="allow_announce"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.discover.df3351b64454849e4220183966bb80bd.svg" alt="Discover" /></span> 6183 <span data-cc="master" title="Mastercard" class="allow_announce"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.mastercard.3cb5b7ce700383b4bf471acc2ecf7828.svg" alt="Mastercard" /></span> 6184 <span data-cc="visa" title="Visa" class="allow_announce"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.visa.32937c5b818e2f6145f243b6ccc36fb6.svg" alt="Visa" /></span> 6185 <span data-cc="jcb" title="JCB" class="allow" aria-hidden="true"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.jcb.f824c86d80073c9649d3ec9ebc995f64.svg" alt="JCB" /></span> 6186 <span data-cc="diners_club" title="Diners Club" class="allow" aria-hidden="true"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.diners.b2a3028ea5bece90a83cd302043a20f6.svg" alt="Diners Club" /></span> 6187 <span data-cc="dankort" title="Dankort" class="allow" aria-hidden="true"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.creditcard.d9a15f41d5d4bd97cda40c4a67e08907.svg" alt="Credit Card" /></span> 6188 <span data-cc="other" title="Credit Card" class="allow"><img loading="lazy" src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/images/pay.creditcard.d9a15f41d5d4bd97cda40c4a67e08907.svg" alt="Credit Card" /></span> 6189</div></a> 6190 </div> 6191 6192 <div id="tn-pay-manual-entry-super-purchase" class="tn-pay-card-entry"> 6193 <div class="tn-pay-card-loading text-center"><i class="fas tnt-spinner tnt-spin" style="font-size:64px;"></i></div><div class="tn-pay-card-wrapper tn-pay-iframe" hidden></div><!-- pay card wrapper --> 6194 </div><!-- tn-pay-manual-entry --> 6195 6196 </fieldset> 6197 6198 <fieldset class="col-xs-12"> 6199 <div class="form-group tn-tos-group"> 6200 <label> 6201 <input id="tn-tos-super-purchase" type="checkbox" name="tos_confirm" />
6202 <span class="tn-tos-agree">I Agree to the Subscription <a class="tos-link" href="https://notices.torstar.com/main_terms_of_use_daily_and_community_brands_EN/">Terms of Use.</a> 6203 </span> 6204 <br/> 6205 <small class="service-renews purchase-standard" hidden>This service will be automatically renewed and your credit card billed once it nears expiration.</small> 6206 </label> 6207 </div> 6208 6209 </fieldset> 6210 6211 <div class="form-group text-center"><input type="submit" name="payment_button" class="btn btn-primary tn-pay-button" id="form-submit-super-purchase" value="Pay Now" disabled> 6212 </div> 6213 6214 <p class="secure-notice text-center"> 6215 <span class="purchase-gift">Secure transaction.</span> 6216 <span class="purchase-standard">Secure transaction.</span> 6217 </p> 6218 6219 6220 </form> 6221</div> 6222</div> 6223</div> 6224 </div> 6225 </div> 6226 6227 <!-- PURCHASE SUCCESS --> 6228 <div id="user-modal-tab-purchase-success" class="modal-content hide"> 6229 <div class="modal-header"> 6230 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 6231 <span aria-hidden="true">×</span> 6232 </button> 6233 6234 <h3 class="text-center">You're all set!</h3> 6235 </div> 6236 <div class="modal-body row"> 6237 6238 <div class="col-xs-12" id="user-modal-tabs"> 6239 <div id="user-modal-signup-success-tab"> 6240 6241 <div id="user-modal-tab-purchase-success-hammer"> 6242 <p class="purchase-success-checkmark text-center"><i class="fas tnt-check"></i></p> 6243 </div> 6244 6245 <p class="text-center"> 6246 <strong>Thank you<span class="username purchase-standard"></span></strong>. 6247 </p> 6248 <p class="text-center"> 6249 <span class="purchase-gift">Your gift purchase was successful!</span> 6250 <span class="purchase-standard">Your purchase was successful, and you are now logged in.</span> 6251 </p> 6252 6253 </div> 6254 6255 <div class="col-xs-12" id="modal-purchase-receipt"> 6256 <template data-currency-symbol-before="$" data-currency-symbol-after=""> 6257 <h4 class="service-name"></h4> 6258 <div class="table-responsive"> 6259 <table class="table"> 6260 <tbody> 6261 <tr id="purchase-receipt-rate"> 6262 <td class="text-muted">Rate:</td> 6263 <td class="service-rate"></td> 6264 </tr> 6265 <tr id="purchase-receipt-tax" class="tnt-tax-detail hidden"> 6266 <td class="text-muted">Tax:</td> 6267 <td class="service-tax"></td> 6268 </tr> 6269 <tr id="purchase-receipt-tax-total" class="tnt-tax-detail hidden"> 6270 <td class="text-muted">Today's total:</td> 6271 <td class="service-total"></td> 6272 </tr> 6273 <tr id="purchase-receipt-starts" class="purchase-standard"> 6274 <td class="text-muted">Begins:</td> 6275 <td class="service-start"></td> 6276 </tr> 6277 <tr id="purchase-receipt-transaction" class="purchase-standard"> 6278 <td class="text-muted">Transaction ID:</td> 6279 <td class="transaction-id"></td> 6280 </tr> 6281 </tbody> 6282 </table> 6283 </div> 6284 </template> 6285 6286 <div class="modal-receipt-output"></div> 6287 6288 6289 6290 <p class="text-center">A receipt was sent to your email.</p> 6291 6292 </div> 6293 </div> 6294 </div> 6295 <div class="modal-footer"> 6296
6296<script> 6297 const userEmail = TNCMS.User.getEmail(); 6298 const optPurchaseUrl = '/subscribe/success/'; 6299 const pathname = window.location.pathname; 6300 const storageEmail = window.localStorage.getItem("tncms-firstupsubscribed"); 6301 const subscriptionRateName = window.sessionStorage.getItem("__tnt.service.rate.name"); 6302 const isFirstUpSubscribed = storageEmail && storageEmail.indexOf(userEmail) > -1; 6303 const isSubscribed = TNCMS.User.hasFullAccess() && __tnt.user.services; 6304 const isDisclaimerViewed = window.sessionStorage.getItem("tncms-disclaimer-checked"); 6305 const isFirstUpSignupNeeded = userEmail && isSubscribed && subscriptionRateName && isDisclaimerViewed && !isFirstUpSubscribed && 6306 (optPurchaseUrl == '/subscribe/success/') && (pathname.indexOf('subscribe/success') > -1); 6307 if(isFirstUpSignupNeeded) { 6308 const newStorageEmail = storageEmail? `${storageEmail},${userEmail}` : userEmail; 6309 const theOptions = { 6310 'realm': "dailynews", 6311 'listid': 631, /* 631 */ 6312 'domain':"api.thestar.com", 6313 'domainAlias': "thestar", 6314 'user_email': userEmail, 6315 'new_storage_email': newStorageEmail 6316 } 6317 subscribeNewUserToNewsletter(theOptions); 6318 6319 6320 6321 const commentingNotificationsOptions = { 6322 realm: "dailynews", 6323 listid: 1338, 6324 domain: "api.thestar.com", 6325 domainAlias: "thestar", 6326 user_email: userEmail 6327 }; 6328 6329 subscribeNewUserToNewsletter(commentingNotificationsOptions); 6330 6331 6332 } 6333 6334 function csrfDatetime() { 6335 const salt = "aIojjNzJ"; 6336 const now = new Date(); 6337 const epochTime = now.getTime(); 6338 const manipulatedNumber = (epochTime * 12345) + 67890; 6339 const manipulatedString = manipulatedNumber.toString().split('').reverse().join('') + salt; 6340 const disguised = btoa(manipulatedString); 6341 return disguised; 6342 } 6343 6344 async function newsletterHashData(data) { 6345 const encoder = new TextEncoder();
6346 const dataUint8Array = encoder.encode(data); 6347 const hashBuffer = await crypto.subtle.digest('SHA-256', dataUint8Array); 6348 const hashArray = Array.from(new Uint8Array(hashBuffer)); // Convert buffer to byte array 6349 const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // Convert bytes to hex string 6350 return hashHex; 6351 } 6352 6353 async function subscribeNewUserToNewsletter(theOptions) { 6354 let listid = theOptions.listid; 6355 let realm = theOptions.realm; 6356 let NLdomain = theOptions.domain; 6357 let domainAlias = theOptions.domainAlias; 6358 let currentUserEmail = theOptions.user_email; 6359 let newStorageEmail = theOptions.new_storage_email; 6360 var myHeaders = new Headers(); 6361 myHeaders.append("Content-Type", "application/json"); 6362 myHeaders.append("Host", "new_storage_email"); 6363 6364 const recaptchaResponse = ""; 6365 const userToken = Cookies.get('tncms-user'); 6366 6367 var raw; 6368 const source = { 6369 "platform": "web", 6370 "property": domainAlias, 6371 "type": "automatic", 6372 "place": "modal_purchase_success", 6373 "url": window.location.href, 6374 "userAgent": navigator.userAgent, 6375 "blockId": "", 6376 "timestamp": new Date().toISOString(), 6377 "action": "sub" 6378 }; 6379 if (userToken) { 6380 raw = JSON.stringify({ 6381 "email": currentUserEmail, 6382 "origin": domainAlias, 6383 "token": userToken, 6384 "source": source 6385 }); 6386 } else { 6387 raw = JSON.stringify({ 6388 "email": currentUserEmail, 6389 "origin": domainAlias, 6390 "source": source 6391 }); 6392 } 6393 6394 const hash = await newsletterHashData(raw); 6395 myHeaders.append("x-data-integrity", hash); 6396 6397 var requestOptions = { 6398 method: 'POST', 6399 headers: myHeaders, 6400 body: raw, 6401 redirect: 'follow' 6402 }; 6403 6404 fetch("https://" + NLdomain + "/newsletters/v2/subscription?realm=" + realm + "&listid=" + listid, requestOptions) 6405 .then(response => response.text()) 6406 .then(result => { 6407 let message = JSON.parse(result); 6408 if((message?.error?.code ?? -1) === 0) { 6409 return; 6410 } else if(message.code == 200) { 6411 window.localStorage.setItem("tncms-firstupsubscribed", newStorageEmail); 6412 sessionStorage.removeItem("tncms-disclaimer-checked"); 6413 } 6414 else { 6415 console.log("error"); 6416 console.log(message.code); 6417 } 6418 }) 6419 .catch(error => console.log('error', error)); 6420 } 6421 </script>
6421 6422 6423 <div class="text-center"> 6424 6425 <a href="/subscribe/success/" role="button" class="btn btn-danger btn-lg" aria-label="OK">OK</a> 6426 6427 </div> 6428 </div> 6429 </div> 6430 6431 <!-- ERROR TAB --> 6432 <div id="modal-error-tab" class="modal-content hide"> 6433 <div class="modal-header"> 6434 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 6435 <span aria-hidden="true">×</span> 6436 </button> 6437 6438 <h3 class="text-center">An error occurred</h3> 6439 </div> 6440 <div class="modal-body row"> 6441 <div class="col-xs-12"> 6442 <div class="alert alert-warning" role="alert"> 6443 <div class="error-message">This offer is currently unavailable.</div> 6444 </div> 6445 <div class="text-center"> 6446 <button type="button" class="btn" data-dismiss="modal" aria-label="Close">Close</button> 6447 </div> 6448 </div> 6449 </div> 6450 </div> 6451 6452 <!-- SPINNER TAB --> 6453 <div id="modal-spinner-tab" class="modal-content hide"> 6454 <div class="modal-body row text-center"> 6455 <i class="fas tnt-spinner tnt-spin" style="font-size:64px;"></i> 6456 </div> 6457 </div></div> 6458 </div> 6459 </div> 6460<template id="access-offers-in-page-template"> 6461 6462 <div class="subscriber-offers access-offers-in-page access-offers-wrapper access-display-default"> 6463 <header class="text-center"> 6464 <button type="button" class="close" aria-label="Close"> 6465 <span aria-hidden="true">×</span> 6466 </button> 6467 <h2 class="offer-group-title"></h2> 6468 <p class="offer-group-description"></p> 6469 </header> 6470 6471 <div class="access-login access-login-super col-sm-8 col-sm-push-2"> 6472 <div class="logged-in alert alert-success row purchase-standard" role="alert"> 6473 <div class="col-sm-8 text-left">You are logged in <strong class="tn-user-screenname"></strong></div> 6474 <div class="col-sm-4 text-right"> <a class="alert-link" href="https://www.thestar.com/users/login/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html" rel="nofollow">Switch accounts</a></div> 6475 </div> 6476 6477 </div> 6478 <div class="clearfix"></div> 6479 6480 <div class="access-methods-list output no-services" data-paywall-display="inline"></div> 6481 6482 <div class="offer-group-secure-signup text-center padding-bottom">Secure transaction.<span class="access-login access-login-link not-logged-in"> 6483 <a href="javascript:void(0)" role="button" class="login-toggle" data-in-page="true">Have an account? Log In</a> 6484 </span></div> 6485 </div> 6486 6487</template>
6488<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/content/tncms/live/libraries/flex/components/torstar_core/resources/scripts/newsletter-helper.min.js?_dc=1789580011"></script>
vendor: 1 bytes, line 6488
6488
6489<script src="https://cdn.jsdelivr.net/npm/jwt-decode/build/jwt-decode.min.js"></script>
vendor: 1 bytes, line 6489
6489
6490<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/template/resources/scripts/tnt.errors.log.gtm.ff9df6708e2dbc9da79fbefae5491221.js"></script>
vendor: 1 bytes, line 6490
6490
6491<script>/*<![CDATA[*/ 6492 if(window.innerWidth<800){ 6493 document.addEventListener('DOMContentLoaded', function() { 6494 function getAbsoluteHeight(el) { 6495 var styles = window.getComputedStyle(el); 6496 var margin = parseFloat(styles['marginTop']) + 6497 parseFloat(styles['marginBottom']); 6498 6499 return Math.ceil(el.offsetHeight + margin); 6500 } 6501 6502 try{ 6503 var myStickyObject = document.querySelector('.stickyMobileAd'); 6504 var bodyContainer = document.getElementById("main-body-container"); 6505 6506 if (!myStickyObject || !bodyContainer) { 6507 return; 6508 } 6509 6510 var initialOffset = myStickyObject.offsetTop; // Initial offset position of ad div 6511 var isSticky = false; 6512 var hasExecuted = false; // Flag variable to track if the code has already executed 6513 var adContainerHeight = getAbsoluteHeight(myStickyObject); 6514 6515 var adPlaceholder = document.createElement('div'); 6516 adPlaceholder.style.height = adContainerHeight + 'px'; 6517 adPlaceholder.style.width = '100%'; 6518 6519 6520 6521 function makeSticky() { 6522 myStickyObject.classList.add('sticky'); 6523 isSticky = true; 6524 // bodyContainer.style.marginTop = adContainerHeight - 1 + "px"; 6525 6526 // myStickyObject.parentElement.appendChild(adPlaceholder); 6527 myStickyObject.parentElement.prepend(adPlaceholder); 6528 6529 setTimeout(function() { 6530 myStickyObject.classList.remove('sticky'); 6531 // bodyContainer.style.marginTop = "0px"; 6532 myStickyObject.parentElement.removeChild(adPlaceholder); 6533 isSticky = false; 6534 }, 7000); // Revert back to normal after 7 seconds 6535 } 6536 6537 function handleScroll() { 6538 if (!hasExecuted) { 6539 var scrollPos = window.pageYOffset || document.documentElement.scrollTop; 6540 6541 if (!isSticky && scrollPos >= initialOffset) { 6542 makeSticky(); 6543 } 6544 6545 hasExecuted = true; 6546 window.removeEventListener('scroll', handleScroll); // Remove the scroll event listener 6547 } 6548 } 6549 window.addEventListener('scroll', handleScroll); 6550 }catch(err){} 6551 }); 6552 } 6553 /*]]>*/</script>
vendor: 1 bytes, line 6553
6553
6554<script>/*<![CDATA[*/ dataLayer.push({ 6555 'tncms.asset.sections': ["interactives", "politics/federal"], 6556 'tncms.asset.flags': [""], 6557 'tncms.asset.keywords': ["#federal_politics", "#starnewsroom", "#federal_election", "#polls", "#poll_tracker", "#the_signal", "#election_forecast", "#mark_carney", "#pierre_poilievre", "#starlock", "#conservative_party_of_canada", "#liberal_party_of_canada"] 6558 }); /*]]>*/</script>
vendor: 1 bytes, line 6558
6558
6559<script>/*<![CDATA[*/ 6560 __tnt.googleEvent = function(obj) { 6561 dataLayer.push({ 6562 'event': 'tncms.event.trigger', 6563 'tncms.event.trigger.category': obj.category, 6564 'tncms.event.trigger.action': obj.action, 6565 'tncms.event.trigger.label': obj.label, 6566 'tncms.event.trigger.value': obj.value 6567 }); 6568 } 6569 /* Virtual page view */ 6570 __tnt.googlePageView = function(obj) { 6571 var sURL = obj.url.replace(/^.*\/\/[^\/]+/, ''); 6572 dataLayer.push({ 6573 'event': 'tncms.event.virtual_pageview', 6574 'tncms.event.virtual_pageview.url': sURL, 6575 'tncms.event.virtual_pageview.title': obj.title, 6576 'tncms.event.virtual_pageview.metric': obj.metric 6577 }); 6578 } 6579 /* Social event */ 6580 __tnt.googleSocial = function(obj) { 6581 dataLayer.push({ 6582 'event': 'tncms.event.social', 6583 'tncms.event.social.network': obj.network, 6584 'tncms.event.social.action': obj.socialAction, 6585 'tncms.event.social.target': obj.url 6586 }); 6587 } /*]]>*/</script>
vendor: 1 bytes, line 6587
6587
6588<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.3.1.95bbb3da2f158942c0d0dff2acafdef2.js"></script>
vendor: 1 bytes, line 6588
6588
6589<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.granted.3.1.ad90ffc453968fa1a966ef47f259ec6d.js"></script>
vendor: 1 bytes, line 6589
6589
6590<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.user.modal.49beee8a0cced4df9438e2a9bb52e78d.js"></script>
vendor: 1 bytes, line 6590
6590
6591<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.user.modal.wall.2c4de5639d82c1a355192e6b6164f231.js"></script>
vendor: 1 bytes, line 6591
6591
6592<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.denied.5.0.05ba7eb954dfb869e57aca2e4d3f4ec9.js"></script>
vendor: 1 bytes, line 6592
6592
6593<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/plugins/resources/scripts/jquery.validate.f4d73313b7ce7a32500a94c38e2d2ca2.js"></script>
vendor: 1 bytes, line 6593
6593
6594<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/plugins/resources/scripts/additional-methods.54cac72c4ecc4fe6191818374fa8d218.js"></script>
vendor: 1 bytes, line 6594
6594
6595<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/plugins/resources/scripts/jquery.validate.custom-methods.77562065896d6b48f0405363b8758736.js"></script>
vendor: 1 bytes, line 6595
6595
6596<script>/*<![CDATA[*/ 6597 document.getElementById('user-password-toggle').addEventListener('click', function() { 6598 var passInput = document.getElementById('user-password'), 6599 passToggle = document.getElementById('user-password-toggle'), 6600 passIcon = passToggle.getElementsByClassName('tnt-svg')[0]; 6601 if (passInput.type === 'password') { 6602 passInput.type = 'text'; 6603 passIcon.classList.replace('tnt-eye', 'tnt-eye-slash'); 6604 } else { 6605 passInput.type = 'password'; 6606 passIcon.classList.replace('tnt-eye-slash', 'tnt-eye'); 6607 } 6608 }); /*]]>*/</script>
vendor: 1 bytes, line 6608
6608
6609<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.payment.4dc6d7241d3b6d5b678a40ded47c855a.js"></script>
vendor: 1 bytes, line 6609
6609
6610<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.payment.wallet.66a8a34f1641881439e21da604056e9b.js"></script>
vendor: 1 bytes, line 6610
6610
6611<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.payment.paypal.02877f1ee06ab25cd4669e9a49ecc6f9.js"></script>
vendor: 1 bytes, line 6611
6611
6612<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.log.gtm.37085f9822fb12feb0326ec09cd5a1a0.js"></script>
vendor: 1 bytes, line 6612
6612
6613<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.log.legacy.8de26295ce9ca025da0008f10ecacd2d.js"></script>
vendor: 1 bytes, line 6613
6613
6614<script>/*<![CDATA[*/ 6615 let userFirstName = ''; 6616 let userLastName = ''; 6617 if (TNCMS.User.isLoggedIn()) 6618 { 6619 try 6620 { 6621 userLastName= TNCMS.User.getLastName() || ''; 6622 userFirstName = TNCMS.User.getFirstName() || ''; 6623 document.getElementById('field-purchaser-firstname-super-purchase').setAttribute('value', userFirstName); 6624 document.getElementById('field-purchaser-lastname-super-purchase').setAttribute('value', userLastName); 6625 document.getElementById('field-purchaser-name-super-purchase').setAttribute('value', userFirstName + ' ' + userLastName); 6626 } 6627 catch(err){} 6628 } /*]]>*/</script>
vendor: 1 bytes, line 6628
6628
6629<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.output.subscription.c45ca3f1403477be0258909cff76ed45.js"></script>
vendor: 1 bytes, line 6629
6629
6630<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.output.laterpay.7a6e72d83c11470ac72ce2b2f5d9fdbd.js"></script>
vendor: 1 bytes, line 6630
6630
6631<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/subscription/resources/scripts/tnt.access.output.customjs.1480f2a51e2939dd767e130e3406e489.js"></script>
vendor: 1 bytes, line 6631
6631
6632<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/template/resources/scripts/asset-edit.60e8e67e04be1194326dcfbe7f00b8c3.js"></script>
vendor: 1 bytes, line 6632
6632
6633<script>/*<![CDATA[*/ 6634 document.querySelector('.mobile-menu-close').addEventListener('click',function(e){ 6635 e.preventDefault(); 6636 e.stopPropagation(); 6637 document.documentElement.classList.remove('drawer-open', 'active-left', 'active-right'); 6638 }) 6639 /*]]>*/</script>
vendor: 1 bytes, line 6639
6639
6640<script>/*<![CDATA[*/ 6641 (function(d) { 6642 const loginUserButton = d.querySelector("#userStateButton"); 6643 const userLogoutForm = d.querySelector("#user-mobile-logout-form"); 6644 const userLoginForm = d.querySelector("#user-mobile-login-form"); 6645 const remoteSite = false; 6646 d.addEventListener('DOMContentLoaded',function(){ 6647 if (TNCMS.User.isLoggedIn()) 6648 { 6649 loginUserButton.dataset.status='logout'; 6650 loginUserButton.innerHTML = "Log Out"; 6651 } 6652 }) 6653 loginUserButton.addEventListener('click', function () { 6654 if(loginUserButton.dataset.status=='login') 6655 { 6656 if (remoteSite) 6657 { 6658 userLoginForm.submit(); 6659 } else { 6660 window.location.href="/users/login/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html"; 6661 } 6662 } else { 6663 userLogoutForm.submit(); 6664 } 6665 }); 6666 })(document); 6667 /*]]>*/</script>
vendor: 1 bytes, line 6667
6667
6668<script>/*<![CDATA[*/ 6669 (function(d) { 6670 6671 var form = d.getElementById('site-search-3699114'), 6672 query_input = d.getElementById('site-search-3699114-term'), 6673 is_open = false; 6674 let searchCancel = d.getElementById("search-cancel-3699114"); 6675 let searchDiv = d.getElementById("site-search-form-3699114"); 6676 let controlsDiv = d.getElementById("user-controls-3699114"); 6677 searchCancel.addEventListener('click', function () { 6678 query_input.value="" 6679 }); 6680 6681 /** Submit handler */ 6682 form.onsubmit = function(){ 6683 // Filter query 6684 var elem = document.querySelector("#site-search-3699114 input[name=q]"), 6685 sQueryFiltered = elem.value.replace(/\?/g, ''); 6686 elem.value = sQueryFiltered; 6687 6688 // No submit if empty input 6689 if( query_input.val() ){ 6690 return true; 6691 } else{ 6692 return false; 6693 } 6694 }; 6695 })(document); 6696 6697 /*]]>*/</script>
vendor: 1 bytes, line 6697
6697
6698<script>/*<![CDATA[*/ 6699 (function(){ 6700 let currentUserType = 'anonymous'; 6701 if (__tnt.user.loggedIn && __tnt.user.services!='0' && __tnt.user.services !== undefined) 6702 { 6703 currentUserType = 'subscriber'; 6704 } else if (__tnt.user.loggedIn) 6705 { 6706 currentUserType = 'registered'; 6707 } 6708 6709 try { 6710 const selectedPromo = document.querySelector("#user-promo-2841699.user-promo ."+currentUserType); 6711 selectedPromo.classList.remove("hidden"); 6712 } catch(err){} 6713 })(); 6714 6715 /*]]>*/</script>
vendor: 1 bytes, line 6715
6715
6716<script>/*<![CDATA[*/ 6717 const userControlPanelMain2841699=document.querySelector("#user-control-panel-2841699"); 6718 const userControlPanelButton2841699=document.querySelector("#userControlPanel-2841699"); 6719 const userPanelIndicator2841699=userControlPanelButton2841699.querySelector(".userPanelIndicator"); 6720 const userControlPanel2841699=userControlPanelMain2841699.querySelector(".user-controls-menu"); 6721 const userNameContainer2841699=userControlPanelMain2841699.querySelector(".userName"); 6722 const debugReg2841699 = false; 6723 const debugSub2841699 = false; 6724 6725 document.addEventListener("DOMContentLoaded", handleUserLogin2841699('domloaded')); 6726 /* add an event listener for tnt-user-status */ 6727 document.addEventListener("tnt-user-status", handleUserLogin2841699('userstatus')); 6728 function handleUserLogout2841699() 6729 { 6730 //window.sessionStorage.removeItem('tncms-newsletter-email',''); 6731 window.sessionStorage.removeItem('bd-viafoura-oidc'); // clear viafoura JWT token 6732 document.getElementById('user-local-logout-form-2841699').submit(); 6733 return false; 6734 } 6735 function setAccountEmail() { 6736 const userControlUserEmail2841699 = 6737 userControlPanelMain2841699.querySelector( 6738 "#user-email-2841699" 6739 ); 6740 6741 if (!userControlUserEmail2841699) { 6742 return; 6743 } 6744 6745 if (TNCMS.User.isLoggedIn() && TNCMS.User.getEmail()) { 6746 userControlUserEmail2841699.style.display = 'block'; 6747 userControlUserEmail2841699.textContent = TNCMS.User.getEmail(); 6748 } else { 6749 userControlUserEmail2841699.style.display = 'none'; 6750 userControlUserEmail2841699.textContent = ''; 6751 } 6752 } 6753 function handleUserLogin2841699(caller) 6754 { 6755 //console.log("Called from "+caller); 6756 // Modify dropdown menu button if user is logged in 6757 if (TNCMS.User.isLoggedIn() || debugReg2841699 || debugSub2841699) { 6758 // check to see if we've already handled this, which might be the case if this is being fired from the user subscription wall 6759 if(userControlPanelButton2841699.dataset.user!="loggedin") 6760 { 6761 let userFirstName = "Guest"; 6762 6763 try{ 6764 userFirstName = TNCMS.User.getFirstName(); 6765 } catch(err){ 6766 userFirstName = TNCMS.User.getScreenName(); 6767 if (userFirstName.includes('jid-')) 6768 { 6769 //we have a janrain user screenname, do nothing 6770 userFirstName = "Reader"; 6771 } else { 6772 //we can try splitting on hyphen and taking first segment 6773 let userNameParts = userFirstName.split("-"); 6774 if(userNameParts.length > 2) 6775 { 6776 userFirstName = userNameParts[0]; 6777 } 6778 } 6779 } 6780 if(debugReg2841699 || debugSub2841699) 6781 { 6782 userFirstName = "Debug User"; 6783 } 6784 userControlPanelButton2841699.classList.remove("loggedout"); 6785 userControlPanelButton2841699.classList.add("loggedin"); 6786 userControlPanelButton2841699.dataset.user="loggedin"; 6787 6788 userNameContainer2841699.innerHTML = userFirstName; 6789 const userIcon2841699 = userControlPanelButton2841699.querySelector('.userIconSpan'); 6790 userIcon2841699.classList.remove('icon-guest'); 6791 userIcon2841699.classList.add('icon-signed-in'); 6792 userControlPanelButton2841699.addEventListener('click', function(evt){ 6793 const target = userControlPanelButton2841699; 6794 const userPanelIndicatorToggle2841699=userControlPanelButton2841699.querySelector(".userPanelIndicator"); 6795 if(target.dataset.status=="open") 6796 { 6797 target.dataset.status="closed"; 6798 userControlPanel2841699.classList.remove("open"); 6799 userControlPanel2841699.classList.add("closed"); 6800 userPanelIndicatorToggle2841699.classList.remove("tnt-chevron-up"); 6801 userPanelIndicatorToggle2841699.classList.add("tnt-chevron-down"); 6802 } else { 6803 target.dataset.status="open"; 6804 userControlPanel2841699.classList.remove("closed"); 6805 userControlPanel2841699.classList.add("open"); 6806 userPanelIndicatorToggle2841699.classList.remove("tnt-chevron-down"); 6807 userPanelIndicatorToggle2841699.classList.add("tnt-chevron-up"); 6808 } 6809 6810 }); 6811 } 6812 if(caller === 'userstatus') {
6813 setAccountEmail(); 6814 } 6815 } else { 6816 userControlPanelButton2841699.addEventListener('click', function(){ 6817 6818 window.location = 'https://www.thestar.com/users/login/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html'; 6819 6820 }); 6821 } 6822 } 6823 /*]]>*/</script>
vendor: 1 bytes, line 6823
6823
6824<script>/*<![CDATA[*/ 6825 document.addEventListener('DOMContentLoaded',function() { 6826 const isUserSubscriber = (TNCMS.User.hasFullAccess() && __tnt.user.services) || TNCMS.User.isAdmin(); 6827 6828 const showArchivesToSubscribers = () => { 6829 const archiveMenuItemEl = document.getElementById('archives-2841699'); 6830 let bShowArchivesItemByDomain = true; 6831 6832 6833 if (!archiveMenuItemEl) { 6834 return; 6835 } 6836 6837 if(isUserSubscriber && bShowArchivesItemByDomain) { 6838 archiveMenuItemEl.style.display = 'block'; 6839 } else { 6840 archiveMenuItemEl.style.display = 'none'; 6841 } 6842 }; 6843 6844 const showPerksToSubscribers = () => { 6845 const perksMenuItemEl = document.getElementById('sub-perks-2841699'); 6846 6847 if(isUserSubscriber && perksMenuItemEl) { 6848 perksMenuItemEl.style.display = 'block'; 6849 } 6850 }; 6851 6852 try { 6853 showArchivesToSubscribers(); 6854 showPerksToSubscribers(); 6855 } catch(e) { 6856 console.log('inlineMenuItemLinkScript Error: ', e); 6857 } 6858 }); 6859 /*]]>*/</script>
vendor: 1 bytes, line 6859
6859
6860<script>/*<![CDATA[*/ 6861 (function(d) { 6862 6863 var form = d.getElementById('site-search-header'), 6864 query_input = d.getElementById('site-search-2841699-term'), 6865 is_open = false; 6866 let searchToggle = d.getElementById("search-toggle-2841699"); 6867 let searchCancel = d.getElementById("search-cancel-2841699"); 6868 let searchDiv = d.getElementById("site-search-form-2841699"); 6869 let controlsDiv = d.getElementById("user-controls-2841699"); 6870 searchToggle.addEventListener('click', function () { 6871 controlsDiv.style.display="none"; 6872 searchDiv.style.display="flex"; 6873 query_input.focus(); 6874 is_open = true; 6875 }); 6876 searchCancel.addEventListener('click', function () { 6877 searchDiv.style.display="none"; 6878 controlsDiv.style.display="flex"; 6879 is_open = false; 6880 }); 6881 6882 /** Submit handler */ 6883 form.onsubmit = function(){ 6884 // Filter query 6885 var elem = document.querySelector("#site-search-2841699 input[name=q]"), 6886 sQueryFiltered = elem.value.replace(/\?/g, ''); 6887 elem.value = sQueryFiltered; 6888 6889 // No submit if empty input 6890 if( query_input.val() ){ 6891 return true; 6892 } else{ 6893 return false; 6894 } 6895 }; 6896 })(document); 6897 6898 /*]]>*/</script>
vendor: 1 bytes, line 6898
6898
6899<script>/*<![CDATA[*/ 6900 (function(){ 6901 let currentUserType = 'anonymous'; 6902 if (__tnt.user.loggedIn && __tnt.user.services!='0' && __tnt.user.services !== undefined) 6903 { 6904 currentUserType = 'subscriber'; 6905 } else if (__tnt.user.loggedIn) 6906 { 6907 currentUserType = 'registered'; 6908 } 6909 6910 try { 6911 const selectedPromo = document.querySelector("#user-promo-2841705.user-promo ."+currentUserType); 6912 selectedPromo.classList.remove("hidden"); 6913 } catch(err){} 6914 })(); 6915 6916 /*]]>*/</script>
vendor: 1 bytes, line 6916
6916
6917<script>/*<![CDATA[*/ 6918 const userControlPanelMain2841705=document.querySelector("#user-control-panel-2841705"); 6919 const userControlPanelButton2841705=document.querySelector("#userControlPanel-2841705"); 6920 const userPanelIndicator2841705=userControlPanelButton2841705.querySelector(".userPanelIndicator"); 6921 const userControlPanel2841705=userControlPanelMain2841705.querySelector(".user-controls-menu"); 6922 const userNameContainer2841705=userControlPanelMain2841705.querySelector(".userName"); 6923 const debugReg2841705 = false; 6924 const debugSub2841705 = false; 6925 6926 document.addEventListener("DOMContentLoaded", handleUserLogin2841705('domloaded')); 6927 /* add an event listener for tnt-user-status */ 6928 document.addEventListener("tnt-user-status", handleUserLogin2841705('userstatus')); 6929 function handleUserLogout2841705() 6930 { 6931 //window.sessionStorage.removeItem('tncms-newsletter-email',''); 6932 window.sessionStorage.removeItem('bd-viafoura-oidc'); // clear viafoura JWT token 6933 document.getElementById('user-local-logout-form-2841705').submit(); 6934 return false; 6935 } 6936 function setAccountEmail() { 6937 const userControlUserEmail2841705 = 6938 userControlPanelMain2841705.querySelector( 6939 "#user-email-2841705" 6940 ); 6941 6942 if (!userControlUserEmail2841705) { 6943 return; 6944 } 6945 6946 if (TNCMS.User.isLoggedIn() && TNCMS.User.getEmail()) { 6947 userControlUserEmail2841705.style.display = 'block'; 6948 userControlUserEmail2841705.textContent = TNCMS.User.getEmail(); 6949 } else { 6950 userControlUserEmail2841705.style.display = 'none'; 6951 userControlUserEmail2841705.textContent = ''; 6952 } 6953 } 6954 function handleUserLogin2841705(caller) 6955 { 6956 //console.log("Called from "+caller); 6957 // Modify dropdown menu button if user is logged in 6958 if (TNCMS.User.isLoggedIn() || debugReg2841705 || debugSub2841705) { 6959 // check to see if we've already handled this, which might be the case if this is being fired from the user subscription wall 6960 if(userControlPanelButton2841705.dataset.user!="loggedin") 6961 { 6962 let userFirstName = "Guest"; 6963 6964 try{ 6965 userFirstName = TNCMS.User.getFirstName(); 6966 } catch(err){ 6967 userFirstName = TNCMS.User.getScreenName(); 6968 if (userFirstName.includes('jid-')) 6969 { 6970 //we have a janrain user screenname, do nothing 6971 userFirstName = "Reader"; 6972 } else { 6973 //we can try splitting on hyphen and taking first segment 6974 let userNameParts = userFirstName.split("-"); 6975 if(userNameParts.length > 2) 6976 { 6977 userFirstName = userNameParts[0]; 6978 } 6979 } 6980 } 6981 if(debugReg2841705 || debugSub2841705) 6982 { 6983 userFirstName = "Debug User"; 6984 } 6985 userControlPanelButton2841705.classList.remove("loggedout"); 6986 userControlPanelButton2841705.classList.add("loggedin"); 6987 userControlPanelButton2841705.dataset.user="loggedin"; 6988 6989 userNameContainer2841705.innerHTML = userFirstName; 6990 const userIcon2841705 = userControlPanelButton2841705.querySelector('.userIconSpan'); 6991 userIcon2841705.classList.remove('icon-guest'); 6992 userIcon2841705.classList.add('icon-signed-in'); 6993 userControlPanelButton2841705.addEventListener('click', function(evt){ 6994 const target = userControlPanelButton2841705; 6995 const userPanelIndicatorToggle2841705=userControlPanelButton2841705.querySelector(".userPanelIndicator"); 6996 if(target.dataset.status=="open") 6997 { 6998 target.dataset.status="closed"; 6999 userControlPanel2841705.classList.remove("open"); 7000 userControlPanel2841705.classList.add("closed"); 7001 userPanelIndicatorToggle2841705.classList.remove("tnt-chevron-up"); 7002 userPanelIndicatorToggle2841705.classList.add("tnt-chevron-down"); 7003 } else { 7004 target.dataset.status="open"; 7005 userControlPanel2841705.classList.remove("closed"); 7006 userControlPanel2841705.classList.add("open"); 7007 userPanelIndicatorToggle2841705.classList.remove("tnt-chevron-down"); 7008 userPanelIndicatorToggle2841705.classList.add("tnt-chevron-up"); 7009 } 7010 7011 }); 7012 } 7013 if(caller === 'userstatus') {
7014 setAccountEmail(); 7015 } 7016 } else { 7017 userControlPanelButton2841705.addEventListener('click', function(){ 7018 7019 window.location = 'https://www.thestar.com/users/login/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html'; 7020 7021 }); 7022 } 7023 } 7024 /*]]>*/</script>
vendor: 1 bytes, line 7024
7024
7025<script>/*<![CDATA[*/ 7026 document.addEventListener('DOMContentLoaded',function() { 7027 const isUserSubscriber = (TNCMS.User.hasFullAccess() && __tnt.user.services) || TNCMS.User.isAdmin(); 7028 7029 const showArchivesToSubscribers = () => { 7030 const archiveMenuItemEl = document.getElementById('archives-2841705'); 7031 let bShowArchivesItemByDomain = true; 7032 7033 7034 if (!archiveMenuItemEl) { 7035 return; 7036 } 7037 7038 if(isUserSubscriber && bShowArchivesItemByDomain) { 7039 archiveMenuItemEl.style.display = 'block'; 7040 } else { 7041 archiveMenuItemEl.style.display = 'none'; 7042 } 7043 }; 7044 7045 const showPerksToSubscribers = () => { 7046 const perksMenuItemEl = document.getElementById('sub-perks-2841705'); 7047 7048 if(isUserSubscriber && perksMenuItemEl) { 7049 perksMenuItemEl.style.display = 'block'; 7050 } 7051 }; 7052 7053 try { 7054 showArchivesToSubscribers(); 7055 showPerksToSubscribers(); 7056 } catch(e) { 7057 console.log('inlineMenuItemLinkScript Error: ', e); 7058 } 7059 }); 7060 /*]]>*/</script>
vendor: 1 bytes, line 7060
7060
7061<script>/*<![CDATA[*/ 7062(function(w, d) { 7063 let userServices = __tnt.user.services; 7064 let userStatus = __tnt.user.loggedIn; 7065 if(userServices == null){ 7066 userServices = 0; 7067 }let allowedServicesTier1 = Array(); 7068 let excludedServicesTier1 = Array(); 7069 7070 7071 let excludedServicesTierString1 = "12859,12841,12847,12850,13396,12856,12865,12844,12730,13072,12868,12871,12874"; 7072 excludedServicesTier1 = excludedServicesTierString1.split(","); 7073 const allowedLinkTier1 = "https://www.thestar.com/tncms/auth/federated/?return=https://torontostar.pressreader.com/"; 7074 const deniedLinkTier1 = "/subscribe/epaper/"; 7075 7076 7077 7078 const allowedServicesTier2 = Array(); 7079 const allowedLinkTier2 = "/subscribe/epaper/"; 7080 7081 7082 let newLink = ""; 7083 /* For testing only */ 7084 7085 7086 7087 if (userStatus && userServices!="0") 7088 { 7089 let accessGranted = false; 7090 let userServicesList = userServices.split(","); 7091 userServicesList.forEach((uService) => { 7092 7093 if (allowedServicesTier1.length > 0) 7094 { 7095 if(allowedServicesTier1.includes(uService)) 7096 { 7097 7098 accessGranted = true; 7099 newLink = allowedLinkTier1; 7100 } 7101 } 7102 else if (excludedServicesTier1.length > 0) 7103 { 7104 accessGranted = true; 7105 newLink = allowedLinkTier1; 7106 if(excludedServicesTier1.includes(uService)) 7107 { 7108 7109 accessGranted = false; 7110 newLink = deniedLinkTier1; 7111 } 7112 } 7113 7114 if(allowedServicesTier2.includes(uService)) 7115 { 7116 7117 accessGranted = true; 7118 newLink = allowedLinkTier2; 7119 } 7120 }); 7121 /* only making this call if the user is at least logged in and has something other than 0 for services */ 7122 if (accessGranted) 7123 { 7124 7125 updateEditionLinks3118246(newLink); 7126 } else { 7127 /* we have someone logged in, but they don't have access, so we'll just update the link to the other one.*/ 7128 7129 7130 if (allowedServicesTier1.length === 0 && excludedServicesTier1.length > 0) { 7131 updateEditionLinks3118246(newLink); 7132 } 7133 else 7134 { 7135 7136 updateEditionLinks3118246("/subscribe/epaper/"); 7137 7138 } 7139 } 7140 } else if (userStatus) { 7141 /* we have someone logged in, but they don't have access, so we'll just update the link to the other one.*/ 7142 7143 7144 updateEditionLinks3118246("/subscribe/epaper/"); 7145 7146 } else { 7147 7148 7149 updateEditionLinks3118246("/subscribe/epaper/"); 7150 7151 } 7152 7153 7154 function updateEditionLinks3118246(newLink) 7155 { 7156 7157 let oSelectors = []; 7158 7159 oSelectors.push(".tnt-section-i-class-fas-tnt-file-alt-i-today-s-paper"); 7160 7161 oSelectors.push(".epaper"); 7162 7163 7164 for (let i=0;i<oSelectors.length;i++) { 7165 let eLinks = document.querySelectorAll(oSelectors[i]); 7166 Array.prototype.forEach.call(eLinks, function(el) { 7167 7168 el.href=newLink; 7169 }); 7170 } 7171 } 7172})(window, document); 7173 /*]]>*/</script>
vendor: 1 bytes, line 7173
7173
7174<script>/*<![CDATA[*/ 7175 (function(){ 7176 let currentUserType = 'anonymous'; 7177 if (__tnt.user.loggedIn && __tnt.user.services!='0' && __tnt.user.services !== undefined) 7178 { 7179 currentUserType = 'subscriber'; 7180 } else if (__tnt.user.loggedIn) 7181 { 7182 currentUserType = 'registered'; 7183 } 7184 7185 try { 7186 const selectedPromo = document.querySelector("#user-promo-2841702.user-promo ."+currentUserType); 7187 selectedPromo.classList.remove("hidden"); 7188 } catch(err){} 7189 })(); 7190 7191 /*]]>*/</script>
vendor: 1 bytes, line 7191
7191
7192<script>/*<![CDATA[*/ 7193 const userControlPanelMain2841702=document.querySelector("#user-control-panel-2841702"); 7194 const userControlPanelButton2841702=document.querySelector("#userControlPanel-2841702"); 7195 const userPanelIndicator2841702=userControlPanelButton2841702.querySelector(".userPanelIndicator"); 7196 const userControlPanel2841702=userControlPanelMain2841702.querySelector(".user-controls-menu"); 7197 const userNameContainer2841702=userControlPanelMain2841702.querySelector(".userName"); 7198 const debugReg2841702 = false; 7199 const debugSub2841702 = false; 7200 7201 document.addEventListener("DOMContentLoaded", handleUserLogin2841702('domloaded')); 7202 /* add an event listener for tnt-user-status */ 7203 document.addEventListener("tnt-user-status", handleUserLogin2841702('userstatus')); 7204 function handleUserLogout2841702() 7205 { 7206 //window.sessionStorage.removeItem('tncms-newsletter-email',''); 7207 window.sessionStorage.removeItem('bd-viafoura-oidc'); // clear viafoura JWT token 7208 document.getElementById('user-local-logout-form-2841702').submit(); 7209 return false; 7210 } 7211 function setAccountEmail() { 7212 const userControlUserEmail2841702 = 7213 userControlPanelMain2841702.querySelector( 7214 "#user-email-2841702" 7215 ); 7216 7217 if (!userControlUserEmail2841702) { 7218 return; 7219 } 7220 7221 if (TNCMS.User.isLoggedIn() && TNCMS.User.getEmail()) { 7222 userControlUserEmail2841702.style.display = 'block'; 7223 userControlUserEmail2841702.textContent = TNCMS.User.getEmail(); 7224 } else { 7225 userControlUserEmail2841702.style.display = 'none'; 7226 userControlUserEmail2841702.textContent = ''; 7227 } 7228 } 7229 function handleUserLogin2841702(caller) 7230 { 7231 //console.log("Called from "+caller); 7232 // Modify dropdown menu button if user is logged in 7233 if (TNCMS.User.isLoggedIn() || debugReg2841702 || debugSub2841702) { 7234 // check to see if we've already handled this, which might be the case if this is being fired from the user subscription wall 7235 if(userControlPanelButton2841702.dataset.user!="loggedin") 7236 { 7237 let userFirstName = "Guest"; 7238 7239 try{ 7240 userFirstName = TNCMS.User.getFirstName(); 7241 } catch(err){ 7242 userFirstName = TNCMS.User.getScreenName(); 7243 if (userFirstName.includes('jid-')) 7244 { 7245 //we have a janrain user screenname, do nothing 7246 userFirstName = "Reader"; 7247 } else { 7248 //we can try splitting on hyphen and taking first segment 7249 let userNameParts = userFirstName.split("-"); 7250 if(userNameParts.length > 2) 7251 { 7252 userFirstName = userNameParts[0]; 7253 } 7254 } 7255 } 7256 if(debugReg2841702 || debugSub2841702) 7257 { 7258 userFirstName = "Debug User"; 7259 } 7260 userControlPanelButton2841702.classList.remove("loggedout"); 7261 userControlPanelButton2841702.classList.add("loggedin"); 7262 userControlPanelButton2841702.dataset.user="loggedin"; 7263 7264 userNameContainer2841702.innerHTML = userFirstName; 7265 const userIcon2841702 = userControlPanelButton2841702.querySelector('.userIconSpan'); 7266 userIcon2841702.classList.remove('icon-guest'); 7267 userIcon2841702.classList.add('icon-signed-in'); 7268 userControlPanelButton2841702.addEventListener('click', function(evt){ 7269 const target = userControlPanelButton2841702; 7270 const userPanelIndicatorToggle2841702=userControlPanelButton2841702.querySelector(".userPanelIndicator"); 7271 if(target.dataset.status=="open") 7272 { 7273 target.dataset.status="closed"; 7274 userControlPanel2841702.classList.remove("open"); 7275 userControlPanel2841702.classList.add("closed"); 7276 userPanelIndicatorToggle2841702.classList.remove("tnt-chevron-up"); 7277 userPanelIndicatorToggle2841702.classList.add("tnt-chevron-down"); 7278 } else { 7279 target.dataset.status="open"; 7280 userControlPanel2841702.classList.remove("closed"); 7281 userControlPanel2841702.classList.add("open"); 7282 userPanelIndicatorToggle2841702.classList.remove("tnt-chevron-down"); 7283 userPanelIndicatorToggle2841702.classList.add("tnt-chevron-up"); 7284 } 7285 7286 }); 7287 } 7288 if(caller === 'userstatus') {
7289 setAccountEmail(); 7290 } 7291 } else { 7292 userControlPanelButton2841702.addEventListener('click', function(){ 7293 7294 window.location = 'https://www.thestar.com/users/login/?referer_url=https%3A%2F%2Fwww.thestar.com%2Finteractives%2Fcanadian-federal-politics-election-forecast%2Farticle_1337f598-2b2e-4b63-b5ee-0e923c663892.html'; 7295 7296 }); 7297 } 7298 } 7299 /*]]>*/</script>
vendor: 1 bytes, line 7299
7299
7300<script>/*<![CDATA[*/ 7301 document.addEventListener('DOMContentLoaded',function() { 7302 const isUserSubscriber = (TNCMS.User.hasFullAccess() && __tnt.user.services) || TNCMS.User.isAdmin(); 7303 7304 const showArchivesToSubscribers = () => { 7305 const archiveMenuItemEl = document.getElementById('archives-2841702'); 7306 let bShowArchivesItemByDomain = true; 7307 7308 7309 if (!archiveMenuItemEl) { 7310 return; 7311 } 7312 7313 if(isUserSubscriber && bShowArchivesItemByDomain) { 7314 archiveMenuItemEl.style.display = 'block'; 7315 } else { 7316 archiveMenuItemEl.style.display = 'none'; 7317 } 7318 }; 7319 7320 const showPerksToSubscribers = () => { 7321 const perksMenuItemEl = document.getElementById('sub-perks-2841702'); 7322 7323 if(isUserSubscriber && perksMenuItemEl) { 7324 perksMenuItemEl.style.display = 'block'; 7325 } 7326 }; 7327 7328 try { 7329 showArchivesToSubscribers(); 7330 showPerksToSubscribers(); 7331 } catch(e) { 7332 console.log('inlineMenuItemLinkScript Error: ', e); 7333 } 7334 }); 7335 /*]]>*/</script>
vendor: 1 bytes, line 7335
7335
7336<script>/*<![CDATA[*/ 7337 function getAbsoluteHeight(el) { 7338 var styles = window.getComputedStyle(el); 7339 var margin = parseFloat(styles['marginTop']) + 7340 parseFloat(styles['marginBottom']); 7341 7342 return Math.ceil(el.offsetHeight + margin); 7343 } 7344 var isMobile = __tnt.client.platform.android || __tnt.client.platform.iphone || __tnt.client.platform.ios; 7345 7346 !function(t,i,n){var e,a,s,o,c,d={init:function(){a=i.getElementById("site-navbar-container"),isMobile?a.classList.add("affix-sticky"):(e=i.getElementById("main-body-container"),s=getAbsoluteHeight(a),o=!1,c=0,t.addEventListener("scroll",d.navPosition,!1),t.addEventListener("mousewheel",d.navPosition,!1))},navPosition:function(){o||(o=!0,setTimeout(function(){var n=a.getBoundingClientRect(),d=t.pageYOffset||i.documentElement.scrollTop,f=n.top+d;d>=f&&d>c?a.classList.contains("affix")||(c=f,a.classList.add("affix"),a.classList.remove("affix-top"),e.style.marginTop=s+"px"):a.classList.contains("affix-top")||(a.classList.remove("affix"),a.classList.add("affix-top"),e.style.marginTop="0px"),o=!1},25))}};"loading"==i.readyState?i.addEventListener("DOMContentLoaded",d.init,!1):d.init()}(window,document,__tnt); 7347 document.addEventListener('DOMContentLoaded', function() { 7348 var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 7349 7350 if (isIOS) { 7351 Array.from(document.querySelectorAll('[data-toggle="offcanvas"]')).forEach(function(drawer) { 7352 drawer.addEventListener("mouseover", function(e) { 7353 var drawerCls = drawer.dataset.target === 'left' ? 'active-left' : 'active-right'; 7354 document.documentElement.classList.add('drawer-open', drawerCls); 7355 }) 7356 }) 7357 } 7358 }); /*]]>*/</script>
vendor: 1 bytes, line 7358
7358
7359<script>/*<![CDATA[*/ window.document.addEventListener('TownnewsSegmentLoaded', function(oEvent) { 7360 try { 7361 if(oEvent.detail && oEvent.detail.user_id && window.localStorage) { 7362 window.localStorage.setItem('_us_master_id', oEvent.detail.user_id); 7363 __tnt.log('UserStitch ID: ' + oEvent.detail.user_id); 7364 } 7365 } catch(oError){ 7366 console.log(oError); 7367 } 7368 }); /*]]>*/</script>
vendor: 1 bytes, line 7368
7368
7369<script>/*<![CDATA[*/ document.addEventListener("DOMContentLoaded", __tnt.deprecatedCheck, false); /*]]>*/</script>
vendor: 1 bytes, line 7369
7369
7370<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/ads/resources/scripts/tnt.ads.core.9d39a5cf1d944aca793cec64b465c450.js"></script>
vendor: 1 bytes, line 7370
7370
7371<script src="https://bloximages.chicago2.vip.townnews.com/thestar.com/shared-content/art/tncms/templates/libraries/flex/components/template/resources/scripts/tnt.regions.e7df22f20c42105cce5864da9e346f48.js"></script>
vendor: 1 bytes, line 7371
7371
7372<script>/*<![CDATA[*/ __tnt.regions.stickyAnchor.init(); /*]]>*/</script>
vendor: 1 bytes, line 7372
7372
7373<script src="//cdn.viafoura.net/entry/index.js"></script>
7373</body> 7374</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.