{"id":1616,"date":"2025-05-29T17:48:32","date_gmt":"2025-05-29T17:48:32","guid":{"rendered":"https:\/\/qce.quantum.ieee.org\/2026\/?page_id=1616"},"modified":"2026-07-07T18:28:13","modified_gmt":"2026-07-07T18:28:13","slug":"paper-schedule","status":"publish","type":"page","link":"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/","title":{"rendered":"Schedule &#8211; Papers"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1616\" class=\"elementor elementor-1616\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-9769e57 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9769e57\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2398b19\" data-id=\"2398b19\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cfedfaf elementor-widget elementor-widget-breadcrumbs\" data-id=\"cfedfaf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"breadcrumbs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p id=\"breadcrumbs\"><span><span><a href=\"https:\/\/qce.quantum.ieee.org\/2026\/\">Home<\/a><\/span><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ccb274 elementor-widget elementor-widget-heading\" data-id=\"4ccb274\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Program 2026 - Technical Papers<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-65d7ea4 e-flex e-con-boxed e-con e-parent\" data-id=\"65d7ea4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-176e75e elementor-widget elementor-widget-shortcode\" data-id=\"176e75e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"container\" data-elementor-id=\"2012\" class=\"elementor elementor-2012\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-1f354b9f e-flex e-con-boxed e-con e-parent\" data-id=\"1f354b9f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-ad4c2ac e-con-full e-flex e-con e-child\" data-id=\"ad4c2ac\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-890f644 elementor-widget elementor-widget-text-editor\" data-id=\"890f644\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5 style=\"text-align: center\">As we confirm sessions for IEEE Quantum Week, this schedule will reflect the most current information.<\/h5><h5 style=\"text-align: center\">Note that details are subject to change, so be sure to check back.<\/h5>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-457984f5 e-grid e-con-full e-con e-child\" data-id=\"457984f5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42844243 elementor-widget elementor-widget-text-editor\" data-id=\"42844243\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center\">Filter by Day: \u00a0\u00a0<a href=\"\/2026\/program\/qce26-schedule\/\"><strong>All Days<\/strong><\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/sunday-schedule\/\"><strong>Sunday<\/strong><\/a> | <a href=\"\/2026\/program\/monday-schedule\/\"><strong>Monday<\/strong><\/a> | <a href=\"\/2026\/program\/tuesday-schedule\/\"><strong>Tuesday<\/strong><\/a> | <a href=\"\/2026\/program\/wednesday-schedule\/\"><strong>Wednesday<\/strong><\/a> | <a href=\"\/2026\/program\/thursday-schedule\/\"><strong>Thursday<\/strong><\/a> | <a href=\"\/2026\/program\/friday-schedule\/\"><strong>Friday<\/strong><\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19081451 elementor-widget elementor-widget-text-editor\" data-id=\"19081451\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center\">Filter by Track: \u00a0 <strong><a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/keynote-schedule\/\">Keynotes<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/paper-schedule\/\">Papers<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/tutorial-schedule\/\">Tutorials<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/workshop-schedule\/\">Workshops<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/panel-schedule\/\">Panels<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/poster-schedule\/\">Posters<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/bof-schedule\/\">BoFs<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qseec-schedule\/\">QSEEC<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qet-schedule\/\">Exhibit Theater<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/special-schedule\/\">Special Sessions<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/awards-schedule\/\">Awards<\/a><\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-60abaad6 elementor-widget elementor-widget-text-editor\" data-id=\"60abaad6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center\">Filter by Topic:\u00a0 <strong><a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qalg-schedule\/\">QALG<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qapp-schedule\/\">QAPP<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qcapx-schedule\/\">QCAPX<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qcpr-schedule\/\">QCPR<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qdc-schedule\/\">QDC<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qec-schedule\/\">QEC<\/a> |\u00a0 <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qecs-schedule\/\">QECS<\/a> |\u00a0<a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qai-schedule\/\">QGenAI<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qgdd-schedule\/\">QGDD<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qhpc-schedule\/\">QHPC<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qml-schedule\/\">QML<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qnatsci-schedule\/\">QNATSCI<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qnet-schedule\/\">QNET<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qpho-schedule\/\">QPHO<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qpoly-schedule\/\">QPOLY<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qrest-schedule\/\">QREST<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qsec-schedule\/\">QSEC<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qseec-schedule\/\">QSEEC<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qsimu-schedule\/\">QSIMU<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qstart-schedule\/\">QSTART<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qswe-schedule\/\">QSWE<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qsys-schedule\/\">QSYS<\/a> | <a href=\"https:\/\/qce.quantum.ieee.org\/2026\/program\/qtem-schedule\/\">QTEM<\/a><\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-5336ca9 e-flex e-con-boxed e-con e-parent\" data-id=\"5336ca9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2671361 elementor-widget elementor-widget-shortcode\" data-id=\"2671361\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><style>\n  .rd-filter {\n    margin-bottom: 1em;\n  }\n\n  .rd-filter-header {\n    display: flex;\n    justify-content: space-between;\n  }\n\n  .rd-filter-title, .rd-filter-group-title {\n    font-weight: bold;\n  }\n\n  button#rd-filter-submit {\n    padding: 4px 10px;\n    color: white;\n    background-color: #5b114c;\n    border-radius: 8px;\n  }\n\n  button#rd-filter-clear {\n    padding: 4px 10px;\n    border: solid 1px #5b114c;\n    color: #5b114c;\n    background-color: white;\n    border-radius: 8px;\n  }\n\n  .rd-filter-group-tags {\n    display: flex;\n    flex-wrap: wrap;\n    margin: 0.5em 0;\n  }\n\n  .rd-filter-tag {\n    margin-right: 1.5em;\n  }\n\n  .tag-filter-checkbox {\n    display: inline-block;\n    margin-right: 0.5em;\n  }\n\n  div.rd-sessions ul.rd-sessions-list {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  div.rd-sessions li.rd-date-divider {\n    color: white;\n    font-weight: bold;\n    display: block;\n    padding: 0.5em;\n    background-color: #5b114c;\n    border-radius: 6px;\n  }\n\n  div.rd-sessions li.rd-session-item {\n    display: block;\n    margin: 24px 3px;\n    border: 1px solid #d7dfec;\n    padding: 1em 0.5em;\n    border-radius: 6px;\n    box-shadow: 0 1px 2px rgba(8, 27, 56, 0.3);\n  }\n\n    div.rd-sessions li.rd-session-item.rd-child-item {\n      margin: 18px 3px 18px 27px;\n    }\n\n    div.rd-sessions li.rd-session-item.rd-hide {\n      margin: 0;\n      padding: 0;\n    }\n\n  div.rd-sessions div.rd-session-date {\n    font-weight: bold;\n    font-size: 0.85em;\n    color: #ff7700;\n  }\n\n  div.rd-sessions div.rd-session-title {\n    font-weight: bold;\n    cursor: pointer;\n  }\n\n  div.rd-sessions div.rd-session-subheading {\n    font-weight: bold;\n    font-size: 1.11em;\n    margin: 12px 0 6px 0;\n  }\n\n  div.rd-sessions div.rd-session-detail,\n  div.rd-sessions div.rd-session-description,\n  div.rd-sessions div.rd-session-children,\n  div.rd-sessions div.rd-session-parent {\n    font-size: 0.9em;\n  }\n\n  div.rd-sessions li.rd-session-item a {\n    text-decoration: none;\n  }\n\n  div.rd-sessions li.rd-session-item a:link,\n  div.rd-sessions li.rd-session-item a:visited,\n  div.rd-sessions li.rd-session-item a:active,\n  div.rd-sessions li.rd-session-item a:hover {\n    color: inherit;\n  }\n\n  \/* --- OPTIONAL: make plain-text URLs inside descriptions clickable.\n         Set LINKIFY_DESCRIPTIONS = false below to switch this off. --- *\/\n  div.rd-sessions .rd-session-description a,\n  div.rd-sessions .rd-session-description a:link,\n  div.rd-sessions .rd-session-description a:visited,\n  div.rd-sessions .rd-session-description a:active,\n  div.rd-sessions .rd-session-description a:hover {\n    color: #5b114c !important;\n    text-decoration: underline !important;\n  }\n\n  \/* ------------------------ anchors, chips, offset ------------------------ *\/\n  div.rd-sessions li.rd-session-item {\n    \/* Keeps the linked session clear of the sticky site header when scrolled to.\n       Tune to match the QCE26 header height. *\/\n    scroll-margin-top: 120px;\n  }\n\n  \/* The \ud83d\udd17 beside the session title (links to the session as a whole). *\/\n  div.rd-sessions a.rd-anchor-link {\n    display: inline-block;\n    margin-left: 0.5em;\n    font-size: 0.85em;\n    opacity: 0.55;\n    cursor: pointer;\n    text-decoration: none !important;\n  }\n  div.rd-sessions a.rd-anchor-link:hover {\n    opacity: 1;\n  }\n\n  \/* The per-paper chip row underneath the title. *\/\n  div.rd-sessions span.rd-anchor-ids {\n    display: block;\n    margin: 0.4em 0 0.1em 0;\n    font-weight: normal;\n    font-size: 0.85em;\n    line-height: 1.9;\n  }\n  div.rd-sessions span.rd-anchor-ids-label {\n    color: #616e88;\n    margin-right: 0.4em;\n  }\n  div.rd-sessions a.rd-anchor-chip {\n    display: inline-block;\n    padding: 1px 10px;\n    margin-right: 0.4em;\n    white-space: nowrap;\n    color: #5b114c !important;\n    border: solid 1px #5b114c;\n    border-radius: 12px;\n    cursor: pointer;\n    text-decoration: none !important;\n  }\n  div.rd-sessions a.rd-anchor-chip:hover {\n    color: #ffffff !important;\n    background-color: #5b114c;\n  }\n\n  \/* Zero-height alias anchors (one per extra id on a session). *\/\n  div.rd-sessions span.rd-anchor-alias {\n    display: block;\n    height: 0;\n    overflow: hidden;\n    scroll-margin-top: 120px;\n  }\n\n  \/* Transient \"Link copied!\" confirmation. *\/\n  div.rd-sessions span.rd-anchor-note {\n    margin-left: 0.5em;\n    font-size: 0.8em;\n    font-weight: normal;\n    color: #5b114c;\n  }\n\n  \/* Briefly highlight the session a shared link points to. *\/\n  div.rd-sessions li.rd-session-item.rd-anchor-target {\n    box-shadow: 0 0 0 2px #5b114c, 0 1px 2px rgba(8, 27, 56, 0.3);\n    transition: box-shadow 400ms;\n  }\n  \/* ----------------------------------------------------------------------- *\/\n\n  \/* ------------------------- loading \/ error state ------------------------- *\/\n  div.rd-sessions .rd-loading {\n    display: block;\n    margin: 0 3px 18px 3px;\n    padding: 0.9em 1em;\n    border: 1px solid #d7dfec;\n    border-radius: 6px;\n    color: #5b114c;\n    font-size: 0.95em;\n  }\n  div.rd-sessions .rd-spinner {\n    display: inline-block;\n    width: 14px;\n    height: 14px;\n    margin-right: 0.6em;\n    vertical-align: -2px;\n    border: 2px solid rgba(91, 17, 76, 0.25);\n    border-top-color: #5b114c;\n    border-radius: 50%;\n    animation: rd-spin 0.8s linear infinite;\n  }\n  @keyframes rd-spin { to { transform: rotate(360deg); } }\n\n  div.rd-sessions .rd-loading-detail {\n    margin-left: 0.6em;\n    color: #616e88;\n    font-size: 0.85em;\n  }\n  div.rd-sessions .rd-progress {\n    display: block;\n    height: 4px;\n    margin-top: 0.75em;\n    background-color: #e9edf4;\n    border-radius: 2px;\n    overflow: hidden;\n  }\n  div.rd-sessions .rd-progress-fill {\n    display: block;\n    height: 100%;\n    width: 0;\n    background-color: #5b114c;\n    transition: width 150ms linear;\n  }\n  \/* Used until the server tells us the total size. *\/\n  div.rd-sessions .rd-progress.rd-indeterminate .rd-progress-fill {\n    width: 35%;\n    animation: rd-slide 1.2s ease-in-out infinite;\n  }\n  @keyframes rd-slide {\n    0%   { transform: translateX(-100%); }\n    100% { transform: translateX(320%); }\n  }\n\n  div.rd-sessions ul.rd-skeleton {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n  div.rd-sessions li.rd-skeleton-item {\n    display: block;\n    margin: 24px 3px;\n    padding: 1em 0.5em;\n    border: 1px solid #d7dfec;\n    border-radius: 6px;\n  }\n  div.rd-sessions span.rd-skel {\n    display: block;\n    height: 12px;\n    margin: 0.55em 0;\n    border-radius: 6px;\n    background-color: #eef1f6;\n    background-image: linear-gradient(90deg, #eef1f6 25%, #e2e7f0 37%, #eef1f6 63%);\n    background-size: 400% 100%;\n    animation: rd-shimmer 1.4s ease infinite;\n  }\n  div.rd-sessions span.rd-skel-date  { width: 90px; height: 10px; }\n  div.rd-sessions span.rd-skel-title { width: 62%;  height: 14px; }\n  div.rd-sessions span.rd-skel-chips { width: 38%;  height: 10px; }\n  @keyframes rd-shimmer {\n    0%   { background-position: 100% 50%; }\n    100% { background-position: 0 50%; }\n  }\n\n  div.rd-sessions .rd-error {\n    margin: 0 3px;\n    padding: 1em;\n    border: 1px solid #e6c4c4;\n    border-radius: 6px;\n    background-color: #fdf5f5;\n  }\n  div.rd-sessions .rd-error p {\n    margin: 0 0 0.8em 0;\n  }\n  div.rd-sessions button.rd-retry {\n    padding: 4px 12px;\n    color: #ffffff;\n    background-color: #5b114c;\n    border: none;\n    border-radius: 8px;\n    cursor: pointer;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    div.rd-sessions .rd-spinner,\n    div.rd-sessions span.rd-skel,\n    div.rd-sessions .rd-progress.rd-indeterminate .rd-progress-fill {\n      animation: none;\n    }\n  }\n\n  \/* OPTIONAL, and a large win on a list this long: let the browser skip\n     rendering the cards that are off screen. Uncomment to try it. Anchor\n     scrolling and expand\/collapse both still work. *\/\n  \/*\n  div.rd-sessions li.rd-session-item {\n    content-visibility: auto;\n    contain-intrinsic-size: auto 140px;\n  }\n  *\/\n  \/* ----------------------------------------------------------------------- *\/\n\n  div.rd-sessions div.rd-session-tag {\n    display: inline-block;\n    font-size: 0.85em;\n    padding: 4px 12px;\n    margin-top: 0.5em;\n    margin-right: 0.5em;\n    color: #616e88;\n    border: solid 1px #d7dfec;\n    border-radius: 12px;\n  }\n  div.rd-sessions div.rd-session-featured-tag {\n    color: #5b114c;\n    border: solid 1px #5b114c;\n    background-color: #5b114c;\n    background-image: linear-gradient(to right, rgba(255, 255, 255, 0.95), rgba(255, 255, 255, 0.9));\n  }\n\n  div.rd-sessions span.rd-session-locked-item-label {\n    font-weight: normal;\n    font-style: italic;\n  }\n\n  div.rd-sessions .rd-toggle {\n    cursor: pointer;\n  }\n\n  div.rd-sessions .rd-show {\n    opacity: 1;\n    max-height: auto;\n    transition: opacity 300ms, max-height 300ms;\n  }\n\n  div.rd-sessions .rd-hide {\n    opacity: 0;\n    max-height: 0;\n    transition: opacity 300ms, max-height 300ms;\n    overflow: hidden;\n  }\n\n    \n  div.rd-sessions ul.rd-session-speaker-list {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  div.rd-sessions li.rd-session-speaker-item {\n    margin: 12px 0;\n    padding: 0;\n    min-height: 60px;\n    clear: both;\n  }\n\n  div.rd-sessions div.rd-speaker-name {\n    font-weight: bold;\n  }\n\n  div.rd-sessions div.rd-speaker-details {\n    margin-left: 72px;\n  }\n\n  div.rd-sessions img.rd-speaker-photo {\n    float: left;\n    position: relative;\n    width: 60px;\n    height: 60px;\n    border-radius: 50% !important;\n  }\n\n  div.rd-sessions img.rd-speaker-photo::before {\n    content: \"\";\n    display: block;\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    border-radius: 50%;\n    box-shadow: inset 0 0 0 1px rgba(8, 27, 56, 0.1);\n    z-index: 2;\n  }\n      \n\n    \n  div.rd-sessions ul.rd-session-sponsor-list {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  div.rd-sessions li.rd-session-sponsor-item {\n    display: inline-block;\n    margin: 12px 36px 0 0;\n    vertical-align: middle;\n  }\n\n  div.rd-sessions img.rd-sponsor-logo {\n    max-width: 25vw;\n    max-height: 48px;\n  }\n    \n<\/style>\n<!-- The loading state below is plain markup on purpose. It paints with the page\n     itself, so visitors see it even when a caching or optimization plugin\n     delays JavaScript \u2014 which most of them do for logged-out users only, and\n     which is why an admin sees this working and nobody else does.\n     The script replaces this entire block once the schedule arrives.\n     Keep these class names: they also tell \"remove unused CSS\" passes that the\n     rules in the <style> block above are genuinely in use. -->\n<div id=\"rd-sessions\" class=\"rd-sessions\" aria-busy=\"true\">\n  <noscript>\n    <style>.rd-loading, .rd-skeleton { display: none !important; }<\/style>\n    <p>This schedule is loaded with JavaScript. Please enable JavaScript, or use\n       the PDF schedules linked from the Program menu.<\/p>\n  <\/noscript>\n  <div class=\"rd-loading\" role=\"status\" aria-live=\"polite\">\n    <span class=\"rd-spinner\" aria-hidden=\"true\"><\/span><span class=\"rd-loading-text\">Loading the schedule&hellip;<\/span><span class=\"rd-loading-detail\"><\/span>\n    <span class=\"rd-progress rd-indeterminate\"><span class=\"rd-progress-fill\"><\/span><\/span>\n  <\/div>\n  <ul class=\"rd-sessions-list rd-skeleton\" aria-hidden=\"true\">\n    <li class=\"rd-skeleton-item\"><span class=\"rd-skel rd-skel-date\"><\/span><span class=\"rd-skel rd-skel-title\"><\/span><span class=\"rd-skel rd-skel-chips\"><\/span><\/li>\n    <li class=\"rd-skeleton-item\"><span class=\"rd-skel rd-skel-date\"><\/span><span class=\"rd-skel rd-skel-title\"><\/span><span class=\"rd-skel rd-skel-chips\"><\/span><\/li>\n    <li class=\"rd-skeleton-item\"><span class=\"rd-skel rd-skel-date\"><\/span><span class=\"rd-skel rd-skel-title\"><\/span><span class=\"rd-skel rd-skel-chips\"><\/span><\/li>\n    <li class=\"rd-skeleton-item\"><span class=\"rd-skel rd-skel-date\"><\/span><span class=\"rd-skel rd-skel-title\"><\/span><span class=\"rd-skel rd-skel-chips\"><\/span><\/li>\n    <li class=\"rd-skeleton-item\"><span class=\"rd-skel rd-skel-date\"><\/span><span class=\"rd-skel rd-skel-title\"><\/span><span class=\"rd-skel rd-skel-chips\"><\/span><\/li>\n    <li class=\"rd-skeleton-item\"><span class=\"rd-skel rd-skel-date\"><\/span><span class=\"rd-skel rd-skel-title\"><\/span><span class=\"rd-skel rd-skel-chips\"><\/span><\/li>\n  <\/ul>\n<\/div>\n<!-- The data-* attributes ask the common optimization plugins (WP Rocket,\n     LiteSpeed, Autoptimize, WP Fastest Cache, Cloudflare Rocket Loader) not to\n     delay, defer, combine or minify this script. They are inert to browsers. -->\n<script type=\"text\/javascript\" async\n        data-cfasync=\"false\"\n        data-nowprocket\n        data-no-optimize=\"1\"\n        data-no-defer=\"1\"\n        data-wpfc-render=\"false\"\n        data-pagespeed-no-defer>\n  (function (id, baseUrl) {\n\n    \/\/ ============================= CONFIG =============================\n    \/\/ false -> bare anchors like  #332   (matches QSEEC, Panels, BoFs)\n    \/\/ true  -> track-scoped ones like  #qalg-332\n    \/\/ Both spellings resolve either way, so switching later is safe.\n    var USE_TRACK_PREFIX = false;\n\n    \/\/ Anchor only the top-level session cards. If the feed also renders each\n    \/\/ paper as a nested child card, those are skipped: the parent session\n    \/\/ already carries every paper id, and skipping them cuts the work by ~4x.\n    \/\/ Set to true to anchor child cards as well.\n    var INCLUDE_CHILD_ITEMS = false;\n\n    \/\/ Turn plain-text URLs in descriptions into links. This walks every\n    \/\/ description, so it is the most expensive optional step on a long page.\n    var LINKIFY_DESCRIPTIONS = true;\n\n    \/\/ Set window.RD_ANCHORS_DEBUG = true in the console (then reload) to log\n    \/\/ how long the feed and the anchoring each take.\n    function debug() {\n      if (window.RD_ANCHORS_DEBUG && window.console) {\n        console.log.apply(console, ['[rd-anchors]'].concat([].slice.call(arguments)));\n      }\n    }\n    function now() {\n      return (window.performance && performance.now) ? performance.now() : Date.now();\n    }\n    \/\/ ==================================================================\n\n    var SESSION_SELECTOR = INCLUDE_CHILD_ITEMS\n      ? '.rd-session-item'\n      : '.rd-session-item:not(.rd-child-item)';\n\n    \/\/ --- OPTIONAL: turn plain-text URLs inside descriptions into links ---\n    function linkify(root) {\n      if (!LINKIFY_DESCRIPTIONS) return;\n      var blocks = root.querySelectorAll('.rd-session-description');\n      var urlRe = \/(https?:\\\/\\\/[^\\s<>\"')]+[^\\s<>\"').,;:!?])\/g;\n      Array.prototype.forEach.call(blocks, function (block) {\n        \/\/ Fast reject: skip the TreeWalker entirely for the vast majority of\n        \/\/ abstracts, which contain no URL at all.\n        if (block.textContent.indexOf('http') === -1) return;\n        var walker = document.createTreeWalker(block, NodeFilter.SHOW_TEXT, null, false);\n        var nodes = [];\n        while (walker.nextNode()) nodes.push(walker.currentNode);\n        nodes.forEach(function (node) {\n          if (node.parentNode && node.parentNode.nodeName === 'A') return; \/\/ skip existing links\n          if (node.nodeValue.indexOf('http') === -1) return;\n          urlRe.lastIndex = 0;\n          if (!urlRe.test(node.nodeValue)) return;\n          urlRe.lastIndex = 0;\n          var frag = document.createDocumentFragment();\n          var last = 0, m;\n          while ((m = urlRe.exec(node.nodeValue)) !== null) {\n            if (m.index > last) {\n              frag.appendChild(document.createTextNode(node.nodeValue.slice(last, m.index)));\n            }\n            var a = document.createElement('a');\n            a.href = m[0];\n            a.textContent = m[0];\n            a.target = '_blank';\n            a.rel = 'noopener noreferrer';\n            frag.appendChild(a);\n            last = m.index + m[0].length;\n          }\n          if (last < node.nodeValue.length) {\n            frag.appendChild(document.createTextNode(node.nodeValue.slice(last)));\n          }\n          node.parentNode.replaceChild(frag, node);\n        });\n      });\n    }\n\n    \/\/ ==================== shareable per-session anchors ====================\n    \/\/\n    \/\/ Technical paper titles are  TRACK::id[::id...] Session Name  \u2014 the track\n    \/\/ varies per session and the id list is one EasyChair id per paper:\n    \/\/\n    \/\/   QTEM::488::404::1264 Quantum Error Correction & Fault Tolerance\n    \/\/   QALG::332::647::391 Constrained Combinatorial Optimization II\n    \/\/\n    \/\/ Every id becomes its own anchor for the session that contains it, so a\n    \/\/ paper author can share #332 and land people on their session. The\n    \/\/ session name becomes a readable anchor too, scoped by track.\n\n    var anchorIndex = Object.create(null);   \/\/ hash (lowercase) -> session element\n    var trackList = [];                      \/\/ track codes seen on the page\n\n    function slugify(text) {\n      return (text || '').toString().toLowerCase().trim()\n        .replace(\/[^\\w\\s-]\/g, '')   \/\/ drop non-word chars (&, commas, ...)\n        .replace(\/[\\s_]+\/g, '-')    \/\/ spaces\/underscores -> hyphen\n        .replace(\/-+\/g, '-')        \/\/ collapse repeats\n        .replace(\/^-+|-+$\/g, '');   \/\/ trim leading\/trailing hyphens\n    }\n\n    \/\/ Split \"QALG::332::647::391 Constrained Combinatorial Optimization II\".\n    \/\/ Extra alphabetic \"::\" segments (topic codes, as on the workshop and\n    \/\/ tutorial pages) are tolerated between the track and the id run. Each id\n    \/\/ must be preceded by \"::\", so a name starting with a digit is safe.\n    var TITLE_RE =\n      \/^([A-Za-z][\\w-]*)((?:\\s*::\\s*[A-Za-z][\\w-]*)*)((?:\\s*::\\s*\\d+)+)\\s*[-\\u2013\\u2014]?\\s*(.*)$\/;\n\n    function parseTitle(raw) {\n      var t = (raw || '').replace(\/\\s+\/g, ' ').trim();\n      var m = t.match(TITLE_RE);\n      if (!m) return { track: '', ids: [], name: t };\n      return {\n        track: m[1],\n        ids: m[3].match(\/\\d+\/g) || [],\n        name: (m[4] || '').trim()\n      };\n    }\n\n    \/\/ Reserve a hash, avoiding our own duplicates and ids already present\n    \/\/ elsewhere on the WordPress page.\n    function claimKey(container, used, key) {\n      var base = key, n = 2;\n      while (used[key] || conflictsOutside(container, key)) {\n        key = base + '-' + n;\n        n++;\n      }\n      used[key] = true;\n      return key;\n    }\n    function conflictsOutside(container, key) {\n      var el = document.getElementById(key);\n      return !!(el && !container.contains(el));\n    }\n\n    \/\/ Register a hash -> session mapping under both the bare and the\n    \/\/ track-scoped spelling, so #332 and #qalg-332 both work.\n    function register(key, item, track) {\n      var k = key.toLowerCase();\n      var bare = k;\n      if (track) {\n        var p = track + '-';\n        if (k.slice(0, p.length) === p) bare = k.slice(p.length);\n      }\n      if (!anchorIndex[k]) anchorIndex[k] = item;\n      if (!anchorIndex[bare]) anchorIndex[bare] = item;\n      if (track && !anchorIndex[track + '-' + bare]) anchorIndex[track + '-' + bare] = item;\n    }\n\n    \/\/ Copy a share link for one hash and confirm next to the title.\n    function copyLink(key, nearEl) {\n      var url = location.origin + location.pathname + location.search + '#' + key;\n      try { history.replaceState(null, '', '#' + key); } catch (err) { \/* ignore *\/ }\n      if (navigator.clipboard && navigator.clipboard.writeText) {\n        navigator.clipboard.writeText(url).then(\n          function () { flash(nearEl, 'Link copied!'); },\n          function () { flash(nearEl, url); }\n        );\n      } else {\n        flash(nearEl, url);\n      }\n    }\n\n    \/\/ Build the ids, chip rows and copy controls for a freshly loaded list.\n    \/\/\n    \/\/ IMPORTANT: this runs on a DETACHED fragment, before the content is put\n    \/\/ on the page. Every insertion below therefore costs no layout or style\n    \/\/ recalculation, which is what made the previous version crawl on a list\n    \/\/ this size.\n    function addAnchors(root, container) {\n      var items = root.querySelectorAll(SESSION_SELECTOR);\n      var used = Object.create(null);\n      anchorIndex = Object.create(null);\n      trackList = [];\n\n      Array.prototype.forEach.call(items, function (item) {\n        var titleEl = item.querySelector('.rd-session-title');\n        if (!titleEl) return;\n\n        \/\/ Already processed (a re-run over live content): re-register its\n        \/\/ hashes rather than skipping, so the lookup index is never left\n        \/\/ empty. Skipping is what previously made anchors stop resolving\n        \/\/ after the first pass.\n        var existing = item.getAttribute('data-rd-keys');\n        if (existing) {\n          var oldTrack = item.getAttribute('data-rd-track') || '';\n          if (oldTrack && trackList.indexOf(oldTrack) === -1) trackList.push(oldTrack);\n          existing.split(' ').forEach(function (k) {\n            if (k) { used[k] = true; register(k, item, oldTrack); }\n          });\n          return;\n        }\n\n        var parsed = parseTitle(titleEl.textContent);\n        var track = parsed.track.toLowerCase();\n        if (track && trackList.indexOf(track) === -1) trackList.push(track);\n        var pfx = (USE_TRACK_PREFIX && track) ? track + '-' : '';\n\n        \/\/ Candidate hashes: one per EasyChair id, then the readable name.\n        var keys = [];\n        parsed.ids.forEach(function (n) { keys.push(pfx + n); });\n        var nameKey = slugify(parsed.name);\n        if (nameKey) keys.push((track ? track + '-' : '') + nameKey);\n        if (!keys.length) keys.push(slugify(titleEl.textContent) || 'session');\n\n        \/\/ claimed[i] lines up with parsed.ids[i]; the last one is the name.\n        var claimed = keys.map(function (k) { return claimKey(container, used, k); });\n\n        \/\/ The first id becomes the element's real id; the rest become\n        \/\/ zero-height alias anchors inside the same card.\n        item.id = claimed[0];\n        claimed.forEach(function (k) { register(k, item, track); });\n        for (var i = 1; i < claimed.length; i++) {\n          var alias = document.createElement('span');\n          alias.className = 'rd-anchor-alias';\n          alias.id = claimed[i];\n          item.insertBefore(alias, item.firstChild);\n        }\n        \/\/ The bare session name works too, when no other track claimed it.\n        if (nameKey && !anchorIndex[nameKey]) anchorIndex[nameKey] = item;\n\n        \/\/ \ud83d\udd17 beside the title -> the session as a whole.\n        var a = document.createElement('a');\n        a.className = 'rd-anchor-link';\n        a.href = '#' + claimed[0];\n        a.title = 'Copy link to this session';\n        a.setAttribute('aria-label', 'Copy link to this session');\n        a.setAttribute('data-rd-key', claimed[0]);\n        a.textContent = '\\uD83D\\uDD17'; \/\/ \ud83d\udd17\n        titleEl.appendChild(a);\n\n        \/\/ One chip per paper, so an author can grab their own link.\n        if (parsed.ids.length) {\n          var row = document.createElement('span');\n          row.className = 'rd-anchor-ids';\n\n          var label = document.createElement('span');\n          label.className = 'rd-anchor-ids-label';\n          label.textContent = parsed.ids.length > 1 ? 'Direct links:' : 'Direct link:';\n          row.appendChild(label);\n\n          for (var j = 0; j < parsed.ids.length; j++) {\n            var n = parsed.ids[j];\n            var chip = document.createElement('a');\n            chip.className = 'rd-anchor-chip';\n            chip.href = '#' + claimed[j];\n            chip.title = 'Copy the link to paper ' + n;\n            chip.setAttribute('aria-label', 'Copy the link to paper ' + n);\n            chip.setAttribute('data-rd-key', claimed[j]);\n            chip.textContent = '\\uD83D\\uDD17\\u00A0' + n; \/\/ \ud83d\udd17 + nbsp + id\n            row.appendChild(chip);\n          }\n\n          \/\/ Sits directly under the title, outside the collapsible detail\n          \/\/ panel, so it is visible whether the card is open or closed.\n          titleEl.parentNode.insertBefore(row, titleEl.nextSibling);\n        }\n\n        item.setAttribute('data-rd-track', track);\n        item.setAttribute('data-rd-keys', claimed.join(' '));\n      });\n\n      return items.length;\n    }\n\n    \/\/ ONE delegated listener for every \ud83d\udd17 and chip on the page, instead of one\n    \/\/ listener per control (which was well over a thousand closures on a list\n    \/\/ this size). Capture phase, so it runs before the expand\/collapse handler\n    \/\/ and can stop the click from toggling the card.\n    function listenForAnchors(container) {\n      container.addEventListener('click', function (e) {\n        var el = e.target;\n        while (el && el !== container &&\n               !(el.className && String(el.className).indexOf('rd-anchor-') !== -1)) {\n          el = el.parentNode;\n        }\n        if (!el || el === container) return;\n        var key = el.getAttribute && el.getAttribute('data-rd-key');\n        if (!key) return;\n        e.preventDefault();\n        e.stopPropagation();          \/\/ capture phase: the card never toggles\n        var item = el.closest ? el.closest('.rd-session-item') : null;\n        var titleEl = item ? item.querySelector('.rd-session-title') : null;\n        copyLink(key, titleEl || el);\n      }, true);\n    }\n\n    \/\/ Small transient confirmation message next to a title.\n    function flash(titleEl, msg) {\n      var existing = titleEl.querySelector && titleEl.querySelector('.rd-anchor-note');\n      if (existing) existing.parentNode.removeChild(existing);\n      var note = document.createElement('span');\n      note.className = 'rd-anchor-note';\n      note.textContent = msg;\n      titleEl.appendChild(note);\n      setTimeout(function () {\n        if (note.parentNode) note.parentNode.removeChild(note);\n      }, 1800);\n    }\n\n    \/\/ Resolve an incoming #hash to a session card, tolerating case, a track\n    \/\/ prefix in either direction, and links carrying extra text after the id.\n    function resolveTarget(rawHash) {\n      if (!rawHash) return null;\n      var key;\n      try { key = decodeURIComponent(rawHash); } catch (err) { key = rawHash; }\n      key = key.replace(\/^#\/, '').trim();\n      if (!key) return null;\n\n      var lower = key.toLowerCase();\n      var el = document.getElementById(key) || anchorIndex[lower] || null;\n\n      if (!el) {                       \/\/ strip a leading track code: qalg-332 -> 332\n        for (var i = 0; i < trackList.length && !el; i++) {\n          var t = trackList[i];\n          if (lower.indexOf(t) === 0) {\n            el = anchorIndex[lower.slice(t.length).replace(\/^[-_:]+\/, '')] || null;\n          }\n        }\n      }\n      if (!el) {\n        var num = key.match(\/\\d+\/);    \/\/ last resort: any number in the hash\n        if (num) el = anchorIndex[num[0]] || null;\n      }\n      if (!el) return null;\n\n      if (el.closest) return el.closest('.rd-session-item') || el;\n      var node = el;\n      while (node && node.className &&\n             String(node.className).indexOf('rd-session-item') === -1) {\n        node = node.parentNode;\n      }\n      return node || el;\n    }\n\n    \/\/ Make sure a target session's detail panel is expanded (it loads collapsed).\n    function ensureOpen(item, tries) {\n      tries = tries || 0;\n      var detail = item.querySelector('.rd-session-detail');\n      var toggleEl = item.querySelector('.rd-toggle') || item.querySelector('.rd-session-title');\n      if (!detail || !toggleEl) return;\n\n      \/\/ Prefer the explicit signals RDMobile's own toggle sets. Measuring\n      \/\/ geometry forces a layout, and returns nothing at all for cards the\n      \/\/ browser has skipped rendering (see content-visibility in the CSS).\n      var visible;\n      if (detail.classList.contains('rd-show')) {\n        visible = true;\n      } else if (detail.classList.contains('rd-hide') || detail.style.display === 'none') {\n        visible = false;\n      } else {\n        var cs = window.getComputedStyle(detail);\n        visible = cs.display !== 'none' && cs.opacity !== '0' && cs.maxHeight !== '0px';\n      }\n      if (!visible && tries < 2) {\n        toggleEl.click();\n        setTimeout(function () { ensureOpen(item, tries + 1); }, 60);\n      }\n    }\n\n    \/\/ Expand + scroll to whatever the current #hash points at.\n    function openTarget() {\n      var item = resolveTarget(location.hash.slice(1));\n      if (!item) { debug('no match for', location.hash); return; }\n      ensureOpen(item, 0);\n      item.classList.add('rd-anchor-target');\n      setTimeout(function () {\n        item.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }, 380); \/\/ let the expand transition settle first\n      setTimeout(function () {\n        item.classList.remove('rd-anchor-target');\n      }, 2600);\n    }\n\n    \/\/ Honour a hash present when the page first loaded \u2014 once, and only after\n    \/\/ the content has actually been injected.\n    var initialHashHandled = false;\n    function maybeHandleInitialHash() {\n      if (initialHashHandled || !location.hash) return;\n      if (!resolveTarget(location.hash.slice(1))) return;\n      initialHashHandled = true;\n      openTarget();\n    }\n    \/\/ ================== end shareable per-session anchors ==================\n\n    var requestSeq = 0;   \/\/ so a slow response can't overwrite a newer one\n\n    function el(tag, cls, text) {\n      var node = document.createElement(tag);\n      if (cls) node.className = cls;\n      if (text != null) node.textContent = text;\n      return node;\n    }\n\n    function fmtBytes(n) {\n      if (n >= 1048576) return (n \/ 1048576).toFixed(1) + ' MB';\n      return Math.round(n \/ 1024) + ' KB';\n    }\n\n    \/\/ Spinner, progress bar and a few placeholder cards, so the page never\n    \/\/ sits blank while a large feed downloads. Returns handles to the bits\n    \/\/ that get updated as bytes arrive.\n    function showLoading(container) {\n      container.setAttribute('aria-busy', 'true');\n\n      \/\/ On the first load the loading block is already in the page markup, so\n      \/\/ reuse it \u2014 rebuilding would restart the animation and throw away\n      \/\/ something the visitor is already looking at. Later filter reloads\n      \/\/ build a fresh one.\n      var existing = container.querySelector('.rd-loading');\n      if (existing && container.querySelector('.rd-skeleton')) {\n        var reused = {\n          text: existing.querySelector('.rd-loading-text'),\n          detail: existing.querySelector('.rd-loading-detail'),\n          track: existing.querySelector('.rd-progress'),\n          fill: existing.querySelector('.rd-progress-fill')\n        };\n        if (reused.text && reused.detail && reused.track && reused.fill) return reused;\n      }\n\n      var box = el('div', 'rd-loading');\n      box.setAttribute('role', 'status');\n      box.setAttribute('aria-live', 'polite');\n\n      var spinner = el('span', 'rd-spinner');\n      spinner.setAttribute('aria-hidden', 'true');\n      var text = el('span', 'rd-loading-text', 'Loading the schedule\\u2026');\n      var detail = el('span', 'rd-loading-detail', '');\n      var track = el('span', 'rd-progress rd-indeterminate');\n      var fill = el('span', 'rd-progress-fill');\n      track.appendChild(fill);\n\n      box.appendChild(spinner);\n      box.appendChild(text);\n      box.appendChild(detail);\n      box.appendChild(track);\n\n      var list = el('ul', 'rd-sessions-list rd-skeleton');\n      list.setAttribute('aria-hidden', 'true');   \/\/ placeholders, not content\n      for (var i = 0; i < 6; i++) {\n        var card = el('li', 'rd-skeleton-item');\n        card.appendChild(el('span', 'rd-skel rd-skel-date'));\n        card.appendChild(el('span', 'rd-skel rd-skel-title'));\n        card.appendChild(el('span', 'rd-skel rd-skel-chips'));\n        list.appendChild(card);\n      }\n\n      var frag = document.createDocumentFragment();\n      frag.appendChild(box);\n      frag.appendChild(list);\n      container.innerHTML = '';\n      container.appendChild(frag);\n\n      return { text: text, detail: detail, track: track, fill: fill };\n    }\n\n    function showError(container, message, retry) {\n      container.removeAttribute('aria-busy');\n      var box = el('div', 'rd-error');\n      box.setAttribute('role', 'alert');\n      box.appendChild(el('p', null, message));\n      var button = el('button', 'rd-retry', 'Try again');\n      button.type = 'button';\n      button.addEventListener('click', retry);\n      box.appendChild(button);\n      container.innerHTML = '';\n      container.appendChild(box);\n    }\n\n    function load(id, url) {\n      var container = document.getElementById(id);\n      var mySeq = ++requestSeq;\n      var t0 = now();\n      var ui = showLoading(container);\n      var done = false;\n\n      function stale() { return mySeq !== requestSeq; }\n      function retry() { load(id, url); }\n\n      \/\/ After a few seconds, say something more useful than \"loading\".\n      var patience = setTimeout(function () {\n        if (!done && !stale()) {\n          ui.text.textContent = 'Still loading \\u2014 this is a long schedule.';\n        }\n      }, 5000);\n\n      function fail(message) {\n        if (done || stale()) return;\n        done = true;\n        clearTimeout(patience);\n        showError(container, message, retry);\n      }\n\n      var xhttp = new XMLHttpRequest();\n      xhttp.timeout = 90000;\n\n      \/\/ Real progress when the server sends a Content-Length; a byte counter\n      \/\/ otherwise, which is still far better than an unmoving spinner.\n      xhttp.onprogress = function (e) {\n        if (done || stale()) return;\n        if (e.lengthComputable && e.total > 0) {\n          ui.track.className = 'rd-progress';\n          ui.fill.style.width = Math.round((e.loaded \/ e.total) * 100) + '%';\n          ui.detail.textContent = fmtBytes(e.loaded) + ' of ' + fmtBytes(e.total);\n        } else if (e.loaded) {\n          ui.detail.textContent = fmtBytes(e.loaded) + ' downloaded';\n        }\n      };\n\n      xhttp.onerror = function () {\n        fail('The schedule could not be loaded. Please check your connection and try again.');\n      };\n      xhttp.ontimeout = function () {\n        fail('The schedule took too long to load. Please try again.');\n      };\n\n      xhttp.onreadystatechange = function () {\n        if (this.readyState != 4) return;\n        if (stale()) { debug('discarded stale response'); return; }\n        if (this.status != 200) {\n          fail(this.status\n            ? 'The schedule could not be loaded (server returned ' + this.status + ').'\n            : 'The schedule could not be loaded. Please check your connection and try again.');\n          return;\n        }\n        if (done) return;\n        done = true;\n        clearTimeout(patience);\n        var t1 = now();\n\n        \/\/ Parse and decorate OFF-DOM, then attach in a single operation.\n        var staging = document.createElement('div');\n        staging.innerHTML = this.responseText;\n        linkify(staging);\n        var count = addAnchors(staging, container);\n        var t2 = now();\n\n        var frag = document.createDocumentFragment();\n        while (staging.firstChild) frag.appendChild(staging.firstChild);\n        container.innerHTML = '';\n        container.appendChild(frag);\n        container.removeAttribute('aria-busy');\n\n        debug('feed', Math.round(t1 - t0) + 'ms |',\n              'anchors', Math.round(t2 - t1) + 'ms |',\n              'insert', Math.round(now() - t2) + 'ms |',\n              count + ' sessions |',\n              Math.round(this.responseText.length \/ 1024) + ' KB');\n\n        maybeHandleInitialHash();\n      };\n      xhttp.open(\"GET\", url, true);\n      xhttp.send();\n    };\n\n    function toggle(el) {\n      if (el.style.display === 'none') {\n        el.classList.add('rd-hide');\n        el.style.display = '';\n        setTimeout(toggleHidden, 0, el);\n      }\n      else {\n        toggleHidden(el);\n        setTimeout(function () {\n          el.style.display = 'none';\n        }, 300);\n      }\n    };\n\n    function toggleHidden(el) {\n      if (el.classList.contains('rd-hide')) {\n        el.classList.add('rd-show');\n        el.classList.remove('rd-hide');\n      } else {\n        el.classList.add('rd-hide');\n        el.classList.remove('rd-show');\n      }\n    }\n\n    function listenForToggle(id) {\n      var container = document.getElementById(id);\n      container.addEventListener('click', function (e) {\n        for (var target = e.target; target && target != container; target = target.parentNode) {\n          if (target.matches && target.matches('.rd-toggle')) {\n            if (target.dataset.rdTarget) {\n              var els = container.querySelectorAll(target.dataset.rdTarget);\n              Array.prototype.forEach.call(els, toggle);\n            }\n            break;\n          }\n        }\n      }, false);\n    }\n\n    \/\/ Filter the list of items\n    function initFilter() {\n      \/\/ Initialize the filter button\n      var filterButton = document.getElementById('rd-filter-submit');\n      if (filterButton) {\n        filterButton.addEventListener('click', function () {\n          \/\/ 1. Collect checked tag IDs\n          var checked = Array.from(\n            document.querySelectorAll('.tag-filter-checkbox:checked')\n          ).map(function (cb) {\n            return cb.value;\n          });\n\n          \/\/ 2. Build URL\n          var url = baseUrl;\n          if (checked.length) {\n            var params = new URLSearchParams();\n            params.set('tags', checked.join(','));\n            url = baseUrl + (baseUrl.includes('?') ? '&' : '?') + params.toString();\n          }\n\n          \/\/ 3. Reload the list\n          load(id, url);\n        });\n      }\n\n      \/\/ Initialize the clear button\n      var clearButton = document.getElementById('rd-filter-clear');\n      if (clearButton) {\n        clearButton.addEventListener('click', function () {\n          \/\/ Clear all checked checkboxes (pure JS)\n          document.querySelectorAll('.tag-filter-checkbox:checked').forEach(function (cb) {\n            cb.checked = false;\n          });\n\n          \/\/ Reload the list using just the base URL\n          load(id, baseUrl);\n        });\n      }\n    }\n\n    \/\/ Initialize everything when the DOM is ready\n    function ready(fn) {\n      if (document.readyState !== 'loading') fn();\n      else document.addEventListener('DOMContentLoaded', fn);\n    }\n\n    ready(function () {\n      var container = document.getElementById(id);\n      if (!container) return;\n      \/\/ If this widget's markup ends up on the page twice, only wire it once \u2014\n      \/\/ two copies would fire two feed requests and race each other.\n      if (container.getAttribute('data-rd-init') === '1') {\n        debug('already initialised, skipping duplicate');\n        return;\n      }\n      container.setAttribute('data-rd-init', '1');\n\n      listenForAnchors(container);   \/\/ capture phase, must be wired first\n      listenForToggle(id);\n      load(id, baseUrl);\n      initFilter();\n      window.addEventListener('hashchange', openTarget);\n    });\n\n  })('rd-sessions', 'https:\/\/events.rdmobile.com\/Sessions\/Remote\/20412?tags=117591&detail=Description&included=Tags%2cSpeakers%2cSponsors%2cSubsessions&speakerdetails=Title%2cCompany%2cPhoto%2cDescription&speakerclickoption=None&version=2&token=nT%2fR8SqVMFq74LqZ%2bFz2H8OQc3hm8yVMPYTJ6510wWU%3d');\n<\/script>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Program 2026 &#8211; Technical Papers<\/p>\n","protected":false},"author":13,"featured_media":0,"parent":1305,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"class_list":["post-1616","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Schedule - Papers - IEEE Quantum Week<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Schedule - Papers - IEEE Quantum Week\" \/>\n<meta property=\"og:description\" content=\"Program 2026 &#8211; Technical Papers\" \/>\n<meta property=\"og:url\" content=\"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/\" \/>\n<meta property=\"og:site_name\" content=\"IEEE Quantum Week\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-07T18:28:13+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/qce26-schedule\\\/paper-schedule\\\/\",\"url\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/qce26-schedule\\\/paper-schedule\\\/\",\"name\":\"Schedule - Papers - IEEE Quantum Week\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/#website\"},\"datePublished\":\"2025-05-29T17:48:32+00:00\",\"dateModified\":\"2026-07-07T18:28:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/qce26-schedule\\\/paper-schedule\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/qce26-schedule\\\/paper-schedule\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/qce26-schedule\\\/paper-schedule\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Schedule &#8211; All Days\",\"item\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/qce26-schedule\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Schedule &#8211; Papers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/#website\",\"url\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/\",\"name\":\"IEEE Quantum Week\",\"description\":\"IEEE Quantum Week 2025\",\"publisher\":{\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/#organization\",\"name\":\"IEEE Quantum Week\",\"url\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/wp-content\\\/uploads\\\/sites\\\/13\\\/2026\\\/01\\\/QCE26-banner-2627x208-1-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/wp-content\\\/uploads\\\/sites\\\/13\\\/2026\\\/01\\\/QCE26-banner-2627x208-1-scaled.jpg\",\"width\":2560,\"height\":203,\"caption\":\"IEEE Quantum Week\"},\"image\":{\"@id\":\"https:\\\/\\\/qce.quantum.ieee.org\\\/2026\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Schedule - Papers - IEEE Quantum Week","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/","og_locale":"en_US","og_type":"article","og_title":"Schedule - Papers - IEEE Quantum Week","og_description":"Program 2026 &#8211; Technical Papers","og_url":"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/","og_site_name":"IEEE Quantum Week","article_modified_time":"2026-07-07T18:28:13+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/","url":"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/","name":"Schedule - Papers - IEEE Quantum Week","isPartOf":{"@id":"https:\/\/qce.quantum.ieee.org\/2026\/#website"},"datePublished":"2025-05-29T17:48:32+00:00","dateModified":"2026-07-07T18:28:13+00:00","breadcrumb":{"@id":"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/paper-schedule\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/qce.quantum.ieee.org\/2026\/"},{"@type":"ListItem","position":2,"name":"Schedule &#8211; All Days","item":"https:\/\/qce.quantum.ieee.org\/2026\/qce26-schedule\/"},{"@type":"ListItem","position":3,"name":"Schedule &#8211; Papers"}]},{"@type":"WebSite","@id":"https:\/\/qce.quantum.ieee.org\/2026\/#website","url":"https:\/\/qce.quantum.ieee.org\/2026\/","name":"IEEE Quantum Week","description":"IEEE Quantum Week 2025","publisher":{"@id":"https:\/\/qce.quantum.ieee.org\/2026\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/qce.quantum.ieee.org\/2026\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/qce.quantum.ieee.org\/2026\/#organization","name":"IEEE Quantum Week","url":"https:\/\/qce.quantum.ieee.org\/2026\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/qce.quantum.ieee.org\/2026\/#\/schema\/logo\/image\/","url":"https:\/\/qce.quantum.ieee.org\/2026\/wp-content\/uploads\/sites\/13\/2026\/01\/QCE26-banner-2627x208-1-scaled.jpg","contentUrl":"https:\/\/qce.quantum.ieee.org\/2026\/wp-content\/uploads\/sites\/13\/2026\/01\/QCE26-banner-2627x208-1-scaled.jpg","width":2560,"height":203,"caption":"IEEE Quantum Week"},"image":{"@id":"https:\/\/qce.quantum.ieee.org\/2026\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/qce.quantum.ieee.org\/2026\/wp-json\/wp\/v2\/pages\/1616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qce.quantum.ieee.org\/2026\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/qce.quantum.ieee.org\/2026\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/qce.quantum.ieee.org\/2026\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/qce.quantum.ieee.org\/2026\/wp-json\/wp\/v2\/comments?post=1616"}],"version-history":[{"count":0,"href":"https:\/\/qce.quantum.ieee.org\/2026\/wp-json\/wp\/v2\/pages\/1616\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/qce.quantum.ieee.org\/2026\/wp-json\/wp\/v2\/pages\/1305"}],"wp:attachment":[{"href":"https:\/\/qce.quantum.ieee.org\/2026\/wp-json\/wp\/v2\/media?parent=1616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}