An error occurred while processing the template.
The following has evaluated to null or missing:
==> SeparatorBackground.CantoUrl.UrlEternalMobile  [in template "20115#20151#196879" at line 151, column 34]

----
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: #if SeparatorBackground.CantoUrl.UrlE...  [in template "20115#20151#196879" at line 151, column 29]
----
1<#assign siteExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge() /> 
2<#assign new_restyle = (siteExpandoBridge.hasAttribute("new-restyle")?then(getterUtil.getBoolean(siteExpandoBridge.getAttribute("new-restyle", false)),false)) /> 
3<#if new_restyle?? && new_restyle> 
4 
5    <@leonardo.articleInfo .vars "(A, A1) Hero banner"/> 
6    <section class="sticky-container"> 
7 
8        <#if 
9        (SeparatorBackground.YoutubeId.getData() == "") && 
10        (SeparatorBackground.Video.getData() == "") && 
11        !((SeparatorBackground.CantoUrl)?? && SeparatorBackground.CantoUrl.getData() != "") && 
12        (!(SeparatorBackground.Image.getData()??) || SeparatorBackground.Image.getData() == "") 
13
14 
15            <div class="container-full-width header-safe-area black"> 
16                <div class="container no-side-padding hero-image black"> 
17                    <div class="text-content text-center hero-02-text-container"> 
18                        <#if Title.getData() != ""> 
19                            <h1 class="title-hero-02 m-0"><@leonardo.escapeTitle title=Title.getData()/></h1> 
20                        </#if> 
21                        <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
22                            <div class="body-medium text-center mt-4"> 
23                                <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''> 
24                                    <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br /> 
25                                </#if> 
26                                <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
27                                    <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/> 
28                                </#if> 
29                            </div> 
30                        </#if> 
31                    </div> 
32                </div> 
33            </div> 
34 
35        <#else> 
36 
37            <#if SeparatorBackground.YoutubeId.getData() == "" && SeparatorBackground.Video.getData() == "" && 
38            !((SeparatorBackground.CantoUrl)?? && SeparatorBackground.CantoUrl.getData() != "") && 
39            SeparatorBackground.Image.getData()?? && SeparatorBackground.Image.getData() != ""> 
40                <#assign scalingDetails = { 
41                "desktop": {"alternateImage": {}, "key": "h_560"}, 
42                "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_560"}, 
43                "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_560"}, 
44                "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "w_596"} 
45                }> 
46                <#assign slideImg = leonardo.adaptImage(SeparatorBackground.Image!, scalingDetails )> 
47                <!-- Image Banner --> 
48                <div class="container-full-width black hero-image-small <#if !(SeparatorBackground.Image.ImageM?has_content) || SeparatorBackground.Image.ImageM.getData() ==''>product</#if>"> 
49                    <div class="hero-bottom-gradient"> 
50                       <picture class="bg-picture"> 
51                            <source 
52                                    srcset="${slideImg.mobile?replace(" ", "%20")!}" 
53                                    media="(max-width: 576px)" 
54
55                            <source 
56                                    srcset="${slideImg.tablet_portrait?replace(" ", "%20")!}" 
57                                    media="(max-width: 768px)" 
58
59                            <source 
60                                    srcset="${slideImg.tablet_landscape?replace(" ", "%20")!}" 
61                                    media="(max-width: 1024px)" 
62
63                            <img 
64                                    class="img-fluid bg" 
65                                    src="${slideImg.desktop?replace(" ", "%20")!}" 
66                                    alt="${slideImg.alt_desktop!}" fetchpriority="high" loading="eager" 
67
68                        </picture> 
69 
70                        <div class="text-content container"> 
71                            <#if Title.getData() != ""> 
72                                <h1 class="title-hero-02 mb-0"><@leonardo.escapeTitle title=Title.getData()/></h1> 
73                            </#if> 
74                            <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
75                                <div class="body-medium text-center mt-4"> 
76                                    <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''> 
77                                        <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br /> 
78                                    </#if> 
79                                    <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
80                                        <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/> 
81                                    </#if> 
82                                </div> 
83                            </#if> 
84                        </div> 
85                    </div> 
86                </div> 
87                <#if SeparatorBackground.Image.ImageM.getData()?? && SeparatorBackground.Image.ImageM.getData() != ""> 
88                    <script> 
89                        window.addEventListener("load", () => { 
90                            const EXPECTED_HEIGHT = 844; 
91 
92                            const heroBlocks = document.querySelectorAll( 
93                                ".hero-image-small" 
94                            ); 
95                     
96                            heroBlocks.forEach((heroBlock) => { 
97                                const picture = heroBlock.querySelector("picture.bg-picture"); 
98                     
99                                if (!picture) return; 
100                     
101                                const mobileSource = Array.from(picture.querySelectorAll("source")).find( 
102                                    (source) => source.media && source.media.includes("max-width: 576px") 
103                                ); 
104                     
105                                if (!mobileSource) return; 
106                     
107                                const mobileSrc = (mobileSource.getAttribute("srcset") || "").trim(); 
108                     
109                                const imageElement = new Image(); 
110                     
111                                imageElement.onload = () => { 
112                                    const height = imageElement.naturalHeight; 
113                                    const isValidHeight = height >= EXPECTED_HEIGHT; 
114 
115                                    if (!isValidHeight) { 
116                                        heroBlock.classList.add("product"); 
117
118                     
119                                }; 
120                     
121                                imageElement.onerror = () => { 
122                                    console.warn("Errore nel caricamento della mobile image:", mobileSrc); 
123                                }; 
124                     
125                                imageElement.src = mobileSrc; 
126                            }); 
127                        }); 
128                    </script> 
129                </#if> 
130                 
131            <#elseif (SeparatorBackground.CantoUrl.getData())?has_content> 
132                <#assign autoplay = "" /> 
133                <#assign loop = "" /> 
134                <#assign bar = "" /> 
135                <#if (SeparatorBackground.CantoUrl.CantoAutoPlay.data)?has_content && getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoAutoPlay.getData())> 
136                    <#assign autoplay = "autoplay muted playsinline webkit-playsinline" /> 
137                </#if> 
138                <#if (SeparatorBackground.CantoUrl.CantoLoop.data)?has_content && getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoLoop.getData())> 
139                    <#assign loop = "loop" /> 
140                </#if> 
141                <#if (SeparatorBackground.CantoUrl.CantoControlBar.data)?has_content && getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData())> 
142                    <#assign bar = "controls='controls'" /> 
143                </#if> 
144 
145 
146                <!-- Canto Video Banner--> 
147                 
148                <div class="container-full-width header-safe-area black"> 
149                    <div class="hero-video hero-bottom-gradient <#if bar !=''>no-after</#if>"> 
150                        <video preload="auto" ${autoplay} ${loop} ${bar} <#if bar !=''>style="z-index:4"</#if>> 
151                            <#if SeparatorBackground.CantoUrl.UrlEternalMobile.getData() !=''> 
152                                <source 
153                                        src="${SeparatorBackground.CantoUrl.UrlEternalMobile.getData()}" 
154                                        media="(max-width: 575.98px)" 
155                                        type="video/mp4"> 
156                            </#if> 
157                            <source 
158                                    src="${SeparatorBackground.CantoUrl.getData()}" 
159                                    media="(min-width: 576px)" 
160                                    type="video/mp4"> 
161                        </video> 
162                        <div class="text-content container"> 
163                            <#if !(SeparatorBackground.CantoUrl.CantoControlBar.data?has_content 
164                            && getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData()))> 
165                                <#if Title.getData() != ""> 
166                                    <h1 class="title-hero-01 mb-0">${Title.getData()}</h1> 
167                                </#if> 
168                                <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
169                                    <div class="body-medium text-center mt-4"> 
170                                        <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''> 
171                                            <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br /> 
172                                        </#if> 
173                                        <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
174                                            <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/> 
175                                        </#if> 
176                                    </div> 
177                                </#if> 
178                            </#if> 
179                        </div> 
180                    </div> 
181                </div> 
182                <script> 
183                  const heroVideo = document.querySelector(".hero-video video"); 
184                  heroVideo.muted = true; 
185                  heroVideo.playsInline = true; 
186                  heroVideo.play().catch(() => {}); 
187                </script> 
188                
189            <#elseif (SeparatorBackground.YoutubeId.getData())?has_content > 
190                <!-- YT Video Banner --> 
191                <div class="container-full-width black"> 
192                    <div class="hero-video hero-bottom-gradient hero-yt <#if !getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())>no-after</#if>"> 
193                        <div class="yt-content"> 
194                            <div class="embed-responsive embed-responsive-16by9"> 
195                                <#assign autoplay = "" /> 
196                                <#assign mute = "" /> 
197 
198                                <#if getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())> 
199                                    <#assign autoplay = "?autoplay=1&mute=1&controls=0&rel=0" /> 
200                                <#elseif getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeMute.getData())> 
201                                    <#assign autoplay = "?mute=1&controls=1&rel=0" /> 
202                                <#else> 
203                                    <#assign autoplay = "?controls=1&rel=0" /> 
204                                </#if> 
205                                <iframe class="embed-responsive-item" width="100%" 
206                                        height="100%" 
207                                        title="<#if Title.getData() != ''>${Title.getData()}<#else>video youtube</#if>" 
208                                        frameborder="0" 
209                                        allow="autoplay; fullscreen; encrypted-media" 
210                                        allowfullscreen 
211                                        playsinline src="https://www.youtube.com/embed/${SeparatorBackground.YoutubeId.getData()}${autoplay}" 
212
213                                </iframe> 
214                            </div> 
215 
216                        </div> 
217                        <#if Title.getData() != "" || Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
218                            <#if getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())> 
219                                <div class="text-content container"> 
220                                    <#if Title.getData() != ""> 
221                                        <h1 class="title-hero-01 mb-0"><@leonardo.escapeTitle title=Title.getData()/></h1> 
222                                    </#if> 
223                                    <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
224                                        <div class="body-medium text-center mt-4"> 
225                                            <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''> 
226                                                <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br /> 
227                                            </#if> 
228                                            <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
229                                                <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/> 
230                                            </#if> 
231                                        </div> 
232                                    </#if> 
233                                </div> 
234                            </#if> 
235                        </#if> 
236                    </div> 
237                </div> 
238 
239            <#elseif SeparatorBackground.Video.getData() != ""> 
240                <!-- Video DM --> 
241                <div class="container-full-width black header-safe-area"> 
242                    <div class="hero-video hero-bottom-gradient"> 
243                        <video preload="auto" src="${SeparatorBackground.Video.getData()}" <#if SeparatorBackground.Video.VideoType.getData() !=''> 
244                            type="${SeparatorBackground.Video.VideoType.getData()}"</#if> muted autoplay loop> 
245                        </video> 
246                        <div class="text-content container"> 
247                            <#if Title.getData() != ""> 
248                                <h1 class="title-hero-01 mb-0"><@leonardo.escapeTitle title=Title.getData()/></h1> 
249                            </#if> 
250                            <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !='' || Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
251                                <div class="body-medium text-center mt-4"> 
252                                    <#if Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''> 
253                                        <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br /> 
254                                    </#if> 
255                                    <#if Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
256                                        <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/> 
257                                    </#if> 
258                                </div> 
259                            </#if> 
260                        </div> 
261                    </div> 
262                </div> 
263            </#if> 
264        </#if> 
265        <#if Title.TextUnderHero?? && Title.TextUnderHero.getData() !=''> 
266            <div class="static-text"> 
267                <div class="container-full-width"> 
268                    <div class="container"> 
269                        <div class="title-medium"> 
270                            <#if Title.TextUnderHero?? && Title.TextUnderHero.getData() !=''> 
271                                ${Title.TextUnderHero.getData()} 
272                            <#elseif Title.DescriptionLeft.getData()?? && Title.DescriptionLeft.getData() !=''> 
273                                <@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/><br /> 
274                            <#elseif Title.DescriptionRight.getData()?? && Title.DescriptionRight.getData() !=''> 
275                                <@leonardo.escapeTitle title=Title.DescriptionRight.getData()/> 
276                            </#if> 
277                        </div> 
278                    </div> 
279                </div> 
280            </div> 
281        </#if> 
282    </section> 
283    <#if Title.TextUnderHero?? && Title.TextUnderHero.getData() !=''> 
284        <script> 
285            window.addEventListener('load', () => { 
286                const text = document.querySelector('.sticky-container .static-text'); 
287                const menu = document.querySelector('.menu-fixed-grey'); 
288 
289                if (text && menu) { 
290                    const heightText = text.offsetHeight; 
291                    const currentBottom = parseFloat(getComputedStyle(menu).bottom) || 0; 
292                    menu.style.bottom = (currentBottom + heightText) + 'px'; 
293
294            }); 
295        </script> 
296    </#if> 
297 
298<#else> 
299  <@leonardo.articleInfo .vars "(A, A1) Hero banner"/> 
300 
301  <style> 
302  html.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:hover, 
303  html.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:active, 
304  html.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:focus, 
305  body.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:hover, 
306  body.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:active, 
307  body.leo18 .leonardocompany .hero-slide .hero-slide--content--title a.title-cta:focus { 
308      text-decoration: inherit; 
309      color: inherit; 
310
311 
312 
313  </style> 
314 
315 
316  <#assign noOpacity = "${randomNamespace}opacity"> 
317 
318  <#if (SeparatorBackground.Image.disableOpacityFilter.data)?has_content && getterUtil.getBoolean(SeparatorBackground.Image.disableOpacityFilter.getData()) > 
319      <style> 
320      html.leo18.dark-theme body #wrapper.leonardocompany .hero .hero-slide.${noOpacity}::before { 
321          background-color: rgba(0, 0, 0, 0); 
322
323      </style> 
324  </#if> 
325 
326  <#assign rndNamespace = randomNamespace> 
327 
328  <#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
329  <#assign currentGroupExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge()> 
330  <#assign isDarkTheme = false> 
331 
332  <#if currentGroupExpandoBridge.hasAttribute("dark-theme")> 
333      <#assign isDarkTheme = currentGroupExpandoBridge.getAttribute("dark-theme", false)> 
334  </#if> 
335 
336  <div class="section-container section-container--fluid herobanner"> 
337 
338    <#if SeparatorBackground.Image.getData()?? && SeparatorBackground.Image.getData() != "" > 
339      <#if (SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData())> 
340        <#assign scalingDetails = { 
341           "desktop": {"alternateImage": {}, "key": "w_1440"}, 
342           "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_400"}, 
343           "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_1024"}, 
344           "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "h_560"} 
345        }> 
346      <#else> 
347        <#assign scalingDetails = { 
348           "desktop": {"alternateImage": {}, "key": "w_1440"}, 
349           "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_703"}, 
350           "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_959"}, 
351           "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "h_602"} 
352        }> 
353      </#if> 
354      <#assign slideImg = leonardo.adaptImage(SeparatorBackground.Image!, scalingDetails )> 
355    </#if> 
356 
357    <#if SearchBox?? && getterUtil.getBoolean(SearchBox.getData())> 
358      <#if SeparatorBackground.Image.getData()?? && SeparatorBackground.Image.getData() != "" > 
359        <div class="search-widget-local heroSearchWidget" 
360           data-img-url-d="${slideImg.desktop!}" 
361           data-img-url-tl="${slideImg.tablet_landscape!}" 
362           data-img-url-tp="${slideImg.tablet_portrait!}" 
363           data-img-url-m="${slideImg.mobile!}" 
364           style='' 
365
366        <noscript> 
367          <img src="${slideImg.desktop!}" alt='${slideImg.alt_desktop!}'> 
368          <img src="${slideImg.tablet_landscape!}" alt='${slideImg.alt_landscape! slideImg.alt_tablet_landscape!}'> 
369          <img src="${slideImg.tablet_portrait!}" alt='${slideImg.alt_tablet_portrait! slideImg.alt_tablet_portrait!}'> 
370          <img src="${slideImg.mobile!}" alt='${slideImg.alt_mobile! slideImg.alt_mobile!}'> 
371        </noscript> 
372      <#else> 
373      <div class="search-widget-local"> 
374      </#if> 
375      <#if isDarkTheme> 
376              <#if Title.preTitle ?? && Title.preTitle.getData() != ""> 
377                  <div class="hero-slide--content--pre-title">${Title.preTitle.getData()}</div> 
378              </#if> 
379          </#if> 
380      <#if Title.getData() != ""> 
381        <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())> 
382          <h1 class="search-widget-local--title"><@leonardo.escapeTitle title=Title.getData()/></h1> 
383        <#else> 
384          <div class="search-widget-local--title"><@leonardo.escapeTitle title=Title.getData()/></div> 
385        </#if> 
386      </#if> 
387        <div class="search-widget-local--content"> 
388        <label class="search-widget-local--content--search-label" for="inp-search-local">Enter search text</label> 
389        <#if SearchBox.Placeholder?? && SearchBox.Placeholder.getData() != "" && SearchBox.ClusterID?? && SearchBox.ClusterID.getData() != "" > 
390          <input autofocus class="search-widget-local--content--search-text" id="inp-search-local" type="text" maxlength="50" 
391            placeholder="${SearchBox.Placeholder.getData()!}" data-cluster-id="${SearchBox.ClusterID.getData()!}"/> 
392          <!-- Cluster ID: ${SearchBox.ClusterID.getData()!} --> 
393          <a class="search-widget-local--content--search-icon" href="javascript: void(0)" title="Search" data-cluster-id="${SearchBox.ClusterID.getData()!}"> 
394             <svg xmlns="http://www.w3.org/2000/svg" width="17" height="16" viewBox="0 0 17 16"> 
395              <path fill="#FFF" fill-rule="evenodd" d="M6.88 1.729c2.784 0 5.047 2.103 5.047 4.69 0 2.585-2.263 4.689-5.046 4.689-2.783 0-5.047-2.104-5.047-4.69 0-2.586 2.264-4.69 5.047-4.69m9.953 12.79l-4.51-4.213.279-.352.007-.01c.05-.062.1-.124.148-.188l.004-.006c1.766-2.36 1.375-5.696-.961-7.867C10.495.668 8.759 0 6.913 0 5.066 0 3.33.668 2.025 1.881.719 3.095 0 4.708 0 6.424c0 1.716.719 3.329 2.025 4.542 1.302 1.21 3.034 1.877 4.876 1.877a7.396 7.396 0 0 0 3.189-.722c.11-.058.438-.235.702-.433l4.58 4.159a.6.6 0 0 0 .39.153.547.547 0 0 0 .371-.149l.23-.205c.174-.156.358-.32.49-.443.255-.238.131-.537-.019-.685"/> 
396            </svg> 
397          </a> 
398        </#if> 
399        </div> 
400      </div> 
401    <#elseif SeparatorBackground.YoutubeId.getData() == "" && SeparatorBackground.Video.getData() == "" && 
402     !((SeparatorBackground.CantoUrl)?? && SeparatorBackground.CantoUrl.getData() != "") && 
403     SeparatorBackground.Image.getData()?? && SeparatorBackground.Image.getData() != ""> 
404      <!-- Image Banner --> 
405      <div class="hero"> 
406        <div class="hero-slide ${noOpacity} ${((SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData()))?then('hero-slide--internal','')}" 
407           data-img-url-d="${slideImg.desktop!}" 
408           data-img-url-tl="${slideImg.tablet_landscape!}" 
409           data-img-url-tp="${slideImg.tablet_portrait!}" 
410           data-img-url-m="${slideImg.mobile!}" 
411           style='' 
412
413        <noscript> 
414          <img src="${slideImg.desktop!}" alt='${slideImg.alt_desktop!}'> 
415          <img src="${slideImg.tablet_landscape!}" alt='${slideImg.alt_landscape! slideImg.alt_tablet_landscape!}'> 
416          <img src="${slideImg.tablet_portrait!}" alt='${slideImg.alt_tablet_portrait! slideImg.alt_tablet_portrait!}'> 
417          <img src="${slideImg.mobile!}" alt='${slideImg.alt_mobile! slideImg.alt_mobile!}'> 
418        </noscript> 
419 
420          <#if Title.getData() != "" || LinkTitle.getData() != "" || (CountdownDate.data)?has_content> 
421          <div class="hero-slide--content"> 
422              <#if isDarkTheme> 
423                          <#if Title.preTitle ?? && Title.preTitle.getData() != ""> 
424                              <div class="hero-slide--content--pre-title">${Title.preTitle.getData()}</div> 
425                          </#if> 
426                      </#if> 
427            <#if Title.getData() != ""> 
428              <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())> 
429                <h1 class="hero-slide--content--title"> 
430              <#else> 
431                <div class="hero-slide--content--title"> 
432              </#if> 
433              <#if LinkTitle.getData() != "" > 
434                <a class="title-cta" 
435                  href="${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}" 
436                  title="${LinkTitle.getData()}" 
437                  target="${leonardo.getTarget(LinkTitle.OpenLink!)}" 
438
439              </#if> 
440 
441              <@leonardo.escapeTitle title=Title.getData()/> 
442 
443              <#if LinkTitle.getData() != "" > 
444                </a> 
445              </#if> 
446 
447              <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())> 
448                </h1> 
449              <#else> 
450                </div> 
451              </#if> 
452              <#if Title.DescriptionLeft.getData() != "" || Title.DescriptionRight.getData() != ""> 
453                <div class="hero-slide--content--descriptions"> 
454                  <#if Title.DescriptionLeft.getData() != ""> 
455                    <div class="hero-slide--content--description"><@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/></div> 
456                  </#if> 
457                  <#if Title.DescriptionRight.getData() != ""> 
458                    <div class="hero-slide--content--description"><@leonardo.escapeTitle title=Title.DescriptionRight.getData()/></div> 
459                  </#if> 
460                </div> 
461              </#if> 
462            </#if> 
463            <#if LinkTitle.getData() != "" > 
464              <div class="hero-slide--content--cta"> 
465                <a class="btn btn-leo btn-leo-transparent" 
466                  href="${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}" 
467                  title="${LinkTitle.getData()}" 
468                  target="${leonardo.getTarget(LinkTitle.OpenLink!)}" 
469
470                  ${LinkTitle.getData()} 
471                </a> 
472              </div> 
473            </#if> 
474          </div> 
475          </#if> 
476        </div> 
477        <#if (CountdownDate.data)?has_content > 
478 
479          <style> 
480            @media (max-width: 767px){ 
481              .leo18 .hero .hero-share { bottom: 100px; } 
482
483          </style> 
484 
485          <#assign currentDate = .now?long> 
486          <#assign eventDate = CountdownDate.data?datetime("yyyy-MM-dd")?long> 
487          <#if (CountdownDate.Hours)?has_content && (CountdownDate.Minutes)?has_content > 
488            <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Hours.getData())*60*60*1000))?long> 
489            <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Minutes.getData())*60*1000))?long> 
490          </#if> 
491          <#assign countdown = ((eventDate - currentDate)/(1000))?int > 
492          <#if countdown gte 0 > 
493            <div class="countdown-widget hidden" data-time-left="${countdown}"> 
494              <div class="section-container section-container--fluid"> 
495                <div class="countdown-widget--wrap"> 
496                  <div class="countdown-widget--title"><@leonardo.escapeTitle title=CountdownDate.Text.data!/></div> 
497                  <div class="countdown-widget--counters"> 
498                    <div class="countdown-widget--counters--counter days"> 
499                      <div class="countdown-widget--counters--counter--val"> </div> 
500                      <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "days")}</div> 
501                    </div> 
502                    <div class="countdown-widget--counters--counter hours"> 
503                      <div class="countdown-widget--counters--counter--val"> </div> 
504                      <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "hours")}</div> 
505                    </div> 
506                    <div class="countdown-widget--counters--counter minutes"> 
507                      <div class="countdown-widget--counters--counter--val"> </div> 
508                      <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "minutes")}</div> 
509                    </div> 
510                    <#if (CountdownDate.ShowSeconds)?has_content && getterUtil.getBoolean(CountdownDate.ShowSeconds.getData()) > 
511                      <div class="countdown-widget--counters--counter seconds"> 
512                        <div class="countdown-widget--counters--counter--val"> </div> 
513                        <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "seconds")}</div> 
514                      </div> 
515                    </#if> 
516                  </div> 
517                </div> 
518              </div> 
519            </div> 
520          </#if> 
521        </#if> 
522        <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) > 
523          <@leonardo.shareLinkHero/> 
524        </#if> 
525      </div> 
526 
527    <#elseif (SeparatorBackground.CantoUrl.getData())?has_content> 
528      <!-- Canto Video Banner --> 
529      <#assign scalingDetails = { 
530         "desktop": {"alternateImage": {}, "key": "w_1440"}, 
531         "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_703"}, 
532         "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_959"}, 
533         "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "h_602"} 
534      }> 
535      <#assign slideImg = leonardo.adaptImage(SeparatorBackground.Image!, scalingDetails )> 
536 
537      <#if (CountdownDate.data)?has_content > 
538          <style> 
539            @media (max-width: 767px){ 
540              .leo18 .hero .hero-share { bottom: 100px; } 
541
542          </style> 
543      </#if> 
544 
545      <div class="hero"> 
546        <div class="leo-video canto-video ${((SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData()))?then('video-little-size','')} ${((!getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData())) && (getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoAutoPlay.getData())))?then('no-pause','')}" 
547          data-video-data='{ 
548            &quot;type&quot;:&quot;video&quot;, 
549            &quot;showControls&quot;:${(getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoControlBar.getData()))?then("1","0")}, 
550            &quot;videoSources&quot;:[ 
551                "${SeparatorBackground.CantoUrl.getData()!}" 
552            ], 
553            &quot;posters&quot;:{ 
554              &quot;desktop&quot;:&quot;${slideImg.desktop!}&quot;, 
555              &quot;tabletLandscape&quot;:&quot;${slideImg.tablet_landscape!}&quot;, 
556              &quot;tabletPortrait&quot;:&quot;${slideImg.tablet_portrait!}&quot;, 
557              &quot;mobile&quot;:&quot;${slideImg.mobile!}&quot; 
558            }, 
559            &quot;content&quot;:{ 
560              &quot;heading&quot;:&quot;<@leonardo.escapeTitle title=(Title.getData()!"")?html/>&quot;, 
561              &quot;descriptions&quot;:[&quot;${((Title.DescriptionLeft.getData())!"")?html?html}&quot;, &quot;${((Title.DescriptionRight.getData())!"")?html?html}&quot;], 
562              &quot;cta&quot;:{ 
563                &quot;url&quot;:&quot;${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}&quot;, 
564                &quot;title&quot;:&quot;${(LinkTitle.getData()!"")?html?html}&quot;, 
565                &quot;target&quot;:&quot;${leonardo.getTarget(LinkTitle.OpenLink!)}&quot; 
566
567              <#if (CountdownDate.data)?has_content > 
568                <#assign currentDate = .now?long> 
569                <#assign eventDate = CountdownDate.data?datetime("yyyy-MM-dd")?long> 
570                <#if (CountdownDate.Hours)?has_content && (CountdownDate.Minutes)?has_content > 
571                  <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Hours.getData())*60*60*1000))?long> 
572                  <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Minutes.getData())*60*1000))?long> 
573                </#if> 
574                <#assign countdown = ((eventDate - currentDate)/(1000))?int > 
575                <#if countdown gte 0 > 
576                ,&quot;countdown&quot;:{ 
577                  &quot;countdown&quot;:&quot;${countdown}&quot;, 
578                  &quot;title&quot;:&quot;<@leonardo.escapeTitle title=(CountdownDate.Text.data!)?html/>&quot;, 
579                  &quot;days&quot;:&quot;${languageUtil.get(locale, "days")}&quot;, 
580                  &quot;hours&quot;:&quot;${languageUtil.get(locale, "hours")}&quot;, 
581                  &quot;minutes&quot;:&quot;${languageUtil.get(locale, "minutes")}&quot;, 
582                  &quot;seconds&quot;:&quot;${languageUtil.get(locale, "seconds")}&quot;, 
583                  &quot;showSeconds&quot;:${((CountdownDate.ShowSeconds)?has_content && getterUtil.getBoolean(CountdownDate.ShowSeconds.getData()))?then("1","0")} 
584
585                </#if> 
586              </#if> 
587
588          }' 
589            <#if (SeparatorBackground.CantoUrl.CantoAutoPlay.getData())?has_content> 
590                data-autoplay="${(getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoAutoPlay.getData()))?then('1','0')}", 
591            </#if> 
592            <#if (SeparatorBackground.CantoUrl.CantoLoop.getData())?has_content> 
593                data-loop="${(getterUtil.getBoolean(SeparatorBackground.CantoUrl.CantoLoop.getData()))?then('1','0')}", 
594            </#if> 
595          data-playsinline="1", 
596          data-title-tag="div"> 
597 
598        </div> 
599        <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) > 
600          <@leonardo.shareLinkHero/> 
601        </#if> 
602      </div> 
603    <#elseif (SeparatorBackground.YoutubeId.getData())?has_content > 
604      <!-- YT Video Banner --> 
605      <div class="hero"> 
606        <div class="hero-slide"> 
607          <div class="youtube-player-container" 
608            data-img-url-d="${(slideImg.desktop)!}" 
609            data-img-url-tl="${(slideImg.tablet_landscape)!}" 
610            data-img-url-tp="${(slideImg.tablet_portrait)!}" 
611            data-img-url-m="${(slideImg.mobile)!}" 
612            data-div-id="${randomNamespace}${SeparatorBackground.YoutubeId.getData()!}" 
613            data-video-id="${SeparatorBackground.YoutubeId.getData()!}" 
614            <#if (SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())?has_content> 
615              data-video-autoplay="${(getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData()))?then('1','0')}" 
616            </#if> 
617            <#if (SeparatorBackground.YoutubeId.YoutubeMute.getData())?has_content> 
618              data-video-mute="${(getterUtil.getBoolean(SeparatorBackground.YoutubeId.YoutubeMute.getData()))?then('1','0')}" 
619            </#if> 
620            data-use-no-cookie-domain="true"> 
621            <div class="youtube-player" id="${randomNamespace}${SeparatorBackground.YoutubeId.getData()!}" data-use-no-cookie-domain="true"></div> 
622          </div> 
623          <#if isDarkTheme> 
624                      <#if Title.preTitle ?? && Title.preTitle.getData() != ""> 
625                          <div class="hero-slide--content--pre-title">${Title.preTitle.getData()}</div> 
626                      </#if> 
627                  </#if> 
628          <#if Title.getData() != ""> 
629            <div class="hero-slide--content"> 
630              <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())> 
631                <h1 class="hero-slide--content--title"><@leonardo.escapeTitle title=Title.getData()/></h1> 
632              <#else> 
633                <div class="hero-slide--content--title"><@leonardo.escapeTitle title=Title.getData()/></div> 
634              </#if> 
635            </div> 
636          </#if> 
637        </div> 
638        <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) > 
639          <@leonardo.shareLinkHero/> 
640        </#if> 
641      </div> 
642 
643    <#elseif SeparatorBackground.Video.getData() != ""> 
644      <!-- Internal Video Banner --> 
645      <#assign scalingDetails = { 
646         "desktop": {"alternateImage": {}, "key": "w_1440"}, 
647         "tl": {"alternateImage": SeparatorBackground.Image.ImageTl!, "key": "h_703"}, 
648         "tp": {"alternateImage": SeparatorBackground.Image.ImageTp!, "key": "h_959"}, 
649         "mobile": {"alternateImage": SeparatorBackground.Image.ImageM!, "key": "h_602"} 
650      }> 
651      <#assign slideImg = leonardo.adaptImage(SeparatorBackground.Image!, scalingDetails )> 
652 
653      <#if SeparatorBackground.Video.getSiblings()?has_content> 
654        <#assign videoStr = ""> 
655        <#list SeparatorBackground.Video.getSiblings() as cur_Video> 
656          <#assign videoFile = cur_Video.getData()> 
657          <#assign videoFileType = cur_Video.VideoType.getData()> 
658          <#if videoStr?? && videoStr != ""> 
659            <#assign videoStr = videoStr + ","> 
660          </#if> 
661          <#assign videoStr = videoStr + "{&quot;src&quot;:&quot;" + videoFile + "&quot;,&quot;type&quot;:&quot;" + videoFileType + "&quot;}"> 
662        </#list> 
663      </#if> 
664 
665      <div class="hero"> 
666        <div class="leo-video ${((SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData()))?then('video-little-size','')}" 
667          data-video-data="{ 
668            &quot;type&quot;:&quot;video&quot;, 
669            &quot;showControls&quot;:false, 
670            &quot;videoSources&quot;:[ 
671              ${videoStr} 
672            ], 
673            &quot;posters&quot;:{ 
674              &quot;desktop&quot;:&quot;${slideImg.desktop!}&quot;, 
675              &quot;tabletLandscape&quot;:&quot;${slideImg.tablet_landscape!}&quot;, 
676              &quot;tabletPortrait&quot;:&quot;${slideImg.tablet_portrait!}&quot;, 
677              &quot;mobile&quot;:&quot;${slideImg.mobile!}&quot; 
678            }, 
679            &quot;content&quot;:{ 
680              &quot;heading&quot;:&quot;<@leonardo.escapeTitle title=(Title.getData()!"")?html/>&quot; 
681            }}" 
682 
683          <#if (SeparatorBackground.YoutubeId.YoutubeAutoPlay.getData())?has_content> 
684            data-autoplay="true" 
685          </#if> 
686          data-title-tag="div"> 
687 
688        </div> 
689        <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) > 
690          <@leonardo.shareLinkHero/> 
691        </#if> 
692      </div> 
693    <#else> 
694      <!-- Black Banner --> 
695      <div class="hero"> 
696        <div class="hero-slide ${((SeparatorBackground.HalfSize.data)?has_content && getterUtil.getBoolean(SeparatorBackground.HalfSize.getData()))?then('hero-slide--internal','')}" 
697           style='background-color:#000000;'> 
698          <#if Title.getData() != "" || LinkTitle.getData() != "" || (CountdownDate.data)?has_content> 
699          <div class="hero-slide--content"> 
700              <#if isDarkTheme> 
701                  <#if Title.preTitle ?? && Title.preTitle.getData() != ""> 
702                      <div class="hero-slide--content--pre-title">${Title.preTitle.getData()}</div> 
703                  </#if> 
704              </#if> 
705            <#if Title.getData() != ""> 
706              <#if Title.isH1?? && getterUtil.getBoolean(Title.isH1.getData())> 
707                <h1 class="hero-slide--content--title"><@leonardo.escapeTitle title=Title.getData()/></h1> 
708              <#else> 
709                <div class="hero-slide--content--title"><@leonardo.escapeTitle title=Title.getData()/></div> 
710              </#if> 
711              <#if Title.DescriptionLeft.getData() != "" || Title.DescriptionRight.getData() != ""> 
712                <div class="hero-slide--content--descriptions"> 
713                  <#if Title.DescriptionLeft.getData() != ""> 
714                    <div class="hero-slide--content--description"><@leonardo.escapeTitle title=Title.DescriptionLeft.getData()/></div> 
715                  </#if> 
716                  <#if Title.DescriptionRight.getData() != ""> 
717                    <div class="hero-slide--content--description"><@leonardo.escapeTitle title=Title.DescriptionRight.getData()/></div> 
718                  </#if> 
719                </div> 
720              </#if> 
721            </#if> 
722            <#if LinkTitle.getData() != "" > 
723              <div class="hero-slide--content--cta"> 
724                <a class="btn btn-leo btn-leo-transparent" 
725                  href="${leonardo.getTargetUrl(LinkTitle.LinkToUrl!, LinkTitle.LinkToPage!)}" 
726                  title="${LinkTitle.getData()}" 
727                  target="${leonardo.getTarget(LinkTitle.OpenLink!)}" 
728
729                  ${LinkTitle.getData()} 
730                </a> 
731              </div> 
732            </#if> 
733          </div> 
734          </#if> 
735        </div> 
736        <#if (CountdownDate.data)?has_content > 
737          <#assign currentDate = .now?long> 
738          <#assign eventDate = CountdownDate.data?datetime("yyyy-MM-dd")?long> 
739          <#if (CountdownDate.Hours)?has_content && (CountdownDate.Minutes)?has_content > 
740            <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Hours.getData())*60*60*1000))?long> 
741            <#assign eventDate = (eventDate + (getterUtil.getLong(CountdownDate.Minutes.getData())*60*1000))?long> 
742          </#if> 
743          <#assign countdown = ((eventDate - currentDate)/(1000))?int > 
744          <#if countdown gte 0 > 
745            <div class="countdown-widget hidden" data-time-left="${countdown}"> 
746              <div class="section-container section-container--fluid"> 
747                <div class="countdown-widget--wrap"> 
748                  <div class="countdown-widget--title"><@leonardo.escapeTitle title=CountdownDate.Text.data!/></div> 
749                  <div class="countdown-widget--counters"> 
750                    <div class="countdown-widget--counters--counter days"> 
751                      <div class="countdown-widget--counters--counter--val"> </div> 
752                      <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "days")}</div> 
753                    </div> 
754                    <div class="countdown-widget--counters--counter hours"> 
755                      <div class="countdown-widget--counters--counter--val"> </div> 
756                      <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "hours")}</div> 
757                    </div> 
758                    <div class="countdown-widget--counters--counter minutes"> 
759                      <div class="countdown-widget--counters--counter--val"> </div> 
760                      <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "minutes")}</div> 
761                    </div> 
762                    <#if (CountdownDate.ShowSeconds)?has_content && getterUtil.getBoolean(CountdownDate.ShowSeconds.getData()) > 
763                      <div class="countdown-widget--counters--counter seconds"> 
764                        <div class="countdown-widget--counters--counter--val"> </div> 
765                        <div class="countdown-widget--counters--counter--label">${languageUtil.get(locale, "seconds")}</div> 
766                      </div> 
767                    </#if> 
768                  </div> 
769                </div> 
770              </div> 
771            </div> 
772          </#if> 
773        </#if> 
774        <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) > 
775          <@leonardo.shareLinkHero/> 
776        </#if> 
777      </div> 
778    </#if> 
779  </div> 
780 
781  <#if (ShareLink.data)?has_content && getterUtil.getBoolean(ShareLink.getData()) > 
782    <!-- Social Sharing --> 
783    <#assign imageFileName = (slideImg.desktop)!"" > 
784    <#assign shareTitle = (Title.getData())!""> 
785    <#assign shareDescription = ((Title.DescriptionLeft.getData())!"") + " " + ((Title.DescriptionRight.getData() )!"")> 
786    <#assign ogType='article'> 
787    <@leonardo.socialShareMetaAndLinks shareTitle=shareTitle shareDescription=shareDescription?trim imageFileName=imageFileName ogType=ogType /> 
788  </#if> 
789</#if> 

