An error occurred while processing the template.
The following has evaluated to null or missing:
==> section.AccordionGroup  [in template "20097#20123#PS-ARTICLE" at line 117, column 32]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #list section.AccordionGroup.getSibli...  [in template "20097#20123#PS-ARTICLE" at line 117, column 25]
----
1<#-- 
2Web content templates are used to lay out the fields defined in a web 
3content structure. 
4Please use the left panel to quickly add commonly used variables. 
5Autocomplete is also available and can be invoked by typing "${". 
6--> 
7 
8<#assign 
9articleId = .vars['reserved-article-id'].data 
10 
11/> 
12 
13 
14 
15<#macro ctaSection ctaData> 
16    <#if ctaData?has_content && ctaData.get("classPK")?has_content> 
17        <div id="cta-section" class="l3-cta"> 
18            <#assign 
19            ctaClassPK = ctaData.get("classPK") 
20            article = publicSiteGlobalTemplateHelper.getArticleByResourcePrimKey(ctaClassPK) 
21            /> 
22            <@liferay_journal["journal-article"] 
23            articleId=article.getArticleId() 
24            groupId=article.getGroupId() 
25            /> 
26        </div> 
27    </#if> 
28</#macro> 
29<#macro accordionSection items> 
30    <#if (items?size gt 0)> 
31        <section id="faq-section" class="faq"> 
32 
33            <#list items![] as item> 
34                <#if item.Title.getData()?has_content> 
35                    <div class="panel magellan-accordion panel-panel" role="tablist"> 
36                        <button class="panel-header panel-header-link collapse-icon collapse-icon-middle collapsed btn btn-unstyled" 
37                                type="button" aria-expanded="false" role="tab"> 
38                            <span class="panel-title">${item.Title.getData()}</span> 
39                            <span class="collapse-icon-closed"> 
40                                <@clay.icon symbol="angle-down" /> 
41                            </span> 
42                            <span class="collapse-icon-open"> 
43                                <@clay.icon symbol="angle-up" /> 
44                            </span> 
45                        </button> 
46                        <div class="panel-collapse collapse" role="tabpanel"> 
47                            <div class="panel-body" tabindex="0">${item.Content.getData()}</div> 
48                        </div> 
49                    </div> 
50                </#if> 
51            </#list> 
52        </section> 
53    </#if> 
54</#macro> 
55<#assign 
56shouldRenderTableOfContent = getterUtil.getBoolean(ShowTableOfContent.getData()) 
57/> 
58<article class="l3-article container-fluid"> 
59    <div class="row"> 
60        <div class="col-md-9 article-content" id="main"> 
61            <#list SectionSeparator.getSiblings() as section> 
62                <#if section?index gt 0> 
63                    <hr/> 
64                </#if> 
65                <#assign showTableOfContentMobile = (shouldRenderTableOfContent && section?index == 1) /> 
66                <#if showTableOfContentMobile> 
67                    <div class="d-lg-none table-of-content-mobile mb-5"> 
68                        <div class="panel magellan-accordion panel-panel" role="tablist"> 
69                            <button class="panel-header panel-header-link collapse-icon collapse-icon-middle collapsed btn btn-unstyled" 
70                                    type="button" aria-expanded="false" role="tab"> 
71                                    <span class="panel-title"> 
72                                        <@liferay.language key="what-is-on-this-page" /> 
73                                    </span> 
74                                <span class="collapse-icon-closed"> 
75                                    <@clay.icon symbol="angle-down" /> 
76                                </span> 
77                                <span class="collapse-icon-open"> 
78                                    <@clay.icon symbol="angle-up" /> 
79                                </span> 
80                            </button> 
81                            <div class="panel-collapse collapse" role="tabpanel"> 
82                                <ul class="list-unstyled"> 
83                                    <#list SectionSeparator.getSiblings() as section> 
84                                        <#if section.SectionMenuTitle.getData()?has_content || section.SectionTitle.getData()?has_content> 
85                                            <li> 
86                                                <a class="table-of-content-item" href="#section-${section?index}"> 
87                                                    <#if section.SectionMenuTitle?? && section.SectionMenuTitle.getData()?has_content> 
88                                                        ${section.SectionMenuTitle.getData()} 
89                                                    <#else> 
90                                                        ${section.SectionTitle.getData()} 
91                                                    </#if> 
92                                                </a> 
93                                            </li> 
94                                        </#if> 
95                                    </#list> 
96                                </ul> 
97                            </div> 
98                        </div> 
99                    </div> 
100                </#if> 
101 
102                <section class="${(section?index == 0) ? then('overview','paragraph section'+section?index) }" > 
103                    <div class="section-content"> 
104 
105                        <#if section.SectionTitle.getData()?has_content> 
106                            <#if section?index == 0> 
107                                <h2 id="section-${section?index}">${section.SectionTitle.getData()}</h2> 
108                            <#else> 
109                                <h3 id="section-${section?index}">${section.SectionTitle.getData()}</h3> 
110                            </#if> 
111                        </#if> 
112 
113                        <#if section.SectionTextContent.getData()?has_content> 
114                            <div class="section-text-content">${section.SectionTextContent.getData()}</div> 
115                        </#if> 
116 
117                        <#list section.AccordionGroup.getSiblings() as accord> 
118                            <div class="section-accordion"> 
119                                <@accordionSection 
120                                items=accord.Accordion.getSiblings() 
121                                /> 
122                            </div> 
123                        </#list> 
124 
125                        <#if section.CTAContent.getData()?has_content> 
126                            <div class="section-cta"> 
127                                <@ctaSection 
128                                ctaData=jsonFactoryUtil.createJSONObject(section.CTAContent.getData()) 
129                                /> 
130                            </div> 
131                        </#if> 
132 
133                    </div> 
134                </section> 
135            </#list> 
136        </div> 
137        <#if shouldRenderTableOfContent> 
138            <div class="d-none d-lg-block col-md-3" id="sticky-sidebar"> 
139                <div class="sticky-top-"> 
140                    <div class="position-fixed table-of-content "> 
141                        <span><@liferay.language key="what-is-on-this-page" /></span> 
142                        <ul class="list-unstyled nav flex-column flex-nowrap overflow-auto"> 
143                            <#list SectionSeparator.getSiblings() as section> 
144                                <#if section.SectionMenuTitle.getData()?has_content || section.SectionTitle.getData()?has_content> 
145                                    <li> 
146                                        <a class="table-of-content-item" href="#section-${section?index}"> 
147                                            <#if section.SectionMenuTitle?? && section.SectionMenuTitle.getData()?has_content> 
148                                                ${section.SectionMenuTitle.getData()} 
149                                            <#else> 
150                                                ${section.SectionTitle.getData()} 
151                                            </#if> 
152                                        </a> 
153                                    </li> 
154                                </#if> 
155                            </#list> 
156                        </ul> 
157                    </div> 
158                </div> 
159            </div> 
160        </#if> 
161    </div> 
162</article> 
163 
164<script> 
165    (function () { 
166        function setTableOfContentItemActive(itemId) { 
167            console.log(itemId); 
168            const selector = Liferay.Util.isPhone() || Liferay.Util.isTablet() 
169                ? '.table-of-content-mobile .table-of-content-item' 
170                : '.table-of-content .table-of-content-item'; 
171            const tableOfContentItems = document.querySelectorAll(selector); 
172 
173            if (!tableOfContentItems) { 
174                return; 
175
176 
177            tableOfContentItems.forEach(function (item) { 
178                item.classList.remove('active'); 
179 
180            }); 
181            const activeItem = document.querySelector(selector + '[href="' + itemId + '"]'); 
182            activeItem.classList.add('active'); 
183 
184
185 
186        const tableOfContentItems = document.querySelectorAll('.table-of-content-item'); 
187        tableOfContentItems.forEach(function (item, index) { 
188            if (index === 0) { 
189                setTableOfContentItemActive(item.getAttribute('href')); 
190
191            item.addEventListener('click', function (event) { 
192                event.preventDefault(); 
193                event.stopPropagation(); 
194                const scrollTargetId = item.getAttribute('href'); 
195                const scrollTarget = document.getElementById(scrollTargetId.replace('#', '')); 
196                const offsetNavbarRem = getComputedStyle(document.getElementById('content')).getPropertyValue('--navbar-height'); 
197                const offsetHeaderRem = getComputedStyle(document.getElementById('content')).getPropertyValue('--header-height'); 
198                const documentFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize); 
199                const offsetNavbar = offsetNavbarRem.trim().replace('rem', '') * documentFontSize; 
200                const offsetHeader = offsetHeaderRem.trim().replace('rem', '') * documentFontSize; 
201                const y = scrollTarget.offsetTop; 
202                window.scroll({ 
203                    top: y, 
204                    behavior: 'smooth' 
205                }); 
206 
207                setTableOfContentItemActive(scrollTargetId); 
208                return false; 
209            }) 
210        }); 
211        const faqItems = document.querySelectorAll('.l3-article .magellan-accordion > .panel-header'); 
212        faqItems.forEach(function (item) { 
213            item.addEventListener('click', function (event) { 
214                item.classList.toggle('collapsed'); 
215                item.parentElement.querySelector('.panel-collapse').classList.toggle('collapse'); 
216            }); 
217        }); 
218 
219        HTMLElement.prototype.oldScrollIntoView = HTMLElement.prototype.scrollIntoView; 
220        HTMLElement.prototype.scrollIntoView = function () { 
221            if (this.id !== "p_p_id_${themeDisplay.portletDisplay.id}_") { 
222                HTMLElement.prototype.oldScrollIntoView(); 
223
224        }; 
225 
226        var sections = document.querySelectorAll('.l3-article .article-content > section'); 
227        sections.forEach(function (item) { 
228            var content = item.querySelector('.section-content'); 
229            if(content) { 
230                if(content.innerHTML.trim().length == 0) { 
231                    item.previousElementSibling.remove(); 
232                    content.remove(); 
233
234
235        }); 
236 
237    })(); 
238 
239</script>