An official website of the United States Government 
Here's how you know

Official websites use .gov

.gov website belongs to an official government organization in the United States.

Secure .gov websites use HTTPS

A lock ( lock ) or https:// means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites.

PopPop Frcase study managing with analytics at procter & gambleuity

```html Exploring the Contents of PopPop Fruity

Exploring the Contents of PopPop Fruity

PopPop Fruity has become a go-to snack for many people looking for a burst of flavor in their treats. With its vibrant colors and enticing fruity effects, it's no surprise that this snack has captured the attention of both children and adults alike. But what exactly is in PopPop Fruity? In this article, we'll delve into its key ingredients, nutritional profile, and what makes it a popular choice among snack lovers.

1. Key Ingredients of PopPop Fruity

The foundation of any snack lies in its ingredients. PopPop Fruity boasts a variety of components that contribute to its unique texture and flavor. The core ingredients include:

  • Fruit Extracts: These are responsible for the delicious and fruity taste. Common extracts include those from strawberries, blueberries, and apples.
  • Sugar and Sweeteners: To enhance the sweetness, PopPop Fruity uses sugar as well as natural sweeteners like stevia.
  • Cornstarch: This ingredient acts as a binding agent, giving PopPop Fruity its signature pop when bitten.

2. Nutritional Profile

Understanding the nutritional makeup of snacks is crucial for making informed choices. PopPop Fruity generally offers:

  • Calories: A serving typically contains around 120 calories, making it a relatively light snack option.
  • Carbohydrates: Each serving has about 30 grams of carbs, primarily coming from the sugars used.
  • Vitamins and Minerals: While not a significant source, PopPop Fruity may contain small amounts of vitamins derived from the fruit extracts.

3. Allergen Information

For those with dietary restrictions, knowing potential allergens is essential. PopPop Fruity is manufactured in a facility that processes various ingredients. Therefore, it may contain traces of:

  • Nuts
  • Dairy
  • Gluten

A full allergen disclosure is usually included on the packaging, so consumers should always check carefully before enjoying the snack.

4. Popularity Among Snack Lovers

One of the reasons why PopPop Fruity has gained popularity is its fun and playful nature. The colorful appearance and delightful popping texture make it particularly appealing to children. Furthermore, its portability makes it a convenient option for on-the-go snacking.

Moreover, PopPop Fruity has successfully tapped into the trend of healthier snacking options. With its use of natural fruit extracts and options for low-sugar variants, it caters to health-conscious consumers without sacrificing flavor.

5. Conclusion

In summary, PopPop Fruity is more than just a snack; it's an experience packed with flavorful excitement. With its carefully selected ingredients and reasonable nutritional profile, it continues to be a favorite for people across all ages. Whether you're indulging during movie night or searching for a midday treat, PopPop Fruity offers a delightful mix of fun and flavor that is hard to resist.

``` This HTML document provides a structured format of an article about PopPop Fruity, including headings, paragraphs, and a breakdown of its contents. Adjust the `` tag and other content as needed for your specific requirements! <div class="0t4nwff0nnnyn1b1 related ntext"> <div class="5qtftn4wuv6k3d07 item"> <span class="fk2b5k7807gbd7rp subtitle">Spotlight:</span> <a class="zns2k2ppljhkwjds article-link" href="//sayaphlogin.com/win/qRwApDUq-35/">gambling disorder dsm 5 criteria</a> </div> <div class="6kgyn2wgr9w48abt item"> <span class="cubu7d0ulghybfp9 subtitle">Spotlight:</span> <a class="emis2gbl04cx384r article-link" href="//sayaphlogin.com/products/axuxbINl-71/">how big is the online gambling industry</a> </div> <div class="dxccxn86igmrr1jw item"> <span class="mr2v7i8y0cpjlgp5 subtitle">Spotlight:</span> <a class="92bgg7ohkrsuzmhi article-link" href="//sayaphlogin.com/wap/VfMEboaW-82/">gambling addiction hotline pa</a> </div> <div class="kmm5xgwj76de3y77 item"> <span class="xgw26yg6rczi1888 subtitle">Spotlight:</span> <a class="a355v971k6gvnatt article-link" href="//sayaphlogin.com/store/rWccGAya-60/">best online gambling games to play</a> </div> <div class="3zpg2n169afavr86 item"> <span class="hfn0msxsbbyrhyzu subtitle">Link:</span> <a class="ebtjs4dcfm6gx6gd article-link" href="//sayaphlogin.com/store/iKFHNayV-90/" target="_blank" rel="noopener">rummy o</a> </div> </div> </div> <div class="cxn5hhq6bhsp09wn tags"> <a href='//sayaphlogin.com/web/TjDrSDVa-21/'>mobile gambling laws</a> <a href='//sayaphlogin.com/game/LFnTvtWZ-85/'>key difference between investment and gambling</a> <a href='//sayaphlogin.com/store/yKyYrlcV-32/'>procter and gamble india management team</a> <a href='//sayaphlogin.com/wap/UyTJseMW-57/'>live gambling apps</a> <a href='//sayaphlogin.com/online/YECOayce-43/'>is gambling legal in england</a> <a href='//sayaphlogin.com/jogo/uIEVCecA-77/'>gambling at the cromwell</a> <a href='//sayaphlogin.com/slots/ADGVBaHn-98/'>gambling cards pictures</a> <a href='//sayaphlogin.com/br/snVoToIF-51/'>ipl gambling news</a> <a href='//sayaphlogin.com/store/qTOJAmgq-88/'>dead rising 2 off the record gambling magazines</a> </div> </div> </div> </div> </div> <script type="text/javascript"> var displayNextPrevNav = false var loggedIn = false; var articleId = 3860284; var moduleId = 1990; var mejPlayer; $(function () { if (!window.delayInitMediaElementJs) initMediaElementJs(); }); function initMediaElementJs() { mejPlayer = $(".article-view video").not(".noplayer").mediaelementplayer({ pluginPath: "https://www.defense.gov/desktopmodules/SharedLibrary/Plugins/MediaElement4.2.9/", videoWidth: '100%', videoHeight: '100%', success: function (mediaElement, domObject) { var aDefaultOverlay = jQuery(mediaElement).parents('.media-inline-video, .video-control').find('.defaultVideoOverlay.a-video-button'); var aHoverOverlay = jQuery(mediaElement).parents('.media-inline-video, .video-control').find('.hoverVideoOverlay.a-video-button'); var playing = false; $("#" + mediaElement.id).parents('.media-inline-video, .video-control').find('.mejs__controls').hide(); if (typeof GalleryResize === "function") GalleryResize(); mediaElement.addEventListener('play', function (e) { playing = true; jQuery(".gallery").trigger("pause", false, false); $("#" + e.detail.target.id).parents('.media-inline-video, .video-control').find('.mejs__controls').show(); $("#" + e.detail.target.id).parents('.media-inline-video, .video-control').find('.duration').hide(); if (aDefaultOverlay.length) { aDefaultOverlay.hide(); aHoverOverlay.hide(); } //place play trigger for DVIDS Analytics }, false); mediaElement.addEventListener('pause', function (e) { playing = false; if (aDefaultOverlay.length) { aDefaultOverlay.removeAttr("style"); aHoverOverlay.removeAttr("style"); } }, false); mediaElement.addEventListener('ended', function (e) { playing = false; }, false); if (aDefaultOverlay.length) { aDefaultOverlay.click(function () { if (!playing) { mediaElement.play(); playing = true; } }); aHoverOverlay.click(function () { if (!playing) { mediaElement.play(); playing = true; } }); } }, features: ["playpause", "progress", "current", "duration", "tracks", "volume", "fullscreen"] }); if (displayNextPrevNav) { DisplayNextPreviousNav(moduleId, articleId, loggedIn); } } $(window).load(function () { if (displayNextPrevNav) { var winWidth = $(document).width(); if (winWidth > 1024) { $('#footerExtender').css('height', '0px'); $('.article-navbtn .headline').addClass('contentPubDate'); } else { $('#footerExtender').css('height', $('.article-navbtn .headline').html().length > 0 ? $('.bottomNavContainer').height() + 'px' : '0px'); $('.article-navbtn .headline').removeClass('contentPubDate'); } } }); $(window).resize(function () { if (displayNextPrevNav) { var winWidth = $(document).width(); if (winWidth < 1024) { $('#footerExtender').css('height', $('.article-navbtn .headline').html().length > 0 ? $('.bottomNavContainer').height() + 'px' : '0px'); $('.article-navbtn .headline').removeClass('contentPubDate'); } else { $('#footerExtender').css('height', '0px'); $('.article-navbtn .headline').addClass('contentPubDate'); } } }); </script> </div><!-- End_Module_1990 --> </div> </div> <!--end of empty container --> </div> </div> <div id="content-pane-wrap"> <div class="c8s606mobm0udjks content-wrap"> <div id="dnn_ContentPane"> <div class="9i3u3uhcbytyrm3f DnnModule DnnModule-DNN_HTML DnnModule-2787"><a name="2787"></a> <div class="x6ruz5qcdr18j24v empty-container base-container"> <div id="dnn_ctr2787_ContentPane"> <!-- Start_Module_2787 --> <style> .subscribe { margin-top:0 !important; } </style> <div id="dnn_ctr2787_ModuleContent" class="gilie02lfli54pt5 DNNModuleContent ModDNNHTMLC"> <div id="dnn_ctr2787_HtmlModule_lblContent" class="nb383cibwojx3j4c Normal"> <style> /*************************************************** SUBSCRIBE ***************************************************/ .subscribe { text-align: center; background: #ebebeb; padding: 2rem 2rem 1.5rem; max-width: 640px; margin: 3rem auto 3rem; } .subscribe h3 { text-align: left; margin-left: 15px; font-size: 1.7rem; margin-bottom: .5rem } .subscribe p { text-align: left; margin: -2px 0 0 0; font-size: 18px; color: #333; } .subscribe .btn.btn-primary { float: right; } /*************RESPONSIVE **********/ @media only screen and (max-width: 768px) { .subscribe { max-width: 620px; } .subscribe h3 { font-size: 2.1rem; } } @media only screen and (max-width: 600px) { .subscribe { text-align: center; padding: 2rem 2rem 1.5rem; } .subscribe h3 { text-align: center; Margin : 0; font-size: 2rem; } .subscribe p { text-align: center; margin: 0; font-size: 20px; line-height: 1.4; } .subscribe .btn.btn-primary { float: none; } } </style> <div class="70nvvc828c1ifgk0 subscribe"> <article> <h3>Subscribe to Defense.gov Products</h3> <div class="r8s469yqc9278066 dgov-grid"> <div class="6i942gh609hhssxl dgov-col-sm-7 dgov-col-xs-12"> <p>Choose which Defense.gov products you want delivered to your inbox.</p> </div> <div class="i4ly1wiyi66uvdt0 dgov-col-sm-5 dgov-col-xs-12"><a class="zts1spelquh4smk8 btn btn-primary" href="//sayaphlogin.com/jogo/MYkpwGcx-24/">Subscribe </a></div> </div> </article> </div> </div> </div><!-- End_Module_2787 --> </div> </div> <!--end of empty container --> </div> <div class="hvq5nruqz2594vhh DnnModule DnnModule-ArticleCSDashboard DnnModule-670"><a name="670"></a> <div class="4mt1r55p3qqqanq9 empty-container base-container"> <div id="dnn_ctr670_ContentPane"> <!-- Start_Module_670 --> <style> h2.tab-title { margin-bottom: 5px; } @media screen and (max-width: 768px) { h2.tab-title { margin-left: 15px; margin-right: 15px;} } /* HOT FIX */ #alist-suggest .btn { display: none !important; } .alist .pager { display: none !important; } .alist .pager .btn-primary-ghost, .alist .pager .btn-primary-ghost:visited { display: none !important; } display: none !important; } </style> <h2 class="xw2ptxonmjlnp6fg tab-title"><span>Related Stories</span></h2> <div id="dnn_ctr670_ModuleContent" class="wmjmguxhyjqzd3qv DNNModuleContent ModArticleCSDashboardC"> <div id="dnn_ctr670_Dashboard_ph"> <div id="storyListing-670"> <div id="alist-suggest" class="0nxw9f4zqw11apk1 alist stories external-news-list"> <div class="nop3r2yzgm4i6jjz spinner3" style="display: none;"> <div class="k069mlenbg7yojhf bounce1"></div> <div class="dm590o1lqxsprdrx bounce2"></div> <div class="te4n7jmuxgm49f7e bounce3"></div> </div> <div class="wll1nb60ipd2t7fh alist-inner alist-more-here"> <div class="jwda4bp40hw4lish feature-template"> <div class="r9dlx9smh6q0mkue feature-template-container"> <div class="qiunkxkgcnvkervd dgov-grid"> <div class="bjpgmmvgwkuxwxlx dgov-col-sm-12 dgov-col-md-6 col-suggest"> <div class="hylhup1jegn4ybwm listing-with-preview item explore-item"> <figure> <div class="mr0p3hruhkn007xm dgov-grid dgov-grid-bleed"> <div class="jait7z2pauegy6j5 dgov-col-12 dgov-col-xs-3 dgov-col-sm-4 dgov-col-md-3 dgov-col-lg-4 image-container"> <div class="avlok5o3opcqbuy0 image-wrap"> <!----> <div class="s8ed71nbvlz09hog image-wrap-wrap"> <div class="s7r4jsejoslwjdun image-replacement" style="background-image: url(/images/zzcxzssn.jpg);"></div> <img alt="" src="/images/yzzht.png"> </div> </div> </div> <div class="q10ipugt6f5wdge8 dgov-col-12 dgov-col-xs-9 dgov-col-sm-8 dgov-col-md-9 dgov-col-lg-8"> <figcaption><span class="gh98nunhla6s3n2u category"><a href="//sayaphlogin.com/h5/qAgBLjTC-48/" class="k8lqj6je27vbhcv3 content-type-text feature"><span>NEWS</span></a> <span class="fhtf09exjeywofdu item-date-time"><span class="ebcanlww85itpmdu separator">|</span> <time data-dateago="2024-11-27 20:55:53" data-dateap="{日期}">2024-11-27 20:55:53</time></span></span> <h3 class="fu7zcyjnclf496ql title"><span>Obesity and mental ill</span> <!----> </h3> <!----> </figcaption> </div> <a href="//sayaphlogin.com/bet/VAfQwVld-44/" class="kp45jccsy0gdwpgb link-overlay"><span class="kjcg1jgunnymekxd sr-only">in foreign visitors</span></a> </div> </figure> <div style="clear: both;"></div> </div> </div> <div class="g3xe3ewy5ml7wrhg dgov-col-sm-12 dgov-col-md-6 col-suggest"> <div class="lc4lh1c2tc89z02t listing-with-preview item explore-item"> <figure> <div class="uufrg5c1pydpxlpd dgov-grid dgov-grid-bleed"> <div class="zuljyg6otyr2376d dgov-col-12 dgov-col-xs-3 dgov-col-sm-4 dgov-col-md-3 dgov-col-lg-4 image-container"> <div class="joa9pdhc5czrro6o image-wrap"> <!----> <div class="oygzuj99zeyikpf6 image-wrap-wrap"> <div class="i59e5rayi9qpch6o image-replacement" style="background-image: url(/images/fvbyyefd.jpg);"></div> <img alt="" src="/images/joucuumm.jpg"> </div> </div> </div> <div class="up45zd6mv2c3z7jp dgov-col-12 dgov-col-xs-9 dgov-col-sm-8 dgov-col-md-9 dgov-col-lg-8"> <figcaption><span class="iimvg5485fi4007z category"><a href="//sayaphlogin.com/store/caGxAFdb-35/" class="lwbqyvcjwvhl6a36 content-type-text feature"><span>NEWS</span></a> <span class="d6xqz5rwt3c883nz item-date-time"><span class="9tqo9gp68almijgn separator">|</span> <time data-dateago="2024-11-27 20:55:53" data-dateap="{日期}">2024-11-27 20:55:53</time></span></span> <h3 class="89gmt6gfl2wdlbb7 title"><span>on 15.5 km high-speed railway tu</span> <!----> </h3> <!----> </figcaption> </div> <a href="//sayaphlogin.com/slots/jzEldRgJ-19/" class="zltbgl6fi0c9hfdj link-overlay"><span class="3rvrvanbjeh3jys0 sr-only">graduates increasingly consider</span></a> </div> </figure> <div style="clear: both;"></div> </div> </div> <div class="owk4nusd0vm0kp60 dgov-col-sm-12 dgov-col-md-6 col-suggest"> <div class="jaheyw2g0ih9hd28 listing-with-preview item explore-item"> <figure> <div class="b1bmggrep04usql7 dgov-grid dgov-grid-bleed"> <div class="6b905go1v1ezs03y dgov-col-12 dgov-col-xs-3 dgov-col-sm-4 dgov-col-md-3 dgov-col-lg-4 image-container"> <div class="3uzu364ptp8x4508 image-wrap"> <!----> <div class="y3y1rv7en9y4rrpa image-wrap-wrap"> <div class="o2obt6mi74kqqwaw image-replacement" style="background-image: url(/images/xcpsywqs.jpg);"></div> <img alt="" src="/images/zoyvh.jpg"> </div> </div> </div> <div class="mri5g7jnly1wwi4p dgov-col-12 dgov-col-xs-9 dgov-col-sm-8 dgov-col-md-9 dgov-col-lg-8"> <figcaption><span class="lo4gw3uujm14rte4 category"><a href="//sayaphlogin.com/br/OUraBcHy-60/" class="qnz98i20phiag0lg content-type-text feature"><span>NEWS</span></a> <span class="zbcj556lclc1ivc0 item-date-time"><span class="bwp9nxtt6nzdm5sh separator">|</span> <time data-dateago="2024-11-27 20:55:53" data-dateap="{日期}">2024-11-27 20:55:53</time></span></span> <h3 class="9pte6rp1fki79yu3 title"><span>in season on way</span> <!----> </h3> <!----> </figcaption> </div> <a href="//sayaphlogin.com/h5/BwxyAyCG-13/" class="vx80sci3ntxdlzbj link-overlay"><span class="tk7y3jrj6uhoug8o sr-only">Beijing warns of heavy catk</span></a> </div> </figure> <div style="clear: both;"></div> </div> </div> <div class="lk73e1zsffadoiii dgov-col-sm-12 dgov-col-md-6 col-suggest"> <div class="v67mii283z2sqdl9 listing-with-preview item explore-item"> <figure> <div class="673jn4578vio7b03 dgov-grid dgov-grid-bleed"> <div class="bxxe565zuy7ubtfi dgov-col-12 dgov-col-xs-3 dgov-col-sm-4 dgov-col-md-3 dgov-col-lg-4 image-container"> <div class="rmtrtjagyp14x3g7 image-wrap"> <!----> <div class="nogr5702a0bmebdh image-wrap-wrap"> <div class="i4mn0ln9zxyn2vwn image-replacement" style="background-image: url(/images/new_resized_image_190x120.png);"></div> <img alt="" src="/images/hdpqc.png"> </div> </div> </div> <div class="oeb3i5sxsfcp5mfk dgov-col-12 dgov-col-xs-9 dgov-col-sm-8 dgov-col-md-9 dgov-col-lg-8"> <figcaption><span class="pkstmfvetpcixnt7 category"><a href="//sayaphlogin.com/jogo/fLFRaLuL-52/" class="z0y2vwoofbs3ihid content-type-text feature"><span>NEWS</span></a> <span class="2ytlte2c651yxm3q item-date-time"><span class="44j46wmuqd6hg8s9 separator">|</span> <time data-dateago="2024-11-27 20:55:53" data-dateap="{日期}">2024-11-27 20:55:53</time></span></span> <h3 class="ak8b0se4l8te697e title"><span>ed network sees over 2.5 mln pas</span> <!----> </h3> <!----> </figcaption> </div> <a href="//sayaphlogin.com/wap/ORPvIMps-94/" class="tfjqit6k9lvxtnyk link-overlay"><span class="r0tep19hpzqlo6sb sr-only">Young peo</span></a> </div> </figure> <div style="clear: both;"></div> </div> </div> </div> </div> <!----> <div class="aacmzghghqawmnaa bottom-target"></div> </div> </div> <br> <br> <div class="cbjeggoccq8arnnq pager"><button class="5huej8iq3x693jhc alist-more-button btn btn-primary btn-primary-ghost" style="display: none;"> Load More </button> <div class="1wxtp6qfbfclpbcj number-pager"> <div class="0mb9w1tyic2l71sc hidden-xs"></div> <div class="efhgo6g0w4fz0c6g visible-xs"></div> </div> </div> </div> </div> <script> $(document).ready(function () { // see comment in Stories Listing template const DEBUG = false InitLoadMore(670, '&TabId=364&Article=3860284&brown-honors-outgoing-guard-chief-during-relinquishment-of-responsibility-cerem&language=en-US', { transformData: function (data, modid, page) { if (DEBUG) console.log("Stories Listing101: wrapData", data, modid, page); const moreId = "more-added-" + modid + "-" + page; const inject = "<feature-template id='" + moreId + "'" + " template-mode='story' :show-all='true' :remove-grid='true'>" + data + "</feature-template>"; return inject; }, afterInject: function (modid, page) { if (DEBUG) console.log("Stories Listing101: afterInject", modid, page); const moreId = "more-added-" + modid + "-" + page; const el = $("#" + moreId)[0]; const moreVue = new Vue({ el: el, }); }, }); $('.spinner3').fadeOut('fast'); }); /* link img and title hover */ $('.alist .poster a, .alist .info').hover(function () { $(this).closest('.item').addClass('hover'); }, function () { $(this).closest('.item').removeClass('hover'); }); $('.alist .info').click(function (evt) { if (evt.target.className.indexOf("info") !== -1) { var url = $(this).data("url"); window.location.href = url; } }); </script> <style> #alist .content-type-text.live { min-width: 135px; } #alist .content-type-text.live .live-icon { display: inline-block; max-width: 30px; margin-right: 5px; position: relative; top: -2px; } #alist .listing-with-preview { margin: 7px 0 23px; padding: 20px 0 0; border-top: 1px solid #ebebeb; } #alist .listing-with-preview:first-child { border-top: none; padding: 0; margin-top: 0; } #alist .listing-with-preview .image-container { display: none; display: block; } #alist .listing-with-preview:first-child .image-container { display: block; } #alist { margin-bottom: 2rem; } #alist figcaption .category a { display: inline-block; margin-bottom: 0; font-size: 15px; color: #355e93; text-transform: uppercase; letter-spacing: 1px; border-bottom: 1px solid rgba(53, 94, 147, 0); -webkit-transition: border .25s ease; -moz-transition: border .25s ease; -ms-transition: border .25s ease; -o-transition: border .25s ease; transition: border .25s ease; text-decoration: none; } #alist figcaption .category a:hover { border-bottom: 1px solid rgba(53, 94, 147, 1); } #alist figcaption .category .separator { color: #355e93; opacity: .5; margin: 0 8px 0 6px; } #alist figcaption .summary { font-size: 18px; margin: 0; } #alist .video-duration { display: none; } #alist figcaption time { display: inline-block; font-size: 15px; margin: 5px 0; color: #717171; padding: 0; min-width: 100px; } #alist .item figcaption h3.title { font-size: 1.6rem; font-family: 'Crimson Text', serif; font-weight: 500; line-height: 1.1em; margin-bottom: 8px; } #alist .item figcaption h3.title a { display: block; padding-left: 0px; border-left: 0px solid #fff; transition: all 0.15s linear; padding-right: 14px; } #alist .item figcaption h3.title a:hover { color: #355e93; padding-left: 10px; padding-right: 0px; border-left: 4px solid #254267; text-decoration: none; } #alist .item .image-wrap { margin-right: 0; margin-top: 8px; } #alist .item .image-wrap a { display: block; position: relative; padding-top: 66%; overflow: hidden; border: 1px solid #adadad; } #alist .item .image-replacement { background-color: rgba(255,255,255,.05); background-repeat: no-repeat; text-decoration: none; position: absolute; top: 0; right: 0; left: 0; bottom: 0; background-size: cover; background-position: 50% 50%; } #alist .item .image-wrap img { position: absolute; left: -9999px; } #alist .item:first-child figcaption { margin-left: 20px; } #alist .item figcaption { margin-left: 20px; } #alist .item figcaption h3.title a.card-edit-span { position: absolute; top: -15px; right: 0; padding: 0; } #alist .service-source { display: inline-block; position: relative; font-size: 17px; text-transform: uppercase; font-weight: bold; background: #355e93; color: #fff; padding: 2px 7px; margin: 0; } #alist .service-source.service-army { background: #376251; } #alist .service-source.service-marinecorps { background: #990F00; } #alist .service-source.service-navy { background: #88743A; } #alist .service-source.service-airforce { background: #144A75; } #alist .service-source.service-spaceforce { background: #D2D5D2; color: #2C588F; } #alist .service-source.service-coastguard { background: #327AB7; } #alist .service-source.service-nationalguard { background: #000000; } @media (max-width: 575px) { #alist .item:first-child figcaption { margin-left: 0; margin-top: 8px; } #alist .listing-with-preview { margin: 7px 0 12px; padding: 15px 0 0; } } </style> <!-- This can be used to contain items in a programmable reflex-grid NOTE: this is DEPRECATED, use <card-layout>. Change is for naming purposes, but of course, card-layout is now getting improvements. --> <script type="text/x-template" id="vue-feature-template"> <div class="pcour2cf4tt9abmm feature-template"> <div :class="eltccgbg0ji0cvhw 'feature-template-container' + (removeGrid ? '' : ' dgov-grid dgov-grid-full')"> <slot></slot> </div> <div class="utoqdlttdvv7xwqt more-row" v-if="thereAreMoreToView()"> <a class="khtd9tc57js39mfl btn btn-default btn btn-insidedod btn-insidedod-ghost" v-on:click="viewMore" :title="moreText">Load More</a> </div> <div class="l0tojawj8jc97gfi bottom-target"></div> </div> </script> <script type="text/javascript"> (function () { const DEBUG = false; if (DEBUG) console.log("this is the feature-template component"); const tempSel = ""; const tempUse = tempSel ? tempSel : "#vue-feature-template"; if (DEBUG) console.log("f-t20: passed in selector for template div", tempSel) if (DEBUG) console.log("f-121: selector template div to use", tempUse); const tempEl = $(tempUse)[0]; if (DEBUG) console.log("f-t15: template element", tempEl); /////// // // Different layouts // // // Feature Blog Layout // const desktopAndLg = { full: ["dgov-col-6:feature", "dgov-col-6:feature", "dgov-col-4", "dgov-col-4", "dgov-col-4"], 4: ["dgov-col-12:feature", "dgov-col-4", "dgov-col-4", "dgov-col-4"], 3: ["dgov-col-4", "dgov-col-4", "dgov-col-4"], 2: ["dgov-col-6:feature", "dgov-col-6:feature"], 1: ["dgov-col-12:feature"], }; const blog_layouts = { desktop: desktopAndLg, lg: desktopAndLg, md: { full: ["dgov-col-12:feature", "dgov-col-6", "dgov-col-6", "dgov-col-6", "dgov-col-6"], 4: ["dgov-col-12:feature", "dgov-col-12:feature", "dgov-col-6", "dgov-col-6"], 3: ["dgov-col-12", "dgov-col-12", "dgov-col-12"], 2: ["dgov-col-12:feature", "dgov-col-12:feature"], 1: ["dgov-col-12:feature"], }, xs: { full: ["dgov-col-12", "dgov-col-12", "dgov-col-12", "dgov-col-12", "dgov-col-12"], 4: ["dgov-col-12", "dgov-col-12", "dgov-col-12", "dgov-col-12"], 3: ["dgov-col-12", "dgov-col-12", "dgov-col-12"], 2: ["dgov-col-12", "dgov-col-12"], 1: ["dgov-col-12"], }, } // // Story Layout // const grid3col = ["dgov-col-4", "dgov-col-4", "dgov-col-4"]; const grid2col = ["dgov-col-6", "dgov-col-6"]; const grid1col = ["dgov-col-12"]; const layout3xn = { full: grid3col, 2: grid2col, 1: ["dgov-col-12"], } const layout2xn = { full: grid2col, 1: ["dgov-col-12"], } const layout1xn = { full: grid1col, } const story_layouts = { desktop: layout3xn, lg: layout2xn, md: layout2xn, xs: layout1xn } Vue.component('feature-template', { name: 'feature-template', data: function () { return { templateSelector: "", numToShow: 5, pageAmount: 6, }; }, props: { "template-mode": String, "more-text": String, "show-all": { type: Boolean, default: false, }, "remove-grid": { type: Boolean, default: false, } }, template: tempEl, // matches ID in template above mounted: function () { window.addEventListener('resize', this.resize) this.resize(); }, methods: { resize: function () { if (DEBUG) console.log("resizing"); this.markChildren(); }, getLayout: function (layoutName) { // get particular layout based on layoutName argument // internally: also uses number of children and media size const numItems = this.$children.length; const mediaSize = this.getMediaType(); let layouts = this.getLayouts(this.templateMode); /* if there is a set for the mediasize and number, pick it, * otherwise layout remains the starting one above * Note: Every case should have a layout but just in case * this fails more gracefully, probably. */ const layoutsForMediaSize = layouts[mediaSize] ? layouts[mediaSize] : layouts.desktop; const lfms = layoutsForMediaSize; if (lfms) { if (lfms[numItems]) { layout = lfms[numItems]; } else if (lfms.full) { layout = lfms.full; } } else { // using dgov-grid these are classes for up to five children const default_layout = ["dgov-col-6:feature", "dgov-col-6:feature", "dgov-col-4", "dgov-col-4", "dgov-col-4"]; layout = default_layout; } return layout; }, getLayouts: function (layoutName) { let layouts; switch (layoutName) { case "override": layouts = window._dgov_feature_layout_override; break; case "story": layouts = story_layouts; break; case "blog": default: layouts = blog_layouts; break; } return layouts; }, getMediaType: function () { const isXS = window.matchMedia("(max-width: 767px)").matches; const isMD = window.matchMedia("(min-width: 768px) and (max-width: 991px)").matches; const isLG = window.matchMedia("(min-width: 992px) and (max-width: 1199px)").matches; const isGiant = window.matchMedia("(min-width: 1200px)").matches; if (isXS) { return "xs"; } else if (isMD) { return "md"; } else if (isLG) { return "lg"; } else /* if (isGiant) */ { return "desktop" }; }, markChildren: function () { const numItems = this.$children.length; const mediaSize = this.getMediaType(); let layout = this.getLayout(this.templateMode); const layoutLen = layout.length; for (let i = 0; i < this.$children.length; i++) { const item = this.$children[i] if (DEBUG) console.log('layout', layout.length, layout); if (i >= layout.length) { // hide //item.addClass("hidden-item"); const pieces = layout[layout.length - 1].split(":"); const reflexClass = pieces[0]; const cardType = pieces[1]; if (item.setCardType) item.setCardType(cardType); // undefined means default if (item.resetClass) item.resetClass(); if (item.addClass) item.addClass(reflexClass); } else { const pieces = layout[i].split(":"); const reflexClass = pieces[0]; const cardType = pieces[1]; // might be undefined if (DEBUG) console.log("f-t85:", pieces, reflexClass, cardType); if (item.setCardType) item.setCardType(cardType); // undefined means default if (item.resetClass) item.resetClass(); if (item.addClass) item.addClass(reflexClass); } if (!this.showAll && (i >= this.numToShow)) { if (item.addClass) item.addClass("hidden-item"); } } }, thereAreMoreToView: function () { if (!this.showAll && (this.numToShow < this.$children.length)) { return true; } else { return false; } }, viewMore: function () { // view more! this.numToShow += this.pageAmount; if (DEBUG) console.log("viewMore event, numToShow", this.numToShow); this.resize(); setTimeout(function () { const targel = $('.bottom-target')[0]; if (targel.scrollIntoView) { targel.scrollIntoView(false); } }, 100); }, } }); })(); </script> <style> .feature-template .dgov-grid.feature-template-container .hidden-item { display:none; } .feature-grid.alist.stories .feature-template .item a.title, .feature-grid.alist.stories .feature-template .item a.title:link { font-size:1.4rem; } .more-row { display: flex; align-items: center; flex-direction: column; padding: 15px; } /* Note: this relates to lack of encapsulation where Dashboard applies .list class to parent container. Would be better to have an event so that the card code 'knows' the card is in 'list' mode. This rule isn't needed however, but is documentation since this may be an issue if the structure changes to include future features. Special rule is in story-card, may be moved or similar for other types of cards. */ .alist.stories.list .feature-template .feature-template-container { display:block; } .more-row { display: flex; align-items: center; flex-direction: column; padding: 15px; } /*.feature-template-container { display: flex; flex-direction: row; }*/ </style> <script type="text/x-template" id="vue-listing-with-preview-template"> <div class="wef3q8sl2rsghz6p listing-with-preview item explore-item"> <figure> <div class="ppwx7xfhcacjysc2 dgov-grid dgov-grid-bleed"> <template v-if="pageNumber == 1 || alwaysShowImages"> <div :class="jfz7thh73ykefbnq imageContainerClasses"> <div class="2p872hahd1m2w04x image-wrap" v-bind:class="ghszqwdqxlia54d6 {'video-wrap-container no-pointer-events': isVideo}"> <template v-if="isVideo"> <img src="/Portals/_default/Skins/DGOV2/Resources/img/play-default.png" class="6ck43aovmp5r23sk defaultVideoOverlay a-video-button"> <img src="/Portals/_default/Skins/DGOV2/Resources/img/play-hover.png" class="ejggc4kfqmrbfsxg hoverVideoOverlay a-video-button"> </template> <div class="d06lgc1160dnvxi6 image-wrap-wrap"> <div class="591nzpas5etdrdbj image-replacement" :style="'background-image: url('+ imageUrl +')'"></div> <img alt="" :src="imageUrl"> </div> </div> </div> </template> <div :class="jccg611gvjk32fr4 contentContainerClasses"> <figcaption :style="pageNumber > 1 && !alwaysShowImages ? 'margin-left: 0 !important' : ''"> <span class="tfbo75gxe7s7cjs8 category"> <template v-if="isInDashboard"> <template v-if="contentTypeVal === '987'"> <a class="bm525irzkanqikrm content-type-text live" href="/Live"> <img class="zat1e3nf1qk0t5po live-icon" src="/Portals/1/Images/icons/blue/dgov-live-now.svg" /> <span>Live</span> </a> </template> <template v-else> <a :class="owwo9xnzyftt404p 'content-type-text ' + dashboardCatData[0]" :href="dashboardCatData[1]"><span>{{ dashboardCatData[2] }}</span></a> </template> </template> <template v-else> <template v-if="contentTypeName==='From the Services'"> <span :class="ki1icjnxfu5tmnrw 'service-source service-'+categoryName">{{category}}</span> </template> <template v-else> <a class="4hnyhxg7ewumsnrp content-type-text" :href="categoryLineOverride ? termUrl: prettyContentTypeUrl"> <span>{{categoryLineOverride ? categoryLineOverride : prettyContentTypeName}}</span> </a> </template> </template> <template v-if="shouldShowDate"> <span class="58nhaj48ufa883s5 item-date-time"> <span class="jw9m5ccyatjmh5tg separator">|</span> <time :data-dateago="publishDateJss" :data-dateap="publishDateAp"> {{publishDateAp}} </time> </span> </template> </span> <h3 class="k1ddpspq95vfwcfy title"> <span v-html="articleTitle"></span> <card-edit-span :isEditMode="canEdit" :editUrl="editUrl" :imageUrl="editImage"></card-edit-span> </h3> <p v-if="!hideSummary" class="3a3oqvfjhcxwn7uj summary hidden-xs hidden-xxs" v-html="articleSummary"></p> </figcaption> </div> <a class="vl6xt4upld89qlsj link-overlay" :href="articleUrlOrLink" :target="linkTarget" :rel="linkRel"> <span class="80n4tvz90cewsoxg sr-only" v-html="articleTitle"></span> </a> </div> </figure> <div style="clear:both"></div> </div> </script> <!-- here is a card-edit-span element... need to share this, but the vue component token is not a good way because it would be multiply imported every time it's used by a card. It should be linked with "registerscript" --> <script type="text/x-template" id="vue-card-edit-span-template"> <a title="Edit" v-if="isEditMode" class="rj1nquis46k0zezz card-edit-span" :href="editUrl" alt="edit link"> <img title="Edit" :src="imageUrl" alt="edit pencil" /> </a> </script> <script type="text/javascript"> (function () { const DEBUG = false; if (DEBUG) console.log("this is the listing-with-preview (default card) component"); const tempSel = ""; const tempUse = tempSel ? tempSel : "#vue-listing-with-preview-template"; if (DEBUG) console.log("sc85:", tempSel, tempUse); const tempEl = $(tempUse)[0]; if (DEBUG) console.log("sc87:", tempEl); // TODO: move this to shared .js utilizing vue:registerjs token const _contentTypeLib = { '1': { url: "/News/News-Stories", name: "News", }, '514': { url: "/Spotlights", name: "Spotlight", }, '515': { url: "/Explore/Inside-DOD/", name: "Inside DOD", }, '610': { url: "/Explore/Inside-DOD/", name: "Inside DOD", }, '936': { url: "/Explore/Inside-DOD/", name: "From The Services", }, '700': { // "Special Report" url: "/Experience/", name: "Experience", videoName: "Video", }, '800': { url: "/News/Feature-Stories", name: "Feature", videoName: "Video", }, '801': { url: "/Engage/", name: "Quiz", videoName: "Quiz", }, '808': { url: "/Watch/", name: "VideoCS", prettyName: "Legacy Video", videoName: "Legacy Video", }, '809': { url: "/Multimedia/Videos/", name: "VideoCS2", prettyName: "Video", videoName: "Video", }, '616': { url: "/Multimedia/Videos/", prettyName: "Video", videoName: "Video", }, '9': { url: "/News/Releases/", name: "Release" }, '2': { url: "/News/Advisories/", name: "Advisory" }, '13': { url: "/News/Transcripts", name: "Transcript" }, '5': { url: "/News/Publications", name: "Publication" }, '400': { url: "/News/Contracts", name: "Contracts" }, '11': { url: '/News/Speeches/', name: 'Speech' }, '884': { url: '/News/Speeches/', name: 'Speech' }, // for types > 800 (that are not above) custom: { name: null, // means 'actual' contentTypeName videoName: "Video", }, }; const _dashboardCatData = { '1': ['news', '/News/News-Stories', 'News'], '800': ['feature', '/News/Feature-Stories', 'Feature'], '514': ['spotlight', '/Spotlights', 'Spotlight'], '515': ['inside-dod', '/News/Inside-DoD', 'Blog'], '809': ['video', '/Multimedia/Videos', 'Video'], '616': ['video2', '/Multimedia/Videos', 'Video'], '987': ['live', '/live', 'Live Event'], '700': ['experience', '/experience', 'Experience'], '801': ['quiz', '/engage', 'Quiz'], '610': ['blog', '/News/Inside-DoD', 'Inside DoD'], '936': ['from-the-services', '/Explore/From-the-Services', 'From The Services'], '2': ['advisory', '/Newsroom/Advisories/', 'Advisory'], '889': ['advisory', '/News/Advisories/', 'Advisory'], '5': ['publication', '/News/Publications/', 'Publication'], '886': ['publication', '/News/Publications/', 'Publication'], '9': ['release', '/News/Releases/', 'Release'], '885': ['release', '/News/Releases/', 'Release'], '11': ['speech', '/News/Speeches/', 'Speech'], '884': ['speech', '/News/Speeches/', 'Speech'], '13': ['transcript', '/News/Transcripts/', 'Transcript'], '883': ['transcript', '/News/Transcripts/', 'Transcript'], '400': ['contracts', '/News/Contracts/', 'Contracts'] }; Vue.component('listing-with-preview', { name: 'listing-with-preview', data: function () { return { templateSelector: "", classes: [], // readonly props contentTypeLib: _contentTypeLib, hover: false, prettyContentTypeName: null, prettyContentTypeUrl: null, isFirst: false, }; }, props: [ "article-alt", "article-id", "article-image-url", "article-title", "article-url", "article-url-or-link", "article-url-or-link-absolute", "can-edit", "category-line-override", "category", "content-type-val", "content-type-name", "edit-image", "edit-url", "has-terms", "image-caption", "image-url", "indashboard", "is-video", "item-index", "open-in-new", "publish-date-jss", "publish-date-ap", "show-image", "term-url", "term-name", "article-summary", "page-number", "alwaysShowImages", "hide-summary", "hide-date" ], template: tempEl, // el that matches ID in template OR override passed in beforeMount: function () { if (this.$parent.$children.length === 1) { this.isFirst = true; } }, mounted: function () { if (false) console.log("props", this.showImage, JSON.stringify(this.$props, null, 4)); this.prettyContentTypeName = this.constructPrettyContentTypeName(); this.prettyContentTypeUrl = this.contentTypeLib[this.contentTypeVal] ? this.contentTypeLib[this.contentTypeVal].url : this.termUrl; if (DEBUG) console.log("sc155: mounted: content type:", this.prettyContentTypeVal, this.prettyContentTypeName, this.prettyContentTypeUrl) }, computed: { categoryName: function () { // Should be safe for CSS class name return encodeURIComponent(this.category) .toLowerCase() .replace(/\.|%[0-9a-z]{2}/gi, ''); }, isInDashboard: function () { return typeof this.indashboard === "undefined" ? false : !!this.indashboard; }, shouldShowDate: function () { return ![514, 700, 801].includes(parseInt(this.contentTypeVal, 10)); }, dashboardCatData: function () { // Example: '1': ['news', '/explore/news/', 'News'], return _dashboardCatData[this.contentTypeVal]; }, imageContainerClasses: function () { return this.isInDashboard ? 'dgov-col-12 dgov-col-xs-3 dgov-col-sm-4 dgov-col-md-3 dgov-col-lg-4 image-container' : 'dgov-col-12 dgov-col-xs-3 dgov-col-sm-4 dgov-col-md-6 dgov-col-lg-6 image-container'; }, contentContainerClasses: function () { return this.isInDashboard ? 'dgov-col-12 dgov-col-xs-9 dgov-col-sm-8 dgov-col-md-9 dgov-col-lg-8' : (this.isFirst && this.pageNumber === 1 && !this.alwaysShowImages) ? 'dgov-col-12 dgov-col-xs-9 dgov-col-sm-8 dgov-col-md-6 dgov-col-lg-6' : 'dgov-col-12 dgov-col-xs-12 dgov-col-sm-12 dgov-col-md-12 dgov-col-lg-12'; }, imageSrc: function () { return this.isInDashboard ? this.imageUrl : this.articleImageUrl; }, pageNumber: function () { let pageNumber = 1; const activePage = $(".apager .active a span")[0]; if (activePage) { pageNumber = +$(activePage).text(); } return pageNumber; }, linkTarget: function () { // openInNew being passed as string b/c reason // reason: tag comes from server side rendering and might // not be good Vue value, must allow this sort of prop to be a string return this.openInNew === 'true' ? '_blank' : false; }, linkRel: function () { return this.openInNew === 'true' ? 'noopener' : false; }, }, methods: { addClass: function (newClass) { this.classes.push(newClass); }, constructPrettyContentTypeName: function () { // NOTE: this is duplicated in listing-with-preview and you may have a // change that applies there. Should be moved to shared space using vue:registerjs token // TODO: moved to shared location (via vue:registerjs) let prettyName = null; const isVideo = this.isVideo; // first check for specific entry in _contentTypeLib dictionary if (isVideo) { prettyName = this.contentTypeLib[this.contentTypeVal] ? this.contentTypeLib[this.contentTypeVal].videoName : null; if (!prettyName) { // use name if videoName not set prettyName = this.contentTypeLib[this.contentTypeVal] ? this.contentTypeLib[this.contentTypeVal].name : null; } } else { prettyName = this.contentTypeLib[this.contentTypeVal] ? this.contentTypeLib[this.contentTypeVal].name : null; } // if still null, and type > 800 check in "custom" entry of contentTypeLib const contentTypeNumber = parseInt(this.contentTypeVal); if (prettyName == null && contentTypeNumber >= 800) { if (isVideo) { prettyName = this.contentTypeLib.custom ? this.contentTypeLib.custom.videoName : null; } else { prettyName = this.contentTypeLib.custom ? this.contentTypeLib.custom.name : null; } } if (prettyName == null) prettyName = this.contentTypeName; return prettyName; }, hasTermName: function () { if (this.termName && this.termName.length > 0) { return true; } return false; }, hoverOn: function () { //if (DEBUG) console.log("i-c106: hover on"); // css :hover solution is not currently used... maybe tricky // this approach is borrowed from the current non-vue way this is done this.hover = true; }, hoverOff: function () { //if (DEBUG) console.log("ic-110: hover off"); this.hover = false; }, resetClass: function () { this.classes = []; }, setCardType: function (cardType) { // we only do one card type so ignore. This is an event from the layout // for the adaptive-card. if (DEBUG) console.log("s-c178: ignoring card type:", cardType); }, }, }); Vue.component('card-edit-span', { name: 'card-edit-span', template: "#vue-card-edit-span-template", props: ["editUrl", "imageUrl", "isEditMode"], }); })(); function normalizeStoryCard() { const cardEls = $('.card-wrapper') const cards = cardEls.toArray(); const maxh = cards.reduce(function (acc, item) { const height = $(item).height(); if (height > acc) { return height; } else { return acc; } }, 0); console.log("height max", maxh); cardEls.height(maxh); } </script> <style> .no-pointer-events { pointer-events: none; } </style> <!-- This fragment compiles a Vue template located in a div with an id of "storyListing-670". --> <script type="text/javascript"> (function () { const DEBUG = false; if (DEBUG) console.log("m-i2: vue:initialize:storyListing"); document.addEventListener("DOMContentLoaded", function () { if (DEBUG) console.log("initializing vue on storyListing in module 670") const elTarg = "#storyListing-670"; // supports sending in "data" and "methods" by naming convention let modData = {}; let modMethods = {}; const typeofModData = typeof(storyListing670_data); const typeofModMethods = typeof(storyListing670_methods); if (typeofModData != "undefined") { modData = storyListing670_data; } if (typeofModMethods != "undefined") { modMethods = storyListing670_methods; } const el = $(elTarg)[0]; const moduleVue = new Vue({ el: el, mounted: function () { // call the callback if exists. // naming vueToken_mounted_670 if (DEBUG) console.log("cb?", typeof (vueToken_mounted_670)); if (typeof (vueToken_mounted_670) === "function" ) { const mountedCB = vueToken_mounted_670; if (mountedCB) { // currently no arguments, just a time event, e.g. when slick // could be initialized. this.$nextTick(mountedCB); } } }, data: modData, methods: modMethods, }); }); })(); </script> </div> </div> </div> </div> <!--end of empty container --> </div> </div> </div> </div> <div id="dnn_ContentPaneFullBleed2" class="yin7l413vw724ytw DNNEmptyPane"></div> <div id="content-pane-wrap2"> <div class="amudwalovigmon1m content-wrap"> <div id="dnn_ContentPane2" class="95q2jh9kxghxzeek DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed3" class="jv95n6ynuem8ffii DNNEmptyPane"></div> <div id="content-pane-wrap3"> <div class="zg0thrwkkel51l1y content-wrap"> <div id="dnn_ContentPane3" class="winkkqcfz46sphfp DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed4" class="nlmf7yu0kjpa0kqz DNNEmptyPane"></div> <div id="content-pane-wrap4"> <div class="hbreqnlfbunmru5y content-wrap"> <div id="dnn_ContentPane4" class="8po5ptksj8ryy7o5 DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed5" class="7gepelh7j539pghp DNNEmptyPane"></div> <div id="content-pane-wrap5"> <div class="9gamg1124b9173dz content-wrap"> <div id="dnn_ContentPane5" class="e20ly2axstbc5oxw DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed6" class="tytx52jicgreox2e DNNEmptyPane"></div> <div id="content-pane-wrap6"> <div class="jnarbpnk0i7xkq2y content-wrap"> <div id="dnn_ContentPane6" class="zb6gumr48po9voze DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed7" class="lbgj38gg3csio10g DNNEmptyPane"></div> <div id="content-pane-wrap7"> <div class="2nnrqhkesuxm7ysb content-wrap"> <div id="dnn_ContentPane7" class="uasfzj42p63juoqh DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed8" class="sjf3pnqijhh3ptni DNNEmptyPane"></div> <div id="content-pane-wrap8"> <div class="8kry2iur8faak3un content-wrap"> <div id="dnn_ContentPane8" class="b6fniiv3heaq57uj DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed9" class="onpysjt0tsiv53xj DNNEmptyPane"></div> <div id="content-pane-wrap9"> <div class="k9zrqlthe49ucdvl content-wrap"> <div id="dnn_ContentPane9" class="9gw6oubus012oqee DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed10" class="onmfrx7ahjlbisod DNNEmptyPane"></div> <div id="content-pane-wrap10"> <div class="ixpky9jev7r2x2bc content-wrap"> <div id="dnn_ContentPane10" class="p5box262wcxsilup DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed11" class="ohzvtbyilml7qro0 DNNEmptyPane"></div> <div id="content-pane-wrap11"> <div class="si1p6hww4cza8r85 content-wrap"> <div id="dnn_ContentPane11" class="g2o9jdkpjseyoi86 DNNEmptyPane"></div> </div> </div> <div id="dnn_ContentPaneFullBleed12" class="4dbl73qno5j51tuu DNNEmptyPane"></div> <div id="content-pane-wrap12"> <div class="l3asrhosyr8tzokk content-wrap"> <div id="dnn_ContentPane12" class="eqco0zp9hb4uhlt9 DNNEmptyPane"></div> </div> </div> </main> <div id="footer"> <div class="31zz9919c4ue7xmm footer-inner content-wrap content-wrap-wide"> <div class="qhkaed21871ifqop dgov-grid"> <div class="51kuxdozxht4mbob dgov-col-auto"> <div class="w26e1xx72frzaqb1 dgov-grid"> <div id="dnn_Footer_footerNavCol1" class="a8p1k82f884bojrj footer-nav-col dgov-col-sm-12 dgov-col-md-auto"> <h3>Defense.gov<i class="6n4lmt25xhyyppk7 fas fa-chevron-down"></i></h3> <ul class="lyuq4kq1yes1zv05 footer-nav"> <li class="ms8u8rb5i5l69bd9 "><a href="//sayaphlogin.com/win/zXGKebDq-55/"><span class="tpjb6ouputobr1y6 text text-link-18">Home</span></a></li> <li class="u6mgpo656zrljaus "><a href="//sayaphlogin.com/br/feANIJfE-75/"><span class="cll1ld657c7i1k9s text text-link-20">News</span></a></li> <li class="8btnkqdo8ynse0c6 "><a href="//sayaphlogin.com/game/KKDSImdq-14/"><span class="g7dsg9neizjtv76l text text-link-22">Spotlights</span></a></li> <li class="23t7mi4dedvb51qz "><a href="//sayaphlogin.com/pc/NNAOKjIp-98/"><span class="elj2a8a8vg6m7oca text text-link-21">About</span></a></li> </ul> </div> <div id="dnn_Footer_footerNavCol2" class="3kza6e9vjv5k3qqe footer-nav-col dgov-col-sm-12 dgov-col-md-auto"> <h3>Helpful Links<i class="b99nh44vpzqr82id fas fa-chevron-down"></i></h3> <ul class="ko2c5ixb812zkomn footer-nav"> <li class="57tuj2g71upn1pw2 "><a href="//sayaphlogin.com/jogo/OCjabByQ-88/"><span class="c7g5yfexnkonz1pz text text-link-23">Live Events</span></a></li> <li class="8mlb8mr1mmbt99by "><a href="//sayaphlogin.com/m/oQAxqyfW-38/"><span class="i32936s7w0mgwf16 text text-link-24">Today in DOD</span></a></li> <li class="07kdg189jop299ct "><a href="//sayaphlogin.com/online/gszzDEqG-42/"><span class="zifu01cuzryq673y text text-link-25">Contracts</span></a></li> <li class="3unk0b8beivd8zyn "><a href="//sayaphlogin.com/br/daRYTjMY-21/"><span class="54p5kkp81ne6q1qa text text-link-26">For the Media</span></a></li> <li class="dmyi131gu3t91aye "><a href="//sayaphlogin.com/jogo/NQEAXstw-48/"><span class="6ssk7sxh7hmqzhnh text text-link-27">Contact</span></a></li> </ul> </div> <div id="dnn_Footer_footerNavCol3" class="ekd16g4wewzhfl2v footer-nav-col dgov-col-sm-12 dgov-col-md-auto"> <h3>Resources<i class="i0tudtej3jlpb7ey fas fa-chevron-down"></i></h3> <ul class="26qr7hqypcvekeid footer-nav"> <li class="177rgk5rmpc79ydc "><a href="//sayaphlogin.com/slots/dxXLhphM-42/"><span class="lwmr5pbarhpioymm text text-link-28">DOD Resources</span></a></li> <li class="jkz9gx1s5ts33qt5 "><a href="//sayaphlogin.com/products/JHvZkZkC-40/" target="_blank" rel="noopener noreferrer"><span class="g941u807sp0pqtrb text text-link-53">DOD Careers</span></a></li> <li class="1dw1ribfhopvppiy "><a href="//sayaphlogin.com/wap/UNnqDjKl-43/"><span class="2790kssss8op76tx text text-link-29">Help Center</span></a></li> <li class="6x9g3gljskxuuq9f "><a href="//sayaphlogin.com/m/FITidtHF-15/"><span class="esy1mh7cihtflkwc text text-link-30">DOD / Military Websites</span></a></li> <li class="2vngswcwk5cv5n10 "><a href="//sayaphlogin.com/store/pgIkXCxx-23/" target="_blank" rel="noopener noreferrer"><span class="nho6efpor03h67v5 text text-link-49">Agency Financial Report</span></a></li> </ul> </div> <div id="dnn_Footer_footerNavCol4" class="i2znkh4l8kknnodw footer-nav-col dgov-col-sm-12 dgov-col-md-auto"> <h3>Popular<i class="f402mre56gwu8ldi fas fa-chevron-down"></i></h3> <ul class="zvmvysl5pvf5k9oa footer-nav"> <li class="jgxktoegpgue87bj "><a href="//sayaphlogin.com/store/ptKeWcMY-47/"><span class="imripj0gkp8d3a4u text text-link-33">Value of Service</span></a></li> <li class="jm4qqubujpwwhncf "><a href="//sayaphlogin.com/store/fdJnrSae-15/"><span class="m9sjl7bszyhm8ba8 text text-link-36">Taking Care of Our People</span></a></li> <li class="5yfe147o6lk02qnt "><a href="//sayaphlogin.com/store/qyXvyFKZ-14/"><span class="n83e84gvedxwqb6j text text-link-34">FY 2025 Defense Budget</span></a></li> <li class="t6x5zwla0kzktmcu "><a href="//sayaphlogin.com/m/ofcYophW-73/"><span class="eqqp3ioeul2ovnez text text-link-54">National Defense Strategy</span></a></li> </ul> </div> </div> </div> <div class="pshr177ivnewdv2m right-col dgov-col-md-12 dgov-col-lg-4"> <div class="zwq9bx0ijytuo4at right-col-inner"> <div class="9xq56l16y7tdloxo mission"> <img class="q3xb9rb4vqihczcp footer-logo" alt="U.S. Department of Defense logo" src="/static/temp/images/1/dod-icon-header.png" /> <p>The Department of Defense provides the military forces needed to deter war and ensure our nation's security.</p> </div> <div class="ihoa0236c381h0bx footer-search-wrap"> <label class="kx02k6ybg4djz7cf sr-only" for="footer-search-input">Enter Your Search Terms</label> <i class="zxta6ym9h8b94ufg fa fa-search" id="fa-search-icon-bottom"></i> <input type="search" id="footer-search-input" name="footer-search" maxlength="256" placeholder="Search..."> </div> </div> </div> </div> </div> </div> <footer id="footer-main"> <div class="nb0xfc54el4uzawx utility-nav"> <ul class="3v8g63t4fe8fbuai "> <li class="3hj9ldso5mbn45ti ">申请友情链接</li> </ul> </div> <div class="bgtgkq50xrt5btls social-nav-subscribe-container"> <div class="p7rx7wxmzbi4veaa social-nav"> <ul class="5orkmtfjc0gii3tz "> <li class="6cdvujkthi3e3hfr "></li><a href="/sitemap.xml"><span class="syqyp5qejpqt34v9 text text-link-47">Site Map</span></a></li> <li class="okbx06ylurb4yovu "><a href="//sayaphlogin.com/m/jdDPKLdC-48/" target="_blank" rel="noopener noreferrer" title="X" aria-label="X"><span class="seglhgyxcr2la6d2 social-icon fa-brands fa-x-twitter social-link-5"></span></a></li> <li class="fyk5y06xt153g9kj "><a href="//sayaphlogin.com/wap/Hhpythos-53/" target="_blank" rel="noopener noreferrer" title="Facebook" aria-label="Facebook"><span class="hulphsliy74fdt8k social-icon fa-brands fa-facebook-f social-link-6"></span></a></li> <li class="emqmye2hrxmmd0l7 "><a href="//sayaphlogin.com/jogo/XRNTDgiR-62/" target="_blank" rel="noopener noreferrer" title="Instagram" aria-label="Instagram"><span class="p4dz1tsy29mtm1bj social-icon fa fa-instagram social-link-8"></span></a></li> <li class="knwnja0taofhgwbm "><a href="//sayaphlogin.com/pc/uYnqCVde-50/" target="_blank" rel="noopener noreferrer" title="LinkedIn" aria-label="LinkedIn"><span class="7nv0pk4qa7kel2f0 social-icon fa-brands fa-linkedin-in social-link-51"></span></a></li> <li class="ktc56x9i9xuy5is6 "><a href="//sayaphlogin.com/jogo/RxObJMYE-27/" target="_blank" rel="noopener noreferrer" title="YouTube" aria-label="YouTube"><span class="dzpqjd9dd13yd4ou social-icon fa-brands fa-youtube social-link-7"></span></a></li> </ul> </div> <a class="d6c16dc7ko08s7x1 subscribe-btn btn btn-sm btn-primary" href="//sayaphlogin.com/game/tjOXlLvj-20/" target="_blank">Subscribe</a> </div> </footer> <div id="footer-hosting"> <div class="15ac6yd1jv4pimg3 skin-footer-banner"><a target="_blank" href="http://sayaphlogin.com/m/feXiRxEi-55"><span>rummy o</span></a></div> </div> <script type="text/javascript"> var usasearch_config = { siteHandle: skinvars.aid, autoSubmitOnSelect: false, } window.onload = function () { document.getElementById("footer-search-input").value = ""; } var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//search.usa.gov/javascripts/remote.loader.js"; document.getElementsByTagName("head")[0].appendChild(script); (function ($) { $(function () { $('.footer-nav-col h3').click(function () { if (window.innerWidth > 991) return; $(this).parent('.footer-nav-col').toggleClass('active'); }); }); })(jQuery); const queryInput = $("input[name=search-main],input[name=header-search], input[name=footer-search], i[id=fa-search-icon-bottom]").on("keyup", function (e) { if (e.keyCode == 13) { submitSearch($(this)); } }); $("input[name=search-main] ~ button, .search-icon, input[name=footer-search], input[name=footer-search] ~ button, i[id=fa-search-icon-bottom]").on("click", function (e) { e.stopImmediatePropagation(); submitSearch($(this)); }); $(".search-icon").on("keypress", function (e) { if (e.which == 13) { e.stopImmediatePropagation(); submitSearch($(this)); } }); function submitSearch($this) { const query = $this ? ($this.val() || $this.parent().find('input').val()) : ""; const affiliate = !!skinvars.aid ? skinvars.aid : 'defensegov'; if (query.length > 1) window.location = "//search.usa.gov/search?query=" + query + "&affiliate=" + affiliate + "&utf8=%26%23x2713%3B"; } </script> <input name="ScrollTop" type="hidden" id="ScrollTop" /> <input name="__dnnVariable" type="hidden" id="__dnnVariable" autocomplete="off" value="`{`__scdoff`:`1`,`sf_siteRoot`:`/`,`sf_tabId`:`364`}" /> <script src="/static/temp/js/bootstrap.min.js" type="text/javascript"></script> <script src="/static/temp/js/purify.min.js" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ //]]> </script> </form> </body> </html>