2003 - 2017 - Company

International Development and the ‘One Company’
8Y5A5750

Eurofighter Typhoon in flight. Leonardo delivered about 36% of the value of the programme, with a key role in the aeronautics and electronics component. 

 

“How did an Italian conglomerate that, until last year, was largely considered an also-ran in the cutting-edge defence and aerospace industry suddenly become the largest supplier of the most sophisticated parts of Europe’s premier military programme? The answer reveals one of the most remarkable reversals of fortune in the recent history of the European defence sector, one that signals a shift in who builds and sells the continent’s largest and most important weapons. Through a series of bold and sometimes costly restructurings and acquisitions – particularly in the UK, where over the past nine months it has spent more than £1.6bn ($2.9bn, €2.4bn) to become, by some measures, the second largest defence group in the country – Finmeccanica has thrust itself into the centre of what many expect to be the second large-scale consolidation the European sector has seen in a decade”.

 

Taken from:
‘Rising stars: an acquisitive Finmeccanica thrusts into Europe’s defence dogfight (Peter Spiegel, Financial Times, 24 August 2005). Download the article here

Finmeccanica launched a policy of agreements and acquisitions, taking part in the reorganisation of the European aerospace industry and progressively emerging as a global player in Aerospace, Defence and Security. This included the takeover of the UK helicopter company Westland and of BAE Systems’ assets in defence electronics, and the Space Alliance with Thales for satellite services and space manufacturing. It gained further expertise in defence electronics with the US company DRS Technologies, and in helicopters with the Polish company PZL-Świdnik.

Following the 2009 international financial crisis, with shrinking budgets and intensifying global competition, the watchword became asset rationalisation. This decision led to the company’s exit from the energy and transport sectors and its reorganisation into One Company, transforming its subsidiaries into operating divisions. The aim was to strengthen competitiveness and investment capacity by moving towards innovative technology cycles in relation to the increasing digitisation in Space, cybersecurity and industrial design. The company’s rebranding as Leonardo in 2016 was the ideal culmination of this transformation.

FALCO_Immagine4

2003

The first FALCO prototype takes off: the drone era begins

The FALCO, progenitor of a family of Uncrewed Aerial Vehicles intended for reconnaissance, surveillance and intelligence missions, made its maiden flight from the Interforce Firing Range of Salto di Quirra in Sardinia. Its technological evolution led Finmeccanica to be the only European company capable of supplying end-to-end remote piloting solutions, also integrating platforms, radar and electro-optical sensors and ground mission and control systems.

Flight of the first FALCO prototype, Salto di Quirra, Sardinia, 2003
1st Flight M346 15

2004

First flight of the M-346 trainer

The M-346 introduced innovations in its category, such as digital fly-by-wire controls and the ETTS (Embedded Tactical Training System) training system that enabled the aircraft to emulate sensors, armaments and CGFs (Computer Generated Forces). It also enabled pilots to operate simultaneously, and in combination, in Live (real flight), Virtual (various types of simulators) and Constructive (interfacing with any computer-generated force/threat) modes.

First flight of the M-346, Venegono Superiore (VA), 15 July 2004
AW139 31005 Piemonte_0002

2004

The AB139 enters into service

The AB139, renamed the AW139 in 2005, is a multi-role helicopter (rescue, medical intervention, public safety, offshore), the world’s best-in-class aircraft. Its strong point lies in the main rotor transmissions, fruit of a technological innovation launched in the 1970s and then extended to later models. In the event of a loss of lubricant, the transmissions provide the AW139 with sixty minutes of run-dry time, flying safely well beyond the minimum standard of thirty minutes set by the regulators.

AB139 helicopter in flight over the mountains of Piedmont, 2010
Leonardo_AtomicClock_PHM_Galileo_Nerviano (1)

2005

The first PHM (Passive Hydrogen Maser) atomic clock passes all tests

The Passive Hydrogen Maser was launched in 2008 aboard Giove-B, the second experimental satellite of the Galileo constellation, Europe’s satellite navigation system. The PHM ‘marks the time’ of all satellites in the constellation with greater precision than any previous space clock, having a deviation of one second every three million years. This ensures maximum accuracy in Galileo’s ground-based geo-localisation and satellite navigation services.

Atomic Passive Hydrogen Maser clock manufactured at the Leonardo factory in Nerviano, Milan
B787_03 SAV_0008 - 2006

2006

One Piece Barrel technology for the Boeing 787

The One Piece Barrel manufacturing process was first used in the aeronautical sector at the Monteiasi-Grottaglie plant in Puglia. This involves manufacturing the fuselage trunk of the Boeing 787 Dreamliner commercial aircraft as one piece entirely from Carbon Fibre Reinforced Plastic (CFRP) composite material.

Work on the Boeing 787 Dreamliner fuselage sections, Alenia, Grottaglie plant, Taranto, 2006
KRONOS Ritoccata

2006

Design work on the three-dimensional KRONOS radar begins

Designed on the basis of experience gained with EMPAR radars, KRONOS is a three-dimensional, multi-mission radar for land and naval use. Based on Active Electronically Scanned Array (AESA) technology, KRONOS detects, identifies and tracks airborne and naval objects as well as providing information on targets and weapon systems. The development of AESA technology was enabled by research and investment in microelectronic components made of gallium arsenide (GaAs), which later evolved into gallium nitride (GaN), at the company’s in-house foundry, a distinctive asset at European level.

KRONOS, three-dimensional C-band, medium-range multi-role radar
Cosmo SkyMed

2007

The first satellite of the COSMO-SkyMed constellation is launched into orbit

The first of four COSMO-SkyMed satellites, the most powerful and versatile space-based Earth observation system ever built, was launched. Unlike optical satellites, it features Synthetic Aperture Radar (SAR) sensors, an innovative technology allowing it to operate in all weather conditions. The constellation’s ‘four eyes’ can thus penetrate the clouds and also see in the dark.

The COSMO-SkyMed satellites, designed from the outset for dual use, were built in the Turin facilities of Thales Alenia Space
Cupola with Clouds and Ocean

2010

A Cupola to look out into Space

Cupola, a module that allows astronauts to see directly outside, docks with the International Space Station (ISS). Manufactured in the Turin facilities of Thales Alenia Space, Cupola enables the monitoring of extra-vehicular activities, docking operations, and the mechanical arm of the International Space Station. It is from here that astronauts take photographs of the Earth and other celestial bodies.

View from the Cupola of the International Space Station over clouds and ocean, Low Earth Orbit - 2017 photo by Paolo Nespoli, Courtesy NASA and ASI
Galileo control centre,

2010

The Telespazio Galileo Control Centre opens in Fucino

The Galileo Control Centre, at the Telespazio Space Centre in Fucino (L’Aquila), operates in parallel with the Control Centre in Oberpfaffenhofen (Munich), built by DLR-GfR, a German Space Agency company, in managing the Galileo programme’s satellite constellation and mission. Galileo is the European Union’s satellite navigation system, which provides a reliable and highly accurate global navigation and localisation service. The Passive Hydrogen Maser (PHM) atomic clock, designed and built by Leonardo at the company’s site at Nerviano (Milan), provides accurate time measurement. In operation since 2010, the Italian Centre was expanded in 2021, with new control rooms and operational areas covering 6,000 square metres.

The Telespazio Galileo Control Centre at Fucino (L’Aquila). Spaceopal, on behalf of the European Union Agency for the Space Programme – EUSPA, is in charge of operations, the integrated logistics of the entire Galileo system, the management of the global communication network, and the system’s IT security.
FREMM - F590 - 4256x2832

2011

Launch of the first FREMM

The Carlo Bergamini, the first Italian ship in the European FREMM (European Multi-Mission Frigate) programme built in joint venture with Fincantieri, was launched on 16 July at the Riva Trigoso shipyard (Genoa). It was equipped with the multifunction EMPAR Radar and Finmecanica’s world-leading defence systems, including the MU-90 torpedo and the 76/62 Super Rapid and 127/64 naval guns.

The Carlo Bergamini at sea, in service since July 2012 with the Italian Navy
ATR numero 1000_2328018_fin

2012

The thousandth ATR fuselage built at the Pomigliano d’Arco (NA) plant

The ATR consortium, an equal joint venture between Finmeccanica and Airbus, is the world’s leading regional turboprop aircraft manufacturer. Alenia Aermacchi manufactures the entire fully equipped fuselage and vertical and horizontal tailpipes for all ATR aircraft, the latter with the highest percentage of advanced composite materials in its class. Thanks to the efficiency of their turboprop engines, ATRs consume up to 40% less fuel and emit up to 40% less CO2 than regional jets.

Work on the 1000th fuselage for ATR on the production line at Pomigliano d'Arco (NA), 27 January 2012
AW_family

2013

AgustaWestland launches the world first 'family' of helicopters

AgustaWestland introduced the Family Concept, the world’s first and only family of helicopters (AW139, AW169 and AW189) that shares a common design philosophy, certification and safety standards, components and instruments, plus maintenance and training systems.

The AW139, AW169 and AW189 family of helicopters in flight, part of the ‘AW Product Family and Modularity’ programme launched by Agusta Westland in 2013
Leonardo_SOC_9

2014

Cyber Security Centre of Excellence is inaugurated in Chieti, Italy

The Cyber Security Centre of Excellence at Chieti comprises the Security Operation Centre (SOC) and the Open Source Intelligence Centre (OSIC) where the Supercalculator (high performance computer) is housed. Through these infrastructure, Finmeccanica - Selex ES provides security and cyber intelligence services for protection against cyber attacks. In action 24/7, the centre it protects critical infrastructures globally. Secure-by-design architectures and systems, Artificial Intelligence and Big Data analysis, virtualisation and supercomputing techniques play a central role in detection, cyber threat analysis, attack management and resolution.

Global Cyber Security Centre Leonardo, Chieti
Rosetta_s_journey_and_timeline_2004_2016

2014

For the first time on a comet

The Rosetta space probe - the first to visit a comet (67P/Churyumov-Gerasimenko) - carried several Finmeccanica instruments with hyperspectral and electro-optical technology. These included A-STR (Autonomous Star Tracker), a star attitude sensor for orienting the antenna that sends signals back to Earth; NAV CAM (Navigational Camera), the probe’s space navigation camera; and VIRTIS (Visible and Infrared Thermal Imaging Spectrometer) to survey the comet’s thermal characteristics. It featured photovoltaic panels, the robotic Sample Drill & Distribution system, and the ‘drill’ installed on the lander, the latter designed to drill into the comet’s surface to acquire core samples.

The main stages of the Rosetta probe’s journey, 2006-2014, credits ESA
IMG_8397

2015

Finmeccanica supports security at Expo 2015 in Milan

Finmeccanica developed the Safe City & Main Operation Centre platform to ensure safety and security at the Milan Expo, an event of global importance. In order to monitor the event, the centre collected, integrated and represented information flows from heterogeneous systems to make them usable and interoperable.

The Expo 2015 control room in Milan, an example of the system capabilities achieved by Selex ES in security and in the dual applications of its technologies
IMG_1254

2015

Maiden journey of the Frecciarossa 1000 from Rome to Milan

Produced by AnsaldoBreda in partnership with Bombardier, this is the first ever mass-produced European high-speed train, with a top speed of 400 km/h. It is fully interoperable and adapts to Europe’s various types of electrical grids, power supplies and signalling systems. On board it is equipped with the ERTMS/ETCS (European Rail Traffic Management System/European Train Control System), the most advanced train control system that monitors journeys moment by moment, automatically intervening if necessary.

The maiden journey of the Frecciarossa 1000 arriving at Milano Centrale, 25 April 2015, credits FS Italiane Archives
tgo_exomars[1]

2016

The first mission of a robotic probe to explore Mars

The ExoMars robotic probe to Mars was launched from the Baikonur space base in Kazakhstan. The aim of this programme is to search for traces of life on Mars, past and present, to build a geochemical picture of the planet, and to acquire knowledge on the environment and its geophysical aspects. For this mission Finmeccanica supplied photovoltaic generators, units for transforming and distributing electrical power to the satellite, attitude sensors for orientation in space, and an optronic observation system.

One of the key objectives of the mission is to continue the detection of methane made by ESA's probe Mars Express in 2004 to understand the processes involved in its generation and destruction, with an accuracy improved by three orders of magnitude compared to previous measurements.
500_EFA_GRUPPO DIPENDENTI VELIVOLI

2017

Delivery of Eurofighter number 500

On 11 April, the Italian Air Force took delivery of the 500th Eurofighter Typhoon, an advanced multi-role fighter also used for NATO Air Policing missions, at the Turin Caselle plant. Leonardo realizes approximately 36% of the value of the entire program with a key role in the aeronautical and electronic component. In service since 2003, the Eurofighter is the backbone of the national air defense system and is undergoing constant improvement to acquire new capabilities. In particular, the advanced “beyond visual range” air-to-air missile Meteor, the high-precision Storm Shadow cruise missile and the high-precision Brimstone air-to-surface missile will be integrated. Eurofighter is the largest industrial collaboration program in Europe which generates thousands of highly specialized jobs.

Ceremony for the delivery of the 500th Eurofighter to the Italian Air Force: Leonardo employees involved in the EFA programme. Caselle Torinese (TO), 11 April 2017

Video banner : Compagnia Generale di Elettricità factories, Milan, 1955 - 1956,
Courtesy Fondazione Ansaldo

Search overlay background

Mobile navigation menu